我创建了一个脚本来定期从我的运营商网站下载页面,这将收集我剩余的互联网配额。
我使用 Chrome 浏览器中的复制作为 curl 功能,将它们粘贴到我的脚本中,它可以工作。
但是当我在 1 小时后运行它们时,它不起作用。我怀疑这是因为 cookies 已过期,是否有任何终端命令可以让 curl 请求与从 chrome 复制的 curl 完全相同?
这是我的 curl 命令:
curl 'https://my.smartfren.com/mysmartfren_home' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/72.0.3626.121 Chrome/72.0.3626.121 Safari/537.36' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' \
-H 'Accept-Language: en-US,en;q=0.5' \
--compressed \
-H 'Referer: https://my.smartfren.com/mysmartfren_login' \
-H 'Connection: keep-alive' \
-H 'Cookies:' \
-H 'Upgrade-Insecure-Requests: 1' \
-H 'Cache-Control: max-age=0' \
&> /dev/stdout \
| tee -a $LOG
出于安全考虑,我在这里删除了 cookies
答案1
如果您需要的是 cookies,那么您可以尝试用实际更新的 cookies 替换 cookies 参数,为此您需要通过 cURL 登录到网站。
考虑到这是您创建的脚本,那么我们将使用$COOKIES
变量来定义更新的 cookies 文件。
打开检查元素并抓取表单,查找用户 id 和密码字段的出现情况 - 将结果代入下面的 cURL 命令。
COOKIES="cookies.txt"
curl -c $COOKIES --data "user=YOURUSER&pass=YOURPASS" https://login.site.com
生成的 cookie 可用于您的主 cURL 命令,类似这样的就足够了。
curl 'http://site.com' -H 'Referer: http://login.site.com' -b $COOKIES
当$COOKIES
用作 cookies 参数时,只需记住你必须将$COOKIES
文件放在与脚本所在的同一文件夹中 — 或者你需要指定的其他位置。好了,你明白了