如何从 Linux 命令行输入网站登录信息

如何从 Linux 命令行输入网站登录信息

我的互联网连接由大学提供。它受用户名/密码组合保护。这意味着当我启动计算机时,我必须启动 Web 浏览器并打开任意网站。然后我被重定向到一个页面,该页面(除其他内容外)包含两个表单。我必须在其中输入用户名和密码。我设法使用 Firefox(可以保存密码)和链接(加载速度更快,并且从命令行)来执行此操作。

有没有办法使用 bash 脚本自动执行登录过程?这将允许在启动时进行登录,这样当我启动 X 服务器时它就已经存在了。

答案1

您可以尝试一下卷曲,你可以像这样简单地使用 curl 登录网页:

curl --user name:password http://somesite.com -v 

您可以将数据传递到这样的网站堆栈溢出回答

    curl -b cookies.txt -c cookies.txt --data "Username=xx&Password=xx&Login=Login" [urlthatyour form submits]

如果您想在登录后发出另一个 curl 请求,则需要 cookie。Cookie 中的会话 ID 将帮助下一个 curl 请求获得授权。

如果你不想使用 Cookie,你可以使用

curl --data "Username=xx&Password=xx&Login=Login" [url that your form submits]

您还可以参考这里用于特殊命令

答案2

我终于找到了一种使用 自动登录的方法elinks。它很有效,而且配置起来也很容易!

需要设置两个选项。可以通过在 中添加以下行~/.elinks/elinks.conf(如果文件不存在,请创建一个)或在 中的选项对话框中更改相应位置的值来完成elinks

    # Save username and password for later use
set document.browse.forms.show_formhist = 1
    # Do not ask for confirmation before a form is submitted
set document.browse.forms.confirm_submit = 0

可编写脚本的自动登录步骤如下:

  • 设置这两个选项
  • 打开 的登录页面elinks,填写表格并提交。
  • 选择记住名称和密码以供日后使用。
  • 关闭链接
  • 跑步elinks -auto-submit http://somesite.com

后一个命令应该执行自动登录,无需进一步的用户交互。

我实际上使用了timeout 1m elinks -auto-submit http://somesite.com &,这样我就不会在后台一直在运行空闲的 elinks 进程。

答案3

编写脚本的一个简单方法是使用

您可以使用他们的 Firefox“测试记录器”插件来记录您自己登录网络的测试,然后回放该测试。

答案4

你可以为你的浏览器安装一个插件,它会自动登录到保存了密码的网站。我在 Firefox 中使用了 AutoAuth。然后你登录一次并保存你的凭证,然后编写一个脚本,只需

#!/bin/bash
firefox https://website address goes here

执行后,它将自动登录。我尝试了多个网站,效果很好。

相关内容