Wyłącz dostępność czatu na Facebooku (Aktywne teraz, aktywne teraz, aktywne x minuty temu)

15

Jak wyłączyć dostępność czatu na Facebooku? Mój czat jest offline i używam Windows 7 z Firefoksem. Kiedy loguję się na innym koncie za pomocą mobilnego Facebooka i otwieram rozmowę na czacie, widzę, że konto, którego używam na komputerze, jest aktywne „teraz” za każdym razem, gdy poruszam myszą lub odświeżam stronę.

Jak mogę to wyłączyć? Czy jest jakiś konkretny komunikat bicia serca, który można zablokować za pomocą AdBlock Plus?

zakochany mężczyzna
źródło

Odpowiedzi:

11

Ok, znalazłem rozwiązanie, aby zablokować ten status.

Zasadniczo Facebook używa timera, więc co x minut wyśle ​​wiadomość o pulsie do swoich serwerów z czasem bezczynności.

Oto przykład takiego żądania internetowego:

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

Jeśli przeczytasz ten link, zobaczysz, że & idle = 117 to łączna liczba sekund, przez które konto było bezczynne. State = nieaktywny oznacza czy czat jest aktywny czy nieaktywny

Pamiętaj, że zastąpiłem mój identyfikator użytkownika, który składa się z 15 cyfr.

Aby to wyłączyć, po prostu dodaj następującą regułę do filtrów AdBlock:

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

Wadą tej metody jest to, że nie będziesz otrzymywać wiadomości w czasie rzeczywistym. Musisz odświeżyć stronę, aby otrzymać wiadomości.

zakochany mężczyzna
źródło
1
Czy coś takiego działałoby w Safari z blokerami treści iOS 9?
0

Ponieważ podaję dodatkowe szczegóły, piszę własną odpowiedź na podstawie oryginału (zamiast go edytować).

Tak, jest na to sposób, ale ta metoda działa tylko w przypadku internetowych serwisów Facebook i Messenger; nie możesz zrobić czegoś podobnego dla aplikacji mobilnych.

Zasadniczo Facebook używa żądań czasowych po stronie serwera, aby sprawdzić, czy klient jest nadal dostępny. Zatem interfejs użytkownika (ładowana strona internetowa Facebooka) będzie okresowo wysyłać żądanie HTTP ( XHR ) z czasem bezczynności do swoich serwerów.

Oto przykład takiej prośby:

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

Uwaga: zastąpiłem identyfikator użytkownika, który normalnie byłby liczbą.

Jeśli przeczytasz powyższy adres URL, zobaczysz część idle = 117 . Oznacza to całkowitą liczbę sekund, przez które konto było bezczynne. State = nieaktywny stoi na czat czy jest włączony, czy wyłączony.

Aby to wyłączyć, po prostu dodaj następującą regułę do niestandardowej listy filtrów blokera reklam:

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

Aby wyłączyć zarówno na Facebooku, jak i Messengerze, możesz dodać następujące dwa wiersze:

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

Lub pojedyncza linia, używając wyrażenia regularnego :

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

Kilka wad tej metody polega na tym, że nie będziesz w stanie odbierać wiadomości w czasie rzeczywistym i nie pojawi się online, nawet jeśli czat jest włączony. Musisz odświeżyć stronę, aby otrzymywać nowe wiadomości.

Aby uniknąć obu tych wad, oto jedno obejście. Zamiast tego możesz dodać ten wiersz:

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

Lub dodaj to do obu, Facebook i Messenger:

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

Efektem końcowym będzie:

  1. Gdy czat jest wyłączony, nie będziesz pojawiać się w trybie online, Twoja ostatnia aktywność nie zostanie zgłoszona i nie będziesz w stanie odbierać wiadomości w czasie rzeczywistym.
  2. Po włączeniu czatu pojawi się on w trybie online, zostanie zgłoszona ostatnia aktywność i będziesz mógł odbierać wiadomości w czasie rzeczywistym.

Niestety wydaje się, że nie ma innego rozwiązania, ponieważ interfejs Facebooka może pobierać wiadomości tylko wtedy, gdy klient okresowo zgłasza, że ​​są aktywne, dlatego pobieranie odbywa się po zgłoszeniu ostatniej aktywności. Oba te działania są możliwe za pomocą jednego skryptu zaplecza ( * -edge-chat.facebook.com / pull ) poprzez to samo żądanie; dlatego nie możesz mieć jednego bez drugiego.

Giorgi Gzirishvili
źródło
-2

Zresetowałem Chrome, który wyłączył moje rozszerzenia i działa teraz dobrze.

Pam Lane
źródło