Da ich zusätzliche Details zur Verfügung stelle, schreibe ich meine eigene Antwort basierend auf dem Original (anstatt es zu bearbeiten).
Ja, es gibt eine Möglichkeit, dies zu tun, aber diese Methode funktioniert nur für das webbasierte Facebook und den Messenger. Ähnliches können Sie für die mobilen Apps nicht tun.
Grundsätzlich verwendet Facebook zeitgesteuerte Anfragen auf der Serverseite, um zu überprüfen, ob der Client noch verfügbar ist. Das Front-End (geladene Facebook-Webseite) sendet daher regelmäßig eine HTTP-Anfrage ( XHR ) mit der Leerlaufzeit an ihre Server.
Hier ist ein Beispiel für eine solche Anfrage:
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
Hinweis: Ich habe die Benutzer-ID ersetzt, die normalerweise eine Nummer ist.
Wenn Sie die obige URL lesen, wird der Teil idle = 117 angezeigt . Dies gibt die Gesamtanzahl der Sekunden an, für die das Konto inaktiv war. Der Zustand = offline steht dafür, ob der Chat ein- oder ausgeschaltet ist.
Um dies zu deaktivieren, fügen Sie einfach die folgende Regel zur benutzerdefinierten Filterliste Ihres Werbeblockers hinzu:
||*-edge-chat.facebook.com^$xmlhttprequest
Um Facebook und Messenger zu deaktivieren, können Sie die folgenden zwei Zeilen hinzufügen:
||*-edge-chat.facebook.com^$xmlhttprequest
||*-edge-chat.messenger.com^$xmlhttprequest
Oder die einzelne Zeile mit Regex :
/^https?\:\/\/\d+-edge-chat\.(facebook|messenger)\.com\/?/$xmlhttprequest
Einige Nachteile dieser Methode sind, dass Sie keine Nachrichten in Echtzeit empfangen können und auch dann nicht online angezeigt werden, wenn der Chat aktiv ist. Sie müssen die Seite aktualisieren, um neue Nachrichten zu erhalten.
Um diese beiden Nachteile zu vermeiden, gibt es eine Problemumgehung. Sie können stattdessen diese Zeile hinzufügen:
/^https?\:\/\/\d+-edge-chat\.facebook\.com\/pull\?.*state=offline/$xmlhttprequest
Oder fügen Sie dies für Facebook und Messenger hinzu:
/^https?\:\/\/\d+-edge-chat\.(facebook|messenger)\.com\/pull\?.*state=offline/$xmlhttprequest
Das Endergebnis davon wird das folgende sein:
- Wenn Ihr Chat deaktiviert ist, werden Sie nicht online angezeigt, Ihre letzte Aktivität wird nicht gemeldet und Sie können keine Nachrichten in Echtzeit empfangen.
- Wenn Ihr Chat aktiviert ist, werden Sie online angezeigt, Ihre letzte Aktivität wird gemeldet und Sie können Nachrichten in Echtzeit empfangen.
Leider scheint es keine andere Lösung zu geben, da das Front-End von Facebook Nachrichten nur abrufen kann, wenn der Client regelmäßig meldet, dass sie aktiv sind. Daher erfolgt der Abruf, sobald die letzte Aktivität gemeldet wurde. Beide Aktionen werden durch ein einziges Back-End-Skript ( * -edge-chat.facebook.com / pull ) auf dieselbe Anforderung hin ermöglicht. deshalb kann man eins nicht ohne das andere haben.