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

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

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

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

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

答案1

提前安装 Lynx,然后从命令行使用 Lynx。Lynx 是一个基于文本的浏览器。

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

答案2

你必须看看一次在登录表单的源中找出用户和密码字段的名称。由于身份验证会重定向所有页面,因此可以使用任何 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 客户端。

相关内容