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

Sha*_*ane 13 linux wireless-networking command-line login hotspot

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

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

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

ta.*_*.is 7

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

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

  • **links** 会比 **lynx** 做得更好——它是一个稍微更现代的浏览器。(不是真的。使用**链接**。检查您的本地包管理器。) (7认同)

dol*_*men 7

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

curl http://www.google.com > login.html
Run Code Online (Sandbox Code Playgroud)

例如,您会发现:

<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>
Run Code Online (Sandbox Code Playgroud)

另一种方法是(在另一台计算机上)使用Fiddler2等代理来查看浏览器“通过网络”发送的内容。

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

curl -d "agree=yes&push=Send" http://my-public-provider.com/agree.php
Run Code Online (Sandbox Code Playgroud)

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