Я пытаюсь реализовать портал на небольшом встроенном устройстве.
Как я понимаю, все, что мне нужно, это захватывать запросы смартфонов на специальные URL-адреса и отправлять ответы, содержащие страницу портала. Чтобы не вести список всех возможных URL-адресов, я настроил DNS, который разрешает все хосты по IP-адресу моего устройства.
Теперь, когда я подключаю устройство Android к своей сети, я ловлю запрос на /generate_204
и отправляю ответ перенаправления. Вот пример запроса и ответа от команды curl:
curl -v http://google.com/generate_204
* Trying 192.168.1.1...
* Connected to google.com (192.168.1.1) port 80 (#0)
> GET /generate_204 HTTP/1.1
> Host: google.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Content-Type: text/html
< Content-Length: 0
< Location: /
<
* Connection #0 to host google.com left intact
Используя Почтальон / Хром, я перенаправлен на 192.168.1.1/, и требуемая страница загружена. Однако я протестировал 4 андроид устройства, и только один показал мне всплывающее окно. Та же проблема с IOS. Я перехватил запрос на /hotspot-detect.html
, вернул тот же ответ, что и выше, и ничего не произошло. Что мне здесь не хватает?
Спасибо!