iPhone/ Android не отклонят целевую страницу wifi, реализованную с помощью DNS

Я пытаюсь реализовать целевую страницу-заставку / wifi в моей существующей общедоступной сети Wi-Fi, используя метод DNS, упомянутый в вики, на котором я размещаю собственный DNS-сервер, который перенаправляет поиск всех DNS на локальный адрес веб-сервера. для всех пользователей, прежде чем они нажмут согласиться.

После того, как пользователь нажал "согласиться", мой пользовательский DNS-сервер начинает возвращать правильный ip для поиска, таким образом, пользователь сможет выйти в Интернет.

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

Этот подход на самом деле работает на Windows Phone (Windows 8, которую я тестировал) в качестве заставки, и даже на компьютере, когда я пытаюсь открыть случайный веб-сайт, он перенаправляет меня на мою страницу, и после того, как я нажимаю "Согласен", я могу попасть в Интернет.,

Когда я пытаюсь сделать это на iPhone/ Android, когда я подключаюсь к точке доступа, страница-заставка / wifi-страница отображаются должным образом (поскольку устройство пытается проверить доступ в Интернет, перейдя на набор страниц). Однако после нажатия кнопки "Согласен" и разрешить доступ в интернет, iPhone и Android заставки не исчезнут. Я должен заставить iphone "использовать этот Wi-Fi без сети" для выхода.

Интересно, есть ли специальный (javascript?) Метод, который я могу вызвать на странице, или какой-то пакет, который мне нужно отправить на устройство? Я заметил, что на iOS, если я нажимаю на ссылку в App Store, страница-заставка исчезает, не отключаясь от сети, так что, я думаю, что-то здесь не хватает.

Например, щелкнув ссылку на приложение iOS Stackru на устройстве iOS, можно обойти эту проблему.

Погуглил уже неделю, похоже, ничего не вышло.

Кстати, я строю свой собственный сервер DNS на узле js, с модулем dnsd.

= - = - =

= - = - = - = - = изменить =-=-=-=-=-=

Я также загрузил демо моего кода на GitHub: https://github.com/kylelam/dnsd_wifi

Чтобы проверить это, запустите его в своей локальной сети (узел sudo demo.js). Затем измените DNS вашего телефона на IP вашего компьютера. Отключите телефон от Wi-Fi и подключитесь к нему снова. (на iOS вам, возможно, придется углубиться в детали и включить автоматический вход в систему и автоматическое подключение, или, если вы не можете, просто перезагрузиться.)

* примечание 1: сервер должен работать на портах 53 и 80, поэтому ему нужно sudo.

* note2: пожалуйста, не смейтесь над моим кодом, я очень новичок в этом. Но, пожалуйста, укажите.

* примечание 3: вам нужно npm установить эти пакеты: os, express, dns, dnsd

1 ответ

ttl, установленный в 0, может быть причиной проблемы, попробуйте другое значение, например 5.

Другие вопросы по тегам