web-dev-qa-db-ja.com

Whatsdogなどのアプリケーションは、Whatsappからユーザーのオンラインステータスをどのように検出できますか?

Whatsdog は、被害者がオンラインかどうかを検出します。彼らはバックグラウンドで何をしていますか? WhatsappはこのためのAPIやSDKを提供していないことを知っているので、このタイプの機密アクティビティを誰がどのように監視できますか?

7
Tejas Pandya

それは実際にはwhatsappからの文書化されていないAPIによるものであり、Websocketを介して通信して人々のオンラインステータスを取得できます。

この記事 は、それがどのように行われるかを示し、独自のブラウザーで実行するためのPoCを提供します。したがって、このPoCはPCアプリケーションまたはスマートフォンアプリに変更できます。

7
Nico

WhatsappまたはFacebook Messengerはオンラインステータスの公式APIを提供していませんが、非公式の、つまり内部APIを使用してそれを特定することは簡単です。私はユーザーではないか、内部APIにあまり慣れていないため、Whatsappについて話すことはできませんが、メッセンジャーでこれをいじりました。概念的な違いは、オンラインステータス機能を提供するアプリでは無視できる程度なので、Facebookのメッセンジャーを使い慣れているので、例として使用します。

ここにあります Facebookでどのように行われるかを説明する(コミカルに書かれた)ブログ投稿。あなたがそれを読んで技術的な詳細を掘り下げることや全体を読みたくない場合は、ここでそれがどのように機能するかの簡単な要約を提供します。

Facebook Messengerでは、名前の横に小さな緑色の点が表示されており、オンラインであることを示していますよね?ちょうどこのような:

lil green dot

さて、そのドットの状態、またはそれらのステータスを示すデータは、文書化されていない、または非公式のAPIによってフェッチされます。つまり、内部で使用されるAPIです。これはFacebook開発者以外の誰もが使用することを意図していないため、約束はなく、使用しようとするといつでも壊れます。でもそれは要点です。ポイントは、定期的に送信される(つまり、ポーリングされる)リクエストがあり、友達のオンラインステータスを提供することです。時間の経過とともにそれをポーリングすると、ユーザーがオフラインからオンラインに、またはその逆にいつ移行したかを知ることができます。

サードパーティアプリケーションはこれらのAPIを使用し、公式アプリケーションと同じようにそれらをポーリングします。次に、そのデータを使用して、やりたいことを何でもします。ログに記録して使用パターンをグラフ化し、オンラインになったときに通知して、名前を付けます!

この回答があなたの好奇心をそそらない場合、私は上記のリンクの記事を読むことをお勧めします。それは有益で、魅力的で、おもしろいです、そして(!)あなたはそれをあなた自身で試すことができるgithubリポジトリがあります。

3
ucklvs

Nicoが言うように、彼らはWhatsApp APIを使用しています。 WhatsAppクライアントは、連絡先がオンラインかどうかをチェックできます。つまり、それを行うには何らかの方法が必要です。

誰かがコードを逆コンパイルするか、自分の接続をMitMがアプリケーションが実行していることを読み取るのは簡単です。公開されたAPIに対して追加される唯一のリスクは、変更または削除する前に他の当事者に通知する義務がないことです。

クライアントデバイスのシークレットを信頼してはいけません。

1
Hector