如何使用 shell 脚本自动登录网站?

如何使用 shell 脚本自动登录网站?

我想知道是否有一种方法可以通过在 shell 脚本中指定登录凭据来登录网站,并通过运行 shell 脚本来自动登录。

答案1

您可以使用它lynx来自动登录,它提供了更多功能。请参阅 lynx 的手册页这里

lynx可以轻松与 shell 脚本集成。使用lynx-auth 参数可以传递 ID 和密码进行身份验证。

-auth=ID:PASSWD 在启动时为受保护的文档设置授权 ID 和密码。请务必保护使用此开关的任何脚本文件。

希望这可以帮助。

答案2

就我而言,-auth=ID:PASS没有用。
所以我用了这个:

lynx -cmd_log=/home/luk/lynxScript.lys -accept_all_cookies www.webside.com/auth

然后使用密码登录。

结果(保存在文件中lynxScript.lys),我获得了登录时执行的所有命令。

现在我可以使用这个:

lynx -cmd_script=/home/luk/lynxScript.lys -accept_all_cookies www.webside.com/auth
  • -cmd_log- 保存您的操作。
  • -cmd_script- 播放记录的动作。

因此,有了-cmd_log-cmd_script,您就可以在网页上做任何您想做的事情。

答案3

这取决于网站使用什么登录机制,因为没有标准。

如今,大多数网站都使用 Cookie。因此,基本上您必须自动填写登录表单、提交并存储收到的 Cookie。然后,您必须在后续访问网站时使用该 Cookie。

curl是一个很好的工具。你必须编写一个脚本,首先调用

curl -c /tmp/cookiefile -d login_field_name=login -d password_field_name=password https://site.domain/path/to/login

当然login_field_namepassword_field_namehttps://site.domain/path/to/login(以及登录表单可能需要的其他参数)是您必须从页面源代码中读取的内容。

成功后,身份验证 cookie 将存储在 中/tmp/cookiefile,您必须在后续访问网站时使用它:

curl -b /tmp/cookiefile http://site.domain/path/to/whatever/you/need

答案4

您可以python使用mechanize以及http.cookiejar,例如:

#!/usr/bin/env python3

import mechanize
import http.cookiejar

cj = http.cookiejar.CookieJar()
br = mechanize.Browser()
br.set_cookiejar(self.cj)

br.open("http://www.example.com/")
br.select_form(id="loginform")
br.form["username"] = "myuser"
br.form["password"] = "mypassword"
br.submit()

# from now on, all requests to example.com uses your logged in user
br.open("http://www.example.com/some_acces_restricted_page") 

在哪里br.select_form示例中使用的idfrom<form id="loginform">和 username 分别是此表单中字段的各自名称。

相关内容