私がよく行くコーヒーショップでは、ログインページのチェックボックスをオンにすると(TOSを受け入れる)、キャプティブポータルでWi-Fiアクセスが許可されます。私が何時間もそこにいなかったし、彼らが15分ごとまたは100MBごとに何度も何度も尋ねなかったならば、それは問題ではないでしょう。
Bash、Perl、Python、またはUbuntuで一般的に使用されている他のリソースに接続するプロセスを自動化できますか?
HTMLフラグメントは次のとおりです。
<form action="http://1.1.1.1/reg.php" method="post" name="form2">
<input name="url" value="2EB8F3587D88E953591ABBE4833943D6C1241D2842D3D2FC83D98ED1D0613DC1BFFB8380" type="hidden">
<center>
<p><img src="logo_main.jpg" align="absmiddle" height="125" width="134">
</p>
<p>
<input name="checkbox" id="checkbox" value="checkbox" type="hidden">
<input checked="checked" name="checkbox2" value="checkbox" onchange="evalue(this);" type="checkbox">
<font face="Georgia, Times New Roman, Times, serif">I accept the <a href="http://1.1.1.1/tos.htm" target="_top">Terms and Conditions</a></font>
</p>
<p>
<input name="Submit" value="Enter" id="button1" type="submit">
</p></center>
</form>
答え1
url
ここの値は、フィールド名からわかるものとは異なる一種のセッションキーであると仮定します。たとえば、次のようにして取得できますsed
。
wget -qO- http://… | sed -n 's/<input name="url" value="\([^"]\+\)" type="hidden">/\1/p'
その後、それを使用して直接要求を作成できますcurl
。リクエストを右クリックしてコマンドラインでcurl
コピーを取得できるChromeデベロッパーツールにアクセスすると便利です。
あるいは、Seleniumを使用することもできます。 Python用Seleniumを使用すると、コードは次のようになります。
driver.find_element_by_name('checkbox2').click()
driver.find_element_by_id('button1').click()