プログラムでホットスポットタイプのネットワークにサインインする方法は?


回答:


5

なんて楽しい問題でしょう。

私はændrükの答えがおそらく機能するだろうと確信していますが、デスクトップソフトウェアに依存するものにネットワークの可用性を管理させることには少し不利です。

PythonのMechanizeライブラリいじってみることをお勧めします。次の方法でリポジトリからインストールできます。

sudo apt-get install python-mechanize

次に、スクリプトを取得します。まず、送信するページの構造を見つける必要があります。フォームがどこに来るか、そして提出するためにどのフィールドを入力する必要があるかを見つける必要があります。それがわかったら、簡単なフォームパーサーとサブミッターを書くだけでとても簡単です。機械化はすべての重労働を行います。以下は、フォームに関するドキュメントから採用した簡単な例です。

import sys
from mechanize import ParseResponse, urlopen, urljoin

# replace this with the actual login page
# you'll need to do some research
uri = "http://theloginpage.com/"

response = urlopen(uri)
forms = ParseResponse(response, backwards_compat=False)
form = forms[0]
print form
form["username"] = "your username"
form["username"] = "password"

# form.click() returns a mechanize.Request object
# (see HTMLForm.click.__doc__ if you want to use only the forms support, and
# not the rest of mechanize)
print urlopen(form.click()).read()

システムの動作方法によっては、これで十分な場合があります。接続をオンにしている間、セッションを存続させるためにいくつかのcookieを接続する必要があるかもしれませんが、技術的に言えば、なぜそれが必要なのかについては議論がありません。

次に、これをネットワークシステムに関連付けて、呼び出されるようにします。からのロードは機能する/etc/network/if-up.dはずですが、コードの前にチェックを付けて、ログインが機能するホットスポットに本当にいることを確認することをお勧めします。


素晴らしい、私は機械化について知りませんでした。試してワクワクします。
ændrük

2

配置されているキャプティブポータルの種類によっては、Wgetを使用して送信されるPOSTリクエスト(タンパーデータを使用して送信する必要があるデータを確認する)またはFirefoxのiMacrosスクリプトを使用して認証できる場合があります。

スクリプトを追加して/etc/network/if-up.d、ネットワーク接続が確立されるたびに実行されるようにすることができます。iwconfig何かを行う前に、現在使用しているネットワークをスクリプトで確認しsudo -u yourusername、Webブラウザーをrootとして実行しないようにコマンドを開始してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.