AndroidのWiFiは、デバイスがサインインする必要があるかどうかをどのように検出しますか?


28

デバイスがアクセスポイントまたはルーターに接続しようとすると、キャプティブポータルページで次のメッセージでサインインする必要があります。

「Wi-Fiネットワークにサインイン」。

アクセスポイント/ルーターは、デバイスにサインインが必要であることをどのように識別し、その背後にあるプロセスは何ですか?

回答:


32

検出URLは、Androidのバージョンによって異なります。

Marshmallowの場合、connectivitycheck.gstatic.com / generate_204を使用し、AndroidXRef-Marshmallow 6.0.0_r1のコードを確認します

Kitkatの場合、clients3.google.com / generate_204を使用してコードAndroidXRefを確認します-KitKat 4.4.4_r1


実際に、これは非常に良い答えで正解としてマークされなければならない
Moataz Elmasry

答えを編集してハイジャックしたくなかったので、コメントを残しておきます。到達できない場合、検出URLが通知をトリガーすることに気付くまでに時間がかかりました。さらに、アクセスポイントがこのリクエストに何らかのコンテンツで応答する必要がありました。この場合、/ generate_204がリクエストされたときに、Webサーバーのインデックスページとともに200コードを返しました。応答にコンテンツがない場合、戻りコードに関係なく、「Wi-Fiにはインターネットにアクセスできません」という通知が表示されます。
-ubomb

@ubombは奇妙に見えhttp://connectivitycheck.gstatic.com/generate_204ます。実際にはコンテンツのない204を返し、明らかに動作するからです。たぶん、Content-Length: 0ヘッダーを省略しただけかもしれません。
タミールダニリー

9

このテクノロジーは「キャプティブポータル」と呼ばれます。いくつかの実装があります。私が知っているように、Android generate_204はGoogleサーバーのいずれかで指定されたファイルに到達しようとします。それが不可能な場合は、通知が生成されます。

ウィキペディアの詳細:Captive_portal


実際、私はキャプティブポータルについて知っています。しかし、私はそれを確認するための特定のURLを知っています。私はそれがどのように機能するか知りたいです。そうではありません。
サガルヴァゲラ

1
あなたはどういう意味ですか-「それは仕事です」Androidはリクエストを送信し、肯定的な応答がない場合、インターネットへの接続がないことを意味し、通知が生成されます。それが動作する方法です。
Άνδρας

これは、Androidリクエストの特定のURLです。私は問題に言及しています。
サガルヴァゲラ

2
前のコメントで、特定のURLを知っていると言いました。私はそれだと思うhttps://www.gstatic.com/generate_204
-Άνδρας15

2
URLはclients3.google.com/generate_204のようです。このサイトからクロムについて取得した情報は、おそらくアンドロイドについても同じです。chromium.org/chromium-os/chromiumos-design-docs/...
ベンジャミン

2

通常、キャプティブポータルは、すべてのトラフィックを有効なHTTP応答(200)に転送することで実装されます。このHTTP応答は、キャプティブポータルに表示されるものです。

これは、iptablesやdnsmasqなどのツールで実行できます。

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