使用命令行通过http登录连接到无线网络


12

我正在尝试连接到wifi网络,该网络会劫持所有请求,并将您重定向到一个页面,您必须在该页面上同意使用条款,然后才能连接到实际的外部世界。这是很常见的做法,通常不会带来太大问题。

但是,我有一台运行Ubuntu 9.10服务器且没有窗口系统的计算机。如何使用命令行来同意使用条款?我没有互联网可以通过apt-get或类似工具下载软件包。当然,我可以想到许多解决方法,但我怀疑有一种使用wget或curl或其他方法的简便方法。

基本上,我需要一个命令行解决方案来发送HTTP POST请求,实质上是单击一个按钮。供以后参考,如果我在另一家酒店或机场遇到这种情况,知道如何发送带有用户名和密码的POST请求将很有帮助。


1
请参阅有关将curl用于类似的命令行-网页-按钮-推送技术的答案。我将其张贴在这里,但这只是一个粘贴粘贴的工作;毫无意义。如果您想采取确切的步骤,请作为您自己的答案发表。
quack quixote

Answers:


7

预先安装Lynx,然后从命令行使用Lynx。Lynx是基于文本的浏览器。

或者,您可以尝试使用wget或curl获取www.google.com,然后分析返回的HTTP文件。


7
链接将比lynx做得更好-这是一种稍微更现代的浏览器。(没有。请使用链接。请检查您当地的包裹管理员。)
quack quixote 2010年

+1链接效果很好。真的很容易使用,并且做得很好。
赛义夫·贝坎

这次我最终使用了这个答案(用另一台计算机下载了lynx并通过USB传输了文件),但是实际上我该学习如何使用curl了。
Shane 2010年

7

你将不得不寻找曾经在登录表单的源代码,找出用户名和密码字段的名称。身份验证重定向所有页面时,请使用任何URL来获取该源:

curl http://www.google.com > login.html

例如,您会发现:

<form method="POST" action="http://my-public-provider.com/agree.php">
    <input type="checkbox" name="agree" value="yes">I agree
    <input type="submit" name="push" value="Send">
</form>

另一种方法是使用(在另一台计算机上)诸如Fiddler2之类的代理来查看浏览器“通过有线方式”发送的内容。

然后,您可以构建curl命令来发布表单信息:

curl -d "agree=yes&push=Send" http://my-public-provider.com/agree.php

如果没有curl,可以使用平台上可能使用的语言(Perl,Lua,Java ...)编写一个简单的HTTP客户端。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.