如何从终端登录网站并每隔 X 秒自动刷新页面?

如何从终端登录网站并每隔 X 秒自动刷新页面?

我正在尝试登录到某个特定网站,然后进入该网站的某个特定页面并每隔 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
  1. 登录网站
  2. 转到自动刷新的页面
  3. 每 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

相关内容