9

Wiki に記載されている DNS メソッドを使用して、既存のパブリック wifi ネットワークにスプラッシュ ページ/wifi ランディング ページを実装しようとしています。このメソッドでは、カスタム DNS サーバーをホストし、すべての dns ルックアップを Web サーバーがあるローカル アドレスにリダイレクトします。同意をクリックする前に、すべてのユーザーに対してホストされます。

ユーザーが [同意する] をクリックすると、カスタム DNS サーバーがルックアップ用の正しい IP を返し始めるため、ユーザーはオンラインになることができます。

注: これがネットワークを保護するものではなく、ネットワークを危険にさらすことさえあることを完全に理解しています。しかし、ここでの目標は、ランディング ページをユーザーの前にポップアップ表示することです。

このアプローチは、実際には Windows Phone (私がテストした Windows 8) でスプラッシュ ページとして機能し、コンピューターでランダムな Web サイトを開こうとすると、自分のページにリダイレクトされ、同意するとインターネットにアクセスできます。 .

iPhone / Androidで試してみると、ホットスポットに接続すると、スプラッシュページ/ wifiランディングページが期待どおりに表示されます(デバイスが一連のページに移動してインターネットアクセスを確認しようとしているため)しかし、同意をクリックした後、インターネット アクセスを許可すると、iPhone と Android の両方のスプラッシュ スクリーンが消えることはありません。iPhoneを「ネットワークなしでこのwifiを使用する」ように強制して終了する必要があります。

ページで呼び出すことができる特別な (javascript?) メソッド、またはデバイスに送信する必要があるパッケージがあるのだろうか? iOS で、App Store へのリンクをクリックすると、ネットワークから切断せずにスプラッシュ ページが消えることに気付きました。

たとえば、iOS デバイスでiOS StackOverflow アプリへのリンクをクリックすると、回避策になる場合があります。

1週間グーグルで調べていましたが、何も出てこなかったようです。

ところで、モジュール dnsd を使用して、ノード js 上にカスタム DNS サーバーを構築しています。

=-=-=

=-=-=-=-= 編集 =-=-=-=-=-=

コードのデモも GitHub にアップロードしました: https://github.com/kylelam/dnsd_wifi

テストするには、ローカル ネットワーク (sudo node demo.js) で実行します。次に、電話の dns をマシンの IP に変更します。携帯電話を Wi-Fi から切断し、もう一度接続します。(iOS では、詳細に進み、自動ログインと自動参加を有効にするか、それができない場合は再起動する必要がある場合があります。)

*注 1: サーバーはポート 53 および 80 で実行する必要があるため、sudo が必要です。

*注 2: 私のコードを笑わないでください。私はこれに非常に慣れていません。しかし、指摘してください。

*注 3: 次のパッケージを npm でインストールする必要があります: os、express、dns、dnsd

4

1 に答える 1