CURL访问需要从不同页面login的页面

我有2页: xyz.com/axyz.com/b 。 我只能访问xyz.com/b当且仅当我先login到xyz.com/a 。 如果访问xyz.com/b没有通过其他访问,我只是通过浏览器访问被拒绝(没有redirect到login)。 一旦我在xyz.com/alogin,我可以访问其他。

我的问题是使用curl命令。 我可以使用curl成功login到xyz.com/a ,但是请尝试xyx.com/b并且我拒绝访问。

我使用以下内容:

 curl --user user:pass https://xyz.com/a #works ok curl https://xyz.com/b #doesn't work 

我已经尝试使用第二行&没有用户/密码部分,仍然无法正常工作。 这两个页面使用相同的CA,所以这不是一个问题。 有什么build议么? 谢谢

该网站可能使用cookies来存储您的会话信息。 当你跑步

 curl --user user:pass https://xyz.com/a #works ok curl https://xyz.com/b #doesn't work 

curl运行两次,分两次进行。 因此,当第二个命令运行时,由第一个命令设置的cookie不可用; 就像您在一个浏览器会话中login页面a ,并尝试访问不同的页面b

你需要做的是保存由第一个命令创build的cookie:

 curl --user user:pass --cookie-jar ./somefile https://xyz.com/a 

然后在运行第二个时再读取它们:

 curl --cookie ./somefile https://xyz.com/b 

或者,您可以尝试使用相同的命令下载这两个文件,我认为这将使用相同的cookie。

经过Googlesearch之后,我发现这个:

 curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a curl -b cookie.txt https://oursite/b 

不知道它是否有效,但它可能会导致你在正确的方向。

您也可以通过浏览器login并获取包含cookies在内的所有标题的命令:

打开“开发者工具”的“networking”选项卡,login,导航到所需的页面,使用“复制为cURL”。

截图