キャプティブポータルポップアップ:決定的なガイド[終了]


12

WiFiキャプティブポータルを手動で実装しています。私はすべてがうまく機能していますが、1つのヒッチです:完璧な体験のために、モバイルOS(またはコンピューターOS)のキャプティブポータルポップアップをすべての人に見てもらいたいです。

それらのそれぞれには独自のねじれた方法があるため、一貫したクロスプラットフォーム体験を得ることができないようです。

これを実現するために、(1)WiFiクライアントからのURLリクエストをログインページにリダイレクトする必要がある、および/または(2)WiFiをリダイレクトするために使用できるnginxまたはapache Webサーバー構成のいずれかを説明する助けがありますかログインページへのクライアント?

この例のキャプティブポータルのログインページは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:?


ウインドウズの電話

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


Windows 7 \ 8 \ 10

  • Apache:Windows Phoneを参照(win7で動作)。
  • nginx:?

マックOS

  • Apache:?
  • nginx:?

Amazon Kindle-ポップアップがありますか?

  • Apache:?
  • nginx:?

5
いいえ、それは広すぎず、単にマルチプラットフォームの問題です。最も多くのマルチプラットフォームの問題が存在する可能性があります。また、「注目すべき質問」ステータス(2500ビュー以上)に達しているので、人々はそれに本当に興味を持ち、貢献者の流入を防ぐことで、すべての人に大きな損害を与えています。
ppparadox

投稿してくれてありがとう。unix.stackexchange.com/questions/386242/…
Rui F Ribeiro

回答:


5

すべてのモバイルOSは、Webページをチェックして、キャプティブポータルの背後にあるかどうかを判断します。

メカニズムは次のとおりです。

  1. GET / POST http://foo.com/bar.html
  2. bar.html == [予想されるコンテンツ]>インターネットを開く場合
  3. bar.html!= [期待されるコンテンツ]>キャプティブポータルの場合
  4. bar.html [status]!= SUCCESS> No Networkの場合

また、iOSの場合、WiFiネットワーク用のドメインが必要です。これは、アクセスのないドメインレスネットワークがホームネットワークであり、Captive PortalではなくNo Networkとしてマークされるためです。

HTTP Successを使用して、以下のURLをキャプティブポータルに明示的にリダイレクトするようにしてください。

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:

ウィンドウズ

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

多くのベンダーもユーザーエージェント「CaptiveNetworkSupport」の使用を開始していますが、上記のURLメソッドほど一般的ではありません。そのUAを確認し、常にポータルページを指定するだけで、100%は機能しません。

私はURLメソッドを使用していますが、うまく機能しています。


ポップアップを取得するために使用するいくつかの動作中のWebサーバーconf \ firewall rules \ phpスニペットを共有しますか?
ppparadox

Android v6は別のURLを使用しているようです。ここ
Connectivitycheck.gstatic.com

テストURLを明示的にリダイレクトする必要があるのはなぜですか?ユーザーがログインするまで、すべてのURLのログインページを提供しませんか?
AShelly

2

Amazon Kindle(ファイア)

Amazon Kindle(Fire)は次のリクエストを行い、取得できない場合は「...ユーザーがログインする必要があると想定し、ログイン画面を表示します。」:

iOS 8.4

最新のiOSでは、「/ hotspot-detect.html」だけでなく、http: //captive.apple.com へのリクエストのすべてのURIを一致させる必要がありました。

iOS 8.4クライアントは、ランダムに生成されたURI(例:「/xmqPyZUv/3r8jTjv8.html」および「/7exN0TV7q0COX0/eKlBU8baU2tape/fjXUzDHBdE6W0O/BGbw7iYU2DVBh1/sVBlx8icYzTTE.html


1
iOS 8.4はUserAgentを「CaptiveNetworkSupport」に設定しますか?ポップアップを取得するために使用するいくつかの動作中のWebサーバーconf \ firewall rules \ phpスニペットを共有しますか?また、なぜ誰かがその理由をわざわざ説明せずにあなたを裏切ったのですか?愚かな人々...
ppparadox

正確なエージェント文字列は「CaptiveNetworkSupport-277.10.5 wispr」です。これらのリクエスト(この質問にリストされている)をログインページにリダイレクトすると、Apple iOSはログインページをポップアップし、Androidはログインヘッダーバーを表示します。ログインページに正常にログインした後、ポップアップウィンドウとログインバーを非表示にするには、キャプティブポータルシステムがこれらのHTTPリクエストを成功させる必要があります。Linux、dnsmasq、およびApache httpdサーバーのみを使用して作成したカスタムキャプティブポータルでこれをテストしました。
ラッセルEグラーエ

Kindleがそのユーザーエージェントも設定するかどうかを尋ねるのを忘れていました。
ppparadox

1
kindleについては、「Dalvik / 2.1.0(Linux; U; Android 5.0.1; VS985 4G Build / LRX21Y)」(おそらくkindleアプリですか?)を見ています。このスレッドmobileread.com/forums/showthread.php?t=188439は「Mozilla /5.0(Linux; iPhone; U; en-US)AppleWebKit / 528.5 +(KHTML、Gecko、Safari / 528.5 +)Version / 4.0 "
ラッセルEグラーエ

1
@ppparadox投稿してから数秒で投票権を獲得した理由がわかりません。私の貢献が気に入ったら、私に賛成票をください。ありがとう。
ラッセルEグラウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.