Спливаючі портали, що захоплюються: остаточне керівництво [закрито]


13

Я вручну впроваджую портал із захопленим Wi-Fi. У мене все працює дуже багато, але НЕ єдиний пристрій: я хочу, щоб усі бачили спливаючі портали своїх мобільних ОС (або комп'ютерних ОС) для бездоганного досвіду.

Оскільки у кожного з них є свій кручений спосіб зробити це, я, здається, не в змозі отримати постійний досвід роботи на платформі.

Щоб це сталося, чи можу я допомогти описати (1) які запити URL-адрес від клієнтів WiFi потрібно перенаправити на сторінку входу, та / або (2) яку конфігурацію веб-сервера nginx або apache можна використовувати для перенаправлення WiFi клієнти на сторінку входу?

Моя сторінка реєстрації порталу в цьому прикладі http: //captiveportal.lan . Ось деякі операційні системи, для яких я намагаюся вирішити цю проблему.


Android 4/5/6

  • Apache:
    RedirectMatch 302 /generate_204 http://captiveportal.lan
  • nginx:?

Попередні версії Android

  • Apache:?
  • nginx:?

iOS 8

  • Apache .htaccess:
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$ [NC]
    RewriteRule ^(.*)$ http://captiveportal.lan [L,R=302]

  • nginx:?

Попередні версії iOS

  • Apache:?
  • nginx:?


Телефон Windows

  • Apache:
    RedirectMatch 302 /ncsi.txt http://captiveportal.lan
  • nginx:?


Windows 7 \ 8 \ 10

  • Apache: дивіться Windows Phone (працює на win7).
  • nginx:?

Mac OS

  • Apache:?
  • nginx:?

Amazon Kindle - чи є в ньому спливаюче вікно?

  • Apache:?
  • nginx:?

5
Ні, це не надто широко, це просто багатоплатформене питання. НАЙБІЛЬШЕ багатоплатформене питання може бути, можливо. Він також досяг статусу "помітного питання" (понад 2500 переглядів), тому люди справді зацікавлені в ньому, і ви надаєте ВЕЛИЧУЮ послугу усім, запобігаючи вкладенню внесків. Для сорому!
ppparadox

Дякую за пост; це дозволило мені зробити це unix.stackexchange.com/questions/386242/…
Rui F Ribeiro

Відповіді:


6

Усі мобільні ОС просто перевіряють веб-сторінку, щоб вирішити, чи стоять вони за невдалим порталом чи ні.

Механізм такий:

  1. Отримати / відправити http://foo.com/bar.html
  2. Якщо bar.html == [очікуваний вміст]> Відкрийте Інтернет
  3. Якщо bar.html! = [Очікуваний вміст]> Портал захоплених
  4. Якщо bar.html [статус]! = УСПІХ> Немає мережі

Крім того, для iOS потрібно мати домен для вашої мережі WiFi, оскільки вона передбачає, що бездоменна мережа без доступу є домашньою мережею і просто позначає її як "No Network" замість "Captive Portal".

Просто переконайтеся, що явно переспрямовуєте наступні URL-адреси на ваш невідомий портал із HTTP Success:

Android / Chromebook:

  • clients3.google.com

iOS 6:

  • gsp1.apple.com
  • * .akamaitechnologies.com

iOS 7:

  • www.appleiphonecell.com
  • www.airport.us
  • * .apple.com.edgekey.net
  • * .akamaiedge.net
  • * .akamaitechnologies.com

iOS 8/9:

Windows

  • ipv6.msftncsi.com
  • www.msftncsi.com

Багато постачальників також почали використовувати Агент користувача "CaptiveNetworkSupport", хоча це не так часто, як метод URL вище. Просто перевірте, чи є ця UA і завжди надайте їй свою сторінку порталу ... хоча це не працює на 100%.

Я використовую метод URL, і він працює добре.


Хочете поділитися деякими робочими правилами веб-сервера \ брандмауера \ php фрагменти, якими ви користуєтесь для отримання спливаючого вікна?
ppparadox

Схоже, Android v6 використовує інший URL. connectivitycheck.gstatic.com, про яку йдеться тут,
DavidT

Чому вам доведеться явно перенаправляти тестові URL-адреси? Ви б просто не обслуговували сторінку входу для кожної URL-адреси, поки користувач не ввійшов?
AShelly

3

Amazon Kindle (Fire)

Amazon Kindle (Fire) робить наступний запит, і якщо його неможливо отримати ", він передбачає, що користувач повинен увійти та підкидає екран входу.":

iOS 8.4

Для останнього iOS мені довелося відповідати всім URI для запитів на http://captive.apple.com - не лише "/hotspot-detect.html".

IOS 8.4 клієнти роблять запити з URI, згенерованих випадковим чином (наприклад, «/xmqPyZUv/3r8jTjv8.html» і «/7exN0TV7q0COX0/eKlBU8baU2tape/fjXUzDHBdE6W0O/BGbw7iYU2DVBh1/sVBlx8icYzTTtE.html») в URL-запитів в наступних областях для виявлення полоненого порталу:


1
Чи iOS 8.4 встановлює UserAgent на "CaptiveNetworkSupport"? Хочете поділитися деякими робочими правилами веб-сервера \ брандмауера \ php фрагменти, якими ви користуєтесь для отримання спливаючого вікна? Крім того, чому хтось звернувся до вас, не намагаючись пояснити, чому? Дурні люди ...
ppparadox

Точний рядок агента - "wippr CaptiveNetworkSupport-277.10.5". Коли я переспрямую ці запити (перераховані в цьому питанні) на сторінку входу, Apple iOS з’явиться на сторінці входу, а Android покаже рядок заголовка входу. Після успішного входу на сторінку входу система закритого порталу повинна дозволити цим HTTP-запитам бути успішними, щоб спливаюче вікно та рядок входу зникли. Я успішно протестував це на створеному нестандартним порталом, створеному за допомогою Linux, dnsmasq та Apache httpd-сервера.
Рассел Е Глауе

Забув запитати, чи Kindle встановлює і цей користувальницький агент.
ppparadox

1
Для розпалу я бачу "Dalvik / 2.1.0 (Linux; U; Android 5.0.1; VS985 4G Build / LRX21Y)" (можливо це додаток для розпалювання?). У цій темі mobileread.com/forums/showthread.php?t=188439 сказано: "Mozilla /5.0 (Linux; як iPhone; U; en-US) AppleWebKit / 528.5 + (KHTML, як Gecko, Safari / 528.5 +) Версія / 4.0 "
Рассел Е Глауе

1
@ppparadox Я не знаю, чому я отримав знижений голос секунди після публікації. Якщо вам подобається мій внесок, будь ласка, дайте мені підсумок. Дякую.
Рассел Е Глауе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.