Ek ayrıntılar sağladığım için, orijinaline göre kendi cevabımı yazıyorum (düzenlemek yerine).
Evet, bunu yapmanın bir yolu var, ancak bu yöntem yalnızca web tabanlı Facebook ve Messenger için çalışır; mobil uygulamalar için benzer bir şey yapamazsınız.
Temel olarak, Facebook istemcinin hala kullanılabilir olup olmadığını kontrol etmek için sunucu tarafında zamanlanmış istekleri kullanır. Böylece ön uç (yüklü Facebook web sayfası), sunucularına boşta kalma süresi olan bir HTTP isteği ( XHR ) periyodik olarak gönderir .
İşte böyle bir talebe bir örnek:
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
Not: Normalde bir sayı olan kullanıcı kimliğini değiştirdim.
Yukarıdaki URL'yi okuduysanız, boşta = 117 diyen kısmı görürsünüz . Bu, hesabın boşta kaldığı toplam saniye sayısını gösterir. Devlet = çevrimdışı sohbet açılıp kapatılabilir olup olmadığını simgeler.
Bu nedenle, bunu devre dışı bırakmak için reklam engelleyicinizin özel filtre listesine aşağıdaki kuralı eklemeniz yeterlidir:
||*-edge-chat.facebook.com^$xmlhttprequest
Facebook ve Messenger'da devre dışı bırakmak için aşağıdaki iki satırı ekleyebilirsiniz:
||*-edge-chat.facebook.com^$xmlhttprequest
||*-edge-chat.messenger.com^$xmlhttprequest
Veya regex kullanarak tek satır :
/^https?\:\/\/\d+-edge-chat\.(facebook|messenger)\.com\/?/$xmlhttprequest
Bu yöntemin birkaç dezavantajı, gerçek zamanlı olarak mesaj alamayacağınız ve sohbet açık olsa bile çevrimiçi görünmeyeceğinizdir. Yeni mesajlar almak için sayfayı yenilemeniz gerekir.
Bu dezavantajların her ikisinden de kaçınmak için bir çözüm var. Bunun yerine bu satırı ekleyebilirsiniz:
/^https?\:\/\/\d+-edge-chat\.facebook\.com\/pull\?.*state=offline/$xmlhttprequest
Veya bunu hem Facebook hem de Messenger için ekleyin:
/^https?\:\/\/\d+-edge-chat\.(facebook|messenger)\.com\/pull\?.*state=offline/$xmlhttprequest
Bunun sonucu şöyle olacaktır:
- Sohbetiniz kapalıyken çevrimiçi görünmeyeceksiniz, son etkinliğiniz rapor edilmeyecek ve gerçek zamanlı olarak mesaj alamayacaksınız.
- Sohbetiniz açıkken çevrimiçi görüneceksiniz, son etkinliğiniz raporlanacak ve gerçek zamanlı olarak mesaj alabileceksiniz.
Ne yazık ki, başka bir çözüm yok gibi görünüyor, çünkü Facebook'un ön ucu sadece müşteri düzenli olarak aktif olduklarını bildirdiğinde mesajlar getirebilir, bu nedenle getirme son etkinlik bildirildikten sonra yapılır. Bu eylemlerin her ikisi de aynı istekle tek bir arka uç komut dosyası ( * -edge-chat.facebook.com / pull ) ile mümkün olur; bu nedenle, diğeri olmadan sahip olamazsınız.