web-dev-qa-db-ja.com

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

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:?


Windows Phone

  • 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:?
13
ppparadox

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

メカニズムはこれです:

  1. GET/POST http://foo.com/bar.html
  2. If bar.html == [expected content]> Open Internet
  3. If bar.html!= [expected content]>キャプティブポータル
  4. If bar.html [status]!= SUCCESS> No Network

また、iOSの場合、アクセスのないドメインレスネットワークがホームネットワークであると想定し、キャプティブポータルではなくネットワークなしとマークするだけなので、WiFiネットワーク用のドメインが必要です。

次の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:

ウィンドウズ

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

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

私はURLメソッドを使用しており、問題なく動作しています。

6
hdezela

Amazon Kindle(Fire)

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/sVBtxドメインのURLから次のURLへのキャプション:" html "から" URL "へのリクエストを作成しています。

3
Russell E Glaue