web-dev-qa-db-fra.com

Désactiver la disponibilité des discussions sur Facebook (Actif maintenant, actif tout à l'heure, actif il y a x minutes)

Comment désactiver la disponibilité des discussions sur Facebook? Mon chat est hors ligne et j'utilise Windows 7 avec Firefox. Lorsque je me connecte avec mon autre compte via mon mobile Facebook et que j'ouvre une conversation en ligne, le compte que j'utilise sur mon ordinateur est actif "tout à l'heure" à chaque fois que je déplace la souris ou actualise la page.

Comment puis-je désactiver cela? Existe-t-il un message de pulsation spécifique pouvant être bloqué via AdBlock Plus ou quelque chose du genre?

15
a man in love

D'accord, j'ai trouvé la solution pour bloquer ce statut.

Fondamentalement, Facebook utilise une minuterie et envoie donc un message de pulsation à leurs serveurs avec le temps d'inactivité toutes les x minutes.

Voici un exemple d'une telle requête Web:

https://1-Edge-chat.facebook.com/pull?channel=userid&seq=0&partition=-2&clientid=18ae8ecc&cb=ie3k&idle=117&qp=y&cap=8&msgs_recv=0&uid=userid&viewer_uid=userid&msgr_region=FRC&state=offline

Si vous lisez ce lien, vous verrez que & idle = 117 est le nombre total de secondes pendant lesquelles le compte a été inactif. Le état = hors connexion indique si le chat est actif ou hors connexion.

Notez que j'ai remplacé mon ID utilisateur qui est un nombre de 15 chiffres.

Donc, pour désactiver ceci, ajoutez simplement la règle suivante dans vos filtres AdBlock:

https://*-Edge-chat.facebook.com

Un inconvénient de cette méthode est que vous ne recevrez pas de messages en temps réel. Vous devez actualiser la page pour obtenir les messages.

11
a man in love

Puisque je fournis des détails supplémentaires, j'écris ma propre réponse sur la base de original (au lieu de la modifier).

Oui, il existe un moyen de le faire, mais cette méthode ne fonctionne que pour Facebook et Messenger sur le Web; vous ne pouvez pas faire quelque chose de similaire pour les applications mobiles.

Fondamentalement, Facebook utilise des requêtes temporisées côté serveur pour vérifier si le client est toujours disponible. Ainsi, le front-end (page Web Facebook chargée) enverra périodiquement une requête HTTP ( XHR ) avec le temps d'inactivité à leurs serveurs.

Voici un exemple d'une telle demande:

https://1-Edge-chat.facebook.com/pull?channel=p_<UserID>&seq=0&partition=-2&clientid=18ae8ecc&cb=ie3k&idle=117&qp=y&cap=8&msgs_recv=0&uid=userid&viewer_uid=userid&msgr_region=FRC&state=offline

Remarque: J'ai remplacé l'ID utilisateur, qui correspond normalement à un nombre.

Si vous lisez l'URL ci-dessus, vous verrez la partie qui dit idle = 117 . Cela indique le nombre total de secondes pendant lesquelles le compte a été inactif. L'état = déconnecté indique si le chat est activé ou non.

Donc, pour désactiver ceci, ajoutez simplement la règle suivante à la liste de filtres personnalisée de votre bloqueur de publicité:

||*-Edge-chat.facebook.com^$xmlhttprequest

Pour désactiver Facebook et Messenger, vous pouvez ajouter les deux lignes suivantes:

||*-Edge-chat.facebook.com^$xmlhttprequest
||*-Edge-chat.messenger.com^$xmlhttprequest

Ou la ligne simple, en utilisant regex :

/^https?\:\/\/\d+-Edge-chat\.(facebook|messenger)\.com\/?/$xmlhttprequest

Cette méthode présente quelques inconvénients: vous ne pourrez pas recevoir de messages en temps réel et vous ne pourrez pas apparaître en ligne, même si la discussion est en cours. Vous devrez actualiser la page pour recevoir de nouveaux messages.

Afin d'éviter ces deux inconvénients, voici une solution de contournement. Vous pouvez ajouter cette ligne à la place:

/^https?\:\/\/\d+-Edge-chat\.facebook\.com\/pull\?.*state=offline/$xmlhttprequest

Ou ajoutez ceci pour Facebook et Messenger:

/^https?\:\/\/\d+-Edge-chat\.(facebook|messenger)\.com\/pull\?.*state=offline/$xmlhttprequest

Le résultat final sera le suivant:

  1. Lorsque votre discussion est désactivée, vous ne paraissez pas en ligne, votre dernière activité ne sera pas signalée et vous ne pourrez pas recevoir de messages en temps réel.
  2. Lorsque votre conversation est activée, vous apparaissez en ligne, votre dernière activité sera rapportée et vous pourrez recevoir des messages en temps réel.

Malheureusement, il semble n'y avoir aucune autre solution puisque le serveur Facebook peut récupérer les messages uniquement lorsque le client signale régulièrement leur activité, de sorte que la récupération est effectuée une fois la dernière activité signalée. Ces deux actions sont rendues possibles par un seul script d’arrière-plan ( * - Edge-chat.facebook.com/pull), via la même demande; par conséquent, vous ne pouvez pas avoir l'un sans l'autre.

0
Giorgi Gzirishvili