无法使bash不适用于特定网站

时间:2019-10-08 07:47:48

标签: php bash curl cookies

因此,我最近一直在为网站设置一堆插件,从中可以下载数据。一个特定的网站正在努力获得。我无法透露该网站的具体细节,但我会解释该过程。

首先,该站点使用标准的https://website/login.php,该标准的用户名,密码和csrf_token似乎是随机生成的。我在Chrome上运行登录名并检查了结果,然后将其复制到bash中。然后,我向其中添加了-c cookies.txt,以保存cookie以供将来使用,这似乎可以正常工作。然后,我点击了我想点击的URL,但是失败了。因此,以编程方式,它看起来如下(直接从检查的卷影(重击)中复制):

curl -c cookies.txt https://website/login.php \
        -H 'Accept-Encoding: gzip, deflate, br' \
        -H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
        -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.
        0.3809.132 Safari/537.36' \
        -H 'Content-Type: application/json;charset=UTF-8' \
        -H 'Accept: application/json, text/plain, */*' \
        -H 'Cookie: phpsessid=xxxx'
        --data "username=xxx&password=xxx&csrf_token=xxxx" --compressed

为简单起见,我在那里跳过了一些标题,但您明白了。我在这里所做的一切都是直接使用命令inspect,然后插入-c cookies.txt

在登录过程中,有三个连续的呼叫。第一个是login.php,然后是index.php,最后是welcome.php

如果我如上所述保存cookie,我可以看到文件完全恢复正常,但是如果我用index.php复制welcome.php-b cookies.txt的curl命令,我绝对可以没有反应。如果我使用-L进行重定向,则会收到错误消息,表明会话已过期,需要重新登录。

这里令人烦恼的是,如果我直接在现场使用该呼叫,则整个过程都可以进行。这里唯一的问题是,我将来需要手动登录该站点才能正常工作,而这正是我要解决的问题。

我不知道问题出在哪里,但是我似乎无法使保存在unix框上的cookie有效地传递到接下来的两个URL调用。任何帮助都将是超级。

P.S。我浏览了多个在线示例,这些示例说明了如何使用带有Cookie的CURL登录网站,它们似乎都通向同一条路。当我将wget--save-cookies选项一起使用时,我得到的响应也完全相同。

0 个答案:

没有答案