我的互联网连接由大学提供。它受用户名/密码组合保护。这意味着当我启动计算机时,我必须启动 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
执行后,它将自动登录。我尝试了多个网站,效果很好。