Facebookチャットの可用性を無効にします(今すぐアクティブ、今すぐアクティブ、x分前にアクティブ)


15

Facebookチャットの可用性を無効にするにはどうすればよいですか?チャットはオフラインで、FirefoxでWindows 7を使用しています。モバイルFacebookから他のアカウントでログインしてチャット会話を開くと、マウスを動かしたりページを更新したりするたびに、コンピューターで使用しているアカウントが「今」アクティブになっていることがわかります。

どうすれば無効にできますか?AdBlock Plusなどによってブロックされる可能性のある特定のハートビートメッセージはありますか?

回答:


11

さて、このステータスをブロックするソリューションを見つけました。

基本的に、Facebookはタイマーを使用するため、x分ごとにアイドル時間を使用してハートビートメッセージをサーバーに送信します。

そのような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

このリンクを読むと、&idle = 117がアカウントがアイドル状態になっていた合計秒数であることがわかります。状態=オフラインでのチャットがアクティブまたはオフラインであるかどうかを表します

15桁のユーザーIDを置き換えたことに注意してください。

これを無効にするには、AdBlockフィルターに次のルールを追加します。

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

この方法の欠点の1つは、リアルタイムでメッセージを受信できないことです。メッセージを取得するには、ページを更新する必要があります。


1
iOS 9コンテンツブロッカーを使用するSafariで、このような機能は動作しますか?

0

追加の詳細を提供しているため、(編集するのではなく)オリジナルに基づいて独自の回答を作成しています。

はい、これを行う方法がありますが、この方法はWebベースのFacebookおよびMessengerでのみ機能します。モバイルアプリでは同様のことはできません。

基本的に、Facebookはサーバー側で時間制限のあるリクエストを使用して、クライアントがまだ利用可能かどうかを確認します。そのため、フロントエンド(ロードされたFacebook Webページ)は、アイドル時間を含むHTTP要求(XHR)をサーバーに定期的に送信します。

そのようなリクエストの例を次に示します。

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

注:通常は数字になるユーザーIDを置き換えました。

上記のURLを読むと、idle = 117の部分が表示されます。これは、アカウントがアイドル状態になっていた合計秒数を示します。状態=オフラインでチャットがオンまたはオフにされているかどうかを表します。

そのため、これを無効にするには、広告ブロッカーのカスタムフィルタリストに次のルールを追加するだけです。

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

FacebookとMessengerの両方で無効にするには、次の2行を追加できます。

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

または、正規表現を使用した単一行:

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

この方法のいくつかの欠点は、リアルタイムでメッセージを受信できず、チャットがオンになっていてもオンラインで表示されないことです。新しいメッセージを受信するには、ページを更新する必要があります。

これらの欠点の両方を回避するために、1つの回避策があります。代わりに次の行を追加できます。

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

または、FacebookとMessengerの両方にこれを追加します。

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

最終結果は次のようになります。

  1. チャットがオフの場合、あなたはオンラインに表示されず、最後のアクティビティは報告されず、リアルタイムでメッセージを受信することはできません。
  2. チャットがオンになると、オンラインで表示され、最後のアクティビティが報告され、リアルタイムでメッセージを受信できるようになります。

残念ながら、Facebookのフロントエンドはクライアントがアクティブであることを定期的に報告する場合にのみメッセージをフェッチできるため、他のソリューションはないようです。したがって、フェッチは最後のアクティビティが報告された後に行われます。これらのアクションは両方とも、同じリクエストを通じて、単一のバックエンドスクリプト(* -edge-chat.facebook.com / pull)によって可能になります。したがって、一方が他方なしで存在することはできません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.