![如何使用 shell 脚本自动登录网站?](https://linux22.com/image/961021/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20shell%20%E8%84%9A%E6%9C%AC%E8%87%AA%E5%8A%A8%E7%99%BB%E5%BD%95%E7%BD%91%E7%AB%99%EF%BC%9F.png)
我想知道是否有一种方法可以通过在 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_name
,password_field_name
和https://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
示例中使用的id
from<form id="loginform">
和 username 分别是此表单中字段的各自名称。