CURL访问需要从不同页面login的页面
我有2页: xyz.com/a
和xyz.com/b
。 我只能访问xyz.com/b
当且仅当我先login到xyz.com/a
。 如果访问xyz.com/b
没有通过其他访问,我只是通过浏览器访问被拒绝(没有redirect到login)。 一旦我在xyz.com/a
login,我可以访问其他。
我的问题是使用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”。