Webページにアクセスしてhtmlチェックボックスをチェックする方法

Webページにアクセスしてhtmlチェックボックスをチェックする方法

私がよく行くコーヒーショップでは、ログインページのチェックボックスをオンにすると(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()

関連情報