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


25

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

有什么方法可以使用bash脚本自动化登录过程吗?这将允许在引导时进行登录,以便在启动X服务器时已经存在该登录名。


1
也许可以直接通过表单的ACTION属性来调用登录脚本curl
terdon

许多大学还提供使用“企业身份验证”的网络(即,使用用户名/密码进行网络连接本身,而不是等到尝试访问页面以请求凭据时才使用)。操作系统内置了存储此类网络凭据的功能。它也更加安全,因为这意味着其他人很难窥探您的连接。如果您的大学支持,您应该切换到它。
Moshe Katz 2013年

如果您可以提供登录时重定向到的URL的示例(匿名),这也对我们有帮助。(此处匿名表示您应该从URL中删除MAC地址和/或IP地址,但不要留下其他一切,包括大学的名称。)
Moshe Katz 2013年

Answers:


16

您可以使用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]

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


1
我现在无法尝试此操作,但是我希望这仅在打开网站时出现对话框要求输入密码的情况下才有效。就我而言,只有两种形式。一个代表名称,另一个代表密码。我将更改问题以使其更清楚。
蒂姆(Tim)

@Tim添加了如何传递数据,通常您需要找出该页面请求的页面(或该页面的操作值)。
BlueBerry-Vignesh4303

这听起来好像可行,但遗憾的是没有奏效。查看curl的输出时,建议该Username字段正确填充了正确的值,但该Password字段未填充(作为安全措施,这可能是正确的)。我不确定是否确实触发了提交按钮。传递给什么值有关系Login吗?
蒂姆(Tim)

5

我终于找到了一种使用来自动登录的方法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进程。



0

是的,有一种非常简单的方法可以登录大学的互联网。您可以使用“ Lynx ”网络浏览器,该浏览器是基于文本的浏览器,设计用于终端。因此,方法如下:

$ echo "username=myname&password=mypassword" | lynx "url of the form" -post_data

其中,“ username ”是表单中与用户名相对应的字段的名称,“ password ”是与password 字段相对应的字段名称,myname ”和“ mypassword ”是要填写的对应值表格。您可以通过任何浏览器使用“检查元素”来查找字段名称。我按照BlueBerry-Vignesh4303的答案中的指示尝试了卷曲,但没有用。


0

您可以为浏览器获取一个插件,它将使用保存的密码自动登录到网站。我在Firefox中使用了AutoAuth。然后您登录一次并保存您的凭据,然后编写一个脚本,其中包含

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.