在我常去的咖啡厅,当您选中登陆页面中的复选框(接受 TOS)后,强制门户就会授予 wifi 访问权限。如果我没有在那里待上几个小时,并且他们没有每 15 分钟或 100 MB 一遍又一遍地询问,那就不成问题了。
我可以自动化连接 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
。进入 Chrome 开发人员工具可能会有所帮助,您可以在其中右键单击请求以将其副本作为curl
命令行获取。
或者,您可以使用 Selenium。使用 Selenium for Python 代码将如下所示:
driver.find_element_by_name('checkbox2').click()
driver.find_element_by_id('button1').click()