我有2页: xyz.com/a
和xyz.com/b
。 我只能访问xyz.com/b
当且仅当我登录到xyz.com/a
第一。 如果访问xyz.com/b
无需通过其他去,我只是得到通过浏览器拒绝访问(无重定向登录)。 有一次,我在登录xyz.com/a
,我可以访问其他。
我的问题是使用curl命令这样做。 我可以成功登录到xyz.com/a
使用curl,但随后尝试xyx.com/b
,我得到拒绝访问。
我用的是以下几点:
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
我已经使用了第二行以与未经用户/密码部分审判,仍然无法正常工作。 这两个网页使用相同的CA,所以这不是一个问题。 有什么建议? 谢谢
该网站可能使用的cookie来存储您的会话信息。 当您运行
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
curl
运行两次,在两个单独的会话。 因此,第二命令运行时,由所述第一命令设置的cookie不可用; 它就像您登录到页面a
在一个浏览器会话,并试图访问页面b
在不同的一个。
什么,你需要做的是保存第一个命令创建的cookie:
curl --user user:pass --cookie-jar ./somefile https://xyz.com/a
然后运行第二时读回:
curl --cookie ./somefile https://xyz.com/b
或者你可以尝试下载在同一个命令这两个文件,我认为将使用相同的cookie。
您可能还需要通过浏览器登录并获得所有标题包括cookies的命令:
打开开发人员工具的网络选项卡,登录,浏览到所需的页面,请使用“复制为卷曲”。
一些谷歌搜索后,我发现这一点:
curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a
curl -b cookie.txt https://oursite/b
不知道,如果它的工作原理,但它可能会导致你在正确的方向。