我的互联网连接由大学提供。它受用户名/密码组合的保护。这意味着当我启动计算机时,必须启动Web浏览器并打开任意网站。然后,我被重定向到一个页面,该页面(除其他外)包含两种形式。在这些中,我必须输入用户名和密码。我设法用firefox(可以保存密码)和链接(可以从命令行更快地加载)来做到这一点。
有什么方法可以使用bash脚本自动化登录过程吗?这将允许在引导时进行登录,以便在启动X服务器时已经存在该登录名。
我的互联网连接由大学提供。它受用户名/密码组合的保护。这意味着当我启动计算机时,必须启动Web浏览器并打开任意网站。然后,我被重定向到一个页面,该页面(除其他外)包含两种形式。在这些中,我必须输入用户名和密码。我设法用firefox(可以保存密码)和链接(可以从命令行更快地加载)来做到这一点。
有什么方法可以使用bash脚本自动化登录过程吗?这将允许在引导时进行登录,以便在启动X服务器时已经存在该登录名。
Answers:
您可以使用curl尝试一下,也可以像这样使用curl来登录网页:
curl --user name:password http://somesite.com -v
您可以像这样从Stackoverflow答案将数据传递到网站
curl -b cookies.txt -c cookies.txt --data "Username=xx&Password=xx&Login=Login" [urlthatyour form submits]
如果您想在登录后再次发出卷曲请求,则需要cookie。cookie中的会话ID将帮助授权下一个卷曲请求。
如果您不想要Cookie,可以使用
curl --data "Username=xx&Password=xx&Login=Login" [url that your form submits]
您还可以在这里参考特殊命令
Username
字段正确填充了正确的值,但该Password
字段未填充(作为安全措施,这可能是正确的)。我不确定是否确实触发了提交按钮。传递给什么值有关系Login
吗?
我终于找到了一种使用来自动登录的方法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进程。
一个简单的脚本编写方法是使用Selenium。
您可以使用其Firefox“测试记录器”插件记录您自己登录网络的测试,然后回放该测试。
是的,有一种非常简单的方法可以登录大学的互联网。您可以使用“ Lynx ”网络浏览器,该浏览器是基于文本的浏览器,设计用于终端。因此,方法如下:
$ echo "username=myname&password=mypassword" | lynx "url of the form" -post_data
其中,“ username ”是表单中与用户名相对应的字段的名称,“ password ”是与password 字段相对应的字段的名称, “ myname ”和“ mypassword ”是要填写的对应值表格。您可以通过任何浏览器使用“检查元素”来查找字段名称。我按照BlueBerry-Vignesh4303的答案中的指示尝试了卷曲,但没有用。
ACTION
属性来调用登录脚本curl
。