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

标签 linux bash cookies curl http-authentication

我有 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。

关于linux - CURL 用于访问需要从其他页面登录的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12399087/

相关文章:

linux - 在普通用户无法访问 etc/shadow 文件的情况下,passwd 命令如何允许他更改密码?

php - 如何确定哪个 PHP 代码打开了未关闭的 MySQL 连接

symfony - 在 Controller 中设置 Cookie 变量 - Symfony2

c++ - Qt + conan = 使用空输出设备,没有可用的

linux - 无法在 Ubuntu trusty64 上加载 Vim 插件

linux - 如何创建可以与普通 bash 命令结合使用的 "string"别名?

python - 从 python 解释器内部创建管道

linux - 使用 bash 脚本批量重命名 FTP 服务器上的文件

security - HTTP cookies 端口特定吗?

api - 基于 Cookie 的身份验证和 Web API