卷曲访问需要从不同的页面的登录页面(CURL to access a page that requi

2019-06-18 03:54发布

我有2页: xyz.com/axyz.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,所以这不是一个问题。 有什么建议? 谢谢

Answer 1:

该网站可能使用的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。



Answer 2:

您可能还需要通过浏览器登录并获得所有标题包括cookies的命令:

打开开发人员工具的网络选项卡,登录,浏览到所需的页面,请使用“复制为卷曲”。



Answer 3:

一些谷歌搜索后,我发现这一点:

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

不知道,如果它的工作原理,但它可能会导致你在正确的方向。



文章来源: CURL to access a page that requires a login from a different page