問題タブ [captivenetwork]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - CaptiveNetwork API (iOS) に相当する Android は何ですか?
登録ユーザーが WiFi ネットワークに接続し、シームレスに認証できるようにしたい。これは、ユーザーがアプリを実行していて、特定の SSID が検出されたときに発生するはずです。
CaptiveNetwork プログラミング インターフェイスを使用すると、アプリケーションは、インターネット アクセスを提供する前にユーザーの操作を必要とするネットワークを検出するシステム コンポーネントである Captive Network Support とやり取りできます。これらのネットワークは、空港やホテルなどの公共の場所にある最も一般的な WiFi ホットスポットです。
android - Android のキャプティブ ポータル ブラウザー (CaptivePortalLogin) から既定のブラウザーを起動します。
Android デバイスでは、キャプティブ ポータルは Android のキャプティブ ポータル ブラウザで起動します。認証後、ユーザーをステータス ページにリダイレクトし、セッション情報、残り時間、データなどを確認できます。ほとんどのユーザーは、このページを開いたままにしておくことを選択します。
問題は、キャプティブ ポータル ブラウザ内でステータス ページのリダイレクトが発生し、最終的に閉じてしまうことです。キャプティブ ポータル ブラウザ内の「フル」ブラウザ フォームで、ステータス ページを開く方法はありますか?
関連する Android コードのほとんどは、CaptivePortalLoginActivity.java にあるようです。mBrowserBailOutToken 変数は興味深いようですが、トークンを取得する方法がわかりません。
このような状況に対処する方法に関する他のアイデアもいただければ幸いです。
javascript - 認証後のキャプティブ ポータルの自動終了を防止する (Android)
したがって、簡単なアイデアは、ユーザーがユーザー資格情報を介して Ruckus コントローラーで認証できるように RADIUS サーバーをセットアップすることです。認証時に、ユーザーは MAC 認証済みデバイスを管理できるページにリダイレクトされる必要があります。
「古い」Android デバイスを含め、これまでにテストしたすべてのもので、これは問題ではないようで、正常に動作します。ただし、Android の Lollipop (5.0+) バージョンでは、キャプティブ ポータルがかなり変更されました。その変更の一部は、ネットワークに参加したときに起動するキャプティブ ポータルを自動的に閉じることです。認証後に MAC デバイス管理ページにリダイレクトして、現在ログインしているデバイスを追加し、再度ログインする必要がないようにしたいため、これは良くありません。
私が試したこと:
ブラウザーがモバイル デバイスで起動されているかどうかを検出し、ブラウザーを開いたままにしようとするonbeforeunloadでアラートをポップします。
認証の成功が検出されたときに、リダイレクト URL を指す新しいブラウザー ウィンドウを開きます (基本的にはリダイレクトを自分で管理します)。
オプション 2 を実行してから、リダイレクトされた URL でオプション 1 を実行する
うまくいかないこと:
デバイスでキャプティブ ポータル オプションを無効にするようユーザーに依頼する。一般ユーザーを高度なコントロールに誘導しようとはしていません。
MAC マネージャーにアクセスするためのオープン ネットワークを作成します。認証の背後にある必要があります。
今のところの解決策:
このソリューションには満足していませんが、今のところ、ユーザーにネットワークで認証してからブラウザーを開いて基本的なログイン ポータル ページ (非ネットワーク認証) に移動するように求めるだけです。接続します (プリンター、ゲーム デバイスなど)。これは機能しますが、ユーザーがログインしてブラウザーを開き、URL を手動で入力して再度ログインする必要があるのは面倒です。
これは、人々が遭遇したことがない問題ではありません。ここを参照してください。問題に遭遇した人から解決策を見つけることができませんでした。確かに、この状況でブラウザを開いたままにするためにjavascriptまたは何かを利用する方法があります。そうでない場合は、物事を管理するためのより良いアイデアがありますか?
node.js - キャプティブ ポータルを避ける
Wi-Fiへの接続を海賊版のような独自のページにリダイレクトする、インターネット接続のないデバイスを作成しようとしています。NodeJS サーバーと dnsmasq を使用して、すべての接続をサーバーにリダイレクトします。それは完全に機能していますが、Android または iOS スマートフォンに接続しようとすると、それがキャプティブ ポータルとして検出され、ページが表示されますが、認証ポップアップ内に表示されます。
デバイスがいくつかの IP に接続しようとしていて、応答がない場合は、接続がキャプティブ ポータルを経由していると見なされることがわかりました。
それを避ける方法はありますか?
どうもありがとう!
編集:「ホワイトリスト」へのページのリストが見つかりました:
しかし、私のデバイスは実際にはインターネットに接続されていないため、これらのページを送信するにはどうすればよいですか?