我正在尝试登录到某个特定网站,然后进入该网站的某个特定页面并每隔 X 秒自动刷新一次。
以下是我可以登录的信息:
curl --data "Username=xx&Password=xx&Login=Login" [url that login form submits]
以下是我必须自动刷新网页的内容:
while true; do wget -qO- https://www.website > /dev/null; sleep 60; done
- 登录网站
- 转到自动刷新的页面
- 每 X 秒自动刷新一次
我怎样才能组合这些代码(或类似功能的代码),以便它们可以循环执行我需要的任务,直到使用 CTRL + C 取消?
答案1
您遇到的问题与(a)使用 2 个不同的程序登录并不断获取更新有关,更相关的是(b)您没有跟踪会话(即使用 cookie)。
CURL 通常被认为比 wget 更灵活,抽象程度更低,因此使用它很有意义。尝试按照以下行创建一个文件
#! /bin/bash
curl -b cookiejar.txt --data "Username=xx&Password=xx&Login=Login" '[url that login form submits]'
while true
do
curl -b cookiejar.txt 'https://www.website...' >/dev/null
sleep 60
done
上述代码可能需要根据您的网站进行一些调整,但我测试的部分在我测试的网站上是有效的。神奇之处在于每行上的“-b cookiejar.txt”链接登录和后续连接(使用协议中内置的标准 cookie/会话机制)。
请注意 https 请求周围的 ' 字符。这可能是必需的,这样命令行才不会被误解。
当然,您需要将该文件标记为可执行文件 - 使用像 chmod 755 filename 这样的命令 - 才能运行它。
答案2
只要您有登录时的 cookie.txt 文件,以下 wget 代码就会让您显示为在线。您可以在尝试显示为在线的网站上按此扩展按钮来获取 cookie.txt。它将生成要与 wget 命令一起使用的 cookie 文件。
https://chrome.google.com/webstore/detail/cookiestxt/njabckikapfpffapmjgojcnbfjonfjfg
以下代码需要每 60 秒输入到 bash 终端一次,或者以您希望网站看到您已上线的频率输入一次。我目前每 5 分钟在 crontab 中运行一次。大多数网站都有 5-10 分钟的时间让您在网站系统中保持在线,因此只需每 5-10 分钟运行一次,具体取决于网站和您的个人偏好。
wget -x --load-cookies ~/.config/cookies/website.txt "https://www.website.com/dashboard" >/dev/null