Как WiFi в Android обнаруживает, должно ли устройство входить в систему или нет?

28

Когда устройство пытается подключиться к точке доступа или маршрутизатору, оно должно войти в систему на странице портала с сообщением о том, что

"Войдите в сеть Wi-Fi".

Как точка доступа / маршрутизатор определяет, что для устройства требуется вход в систему, и каков его процесс?

Сагар Вагела
источник

Ответы:

32

URL обнаружения отличается в разных версиях Android.

Для Зефира, он использует Connectivitycheck.gstatic.com/generate_204, проверьте код здесь AndroidXRef - Зефир 6.0.0_r1

Для Kitkat он использует clients3.google.com/generate_204, проверьте код AndroidXRef - KitKat 4.4.4_r1

RyanDH
источник
Я не хотел угонять ответ, редактируя его, поэтому я просто оставлю комментарий. Мне потребовалось некоторое время, чтобы понять, что URL-адрес обнаружения запускает уведомление, если оно не может быть достигнуто. Кроме того, мне нужна была моя точка доступа, чтобы ответить на этот запрос каким-то содержимым - в моем случае я вернул код 200, а также страницу индекса моего веб-сервера при запросе / generate_204. Без содержания в ответе, независимо от кода возврата, я получил бы уведомление «Wi-Fi не имеет доступа в Интернет».
Убомба
@ubomb Кажется странным, поскольку на http://connectivitycheck.gstatic.com/generate_204самом деле возвращает 204 без содержимого, и, очевидно, работает. Может быть, вы просто пропустили Content-Length: 0заголовок.
Тамир Даниели
9

Эта технология называется «Пленный портал». Есть несколько реализаций. Как я знаю, Android пытается получить доступ к файлу, названному generate_204на одном из серверов Google, и, если это невозможно, генерируется уведомление.

Дальнейшее чтение в Википедии: Captive_portal

Άνδρας
источник
На самом деле я знаю о пленном портале. Но я знаю конкретный URL для проверки. Я хочу знать, как это работает. Не то, что это.
Сагар Вагела
1
Что вы имеете в виду - «как это работает»? Android отправляет запрос, и если нет положительного ответа, это означает, что нет подключения к Интернету, и генерируется уведомление. Вот как это работает.
15.09.15
Какой конкретный URL-адрес, на который Android-запрос. У меня есть упоминание в вопросе.
Сагар Вагела
2
В своем предыдущем комментарии вы сказали, что знаете конкретный URL. Я думаю, что этоhttps://www.gstatic.com/generate_204
Άνδρας
2
Похоже, URL- адресКлиенты3.google.com/generate_204 . Информация взята с этого сайта для хрома, который, вероятно, то же самое для Android. chromium.org/chromium-os/chromiumos-design-docs/…
Бенджамин
2

Портал захвата обычно реализуется путем направления всего трафика на действительный ответ HTTP (200). Этот HTTP-ответ - то, что появляется на портале.

Это можно сделать с помощью таких инструментов, как iptables или dnsmasq.

Джуд Осборн
источник