linux - CURL 用于访问需要从其他页面登录的页面

我有 2 页:xyz.example/axyz.example/b。只有当且仅当我首先登录到 xyz.example/a 时,我才能访问 xyz.example/b。如果访问 xyz.example/b 而不经过另一个,我只是通过浏览器拒绝访问(没有重定向到登录)。在 xyz.example/a 登录后,我可以访问另一个。

我的问题是使用 curl 命令执行此操作。我可以使用 curl 成功登录到 xyz.example/a,但然后尝试 xyz.example/b 并被拒绝访问。

我使用以下:

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

我尝试在第二行中使用 & 而不使用用户/密码部分,但仍然无法正常工作。两个页面使用相同的 CA,所以这不是问题。

最佳答案

该网站可能使用 cookies存储您的 session 信息。当你运行时

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

curl 在两个单独的 session 中运行两次。因此,当第二个命令运行时,第一个命令设置的 cookie 不可用;这就像您在一个浏览器 session 中登录页面 a,并尝试在另一个浏览器 session 中访问页面 b

你需要做的是保存第一条命令创建的cookies:

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

然后在运行第二个时将它们读回:

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

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

https://stackoverflow.com/questions/12399087/

相关文章:

linux - 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - U

python - 为什么在 2012 年 python 中的 pandas 合并比 R 中的 dat

unix - 创建守护进程时执行双叉的原因是什么?

python - 在 Python 脚本中,如何设置 PYTHONPATH?

python - 如何处理boto3的错误?

python - isinstance ('aaa' , basestring) 和 isinsta

linux - 使用 Git 保留文件权限

python - 字典:获取键列表的值列表

linux - 如何在 Linux 上的 Bash 中一次删除多个文件?

python - 如何在python中向后循环?