在两个curl请求之间保存cookie

2023-12-29

我知道使用cURL我可以使用以下命令查看收到的 cookie/标头

curl --head www.google.com

我知道我可以使用以下方法将标头添加到我的请求中

curl --cookie "Key=Value" www.google.com

我目前正在测试一个需要持久cookie的问题,并且可能有很多cookie。

如何有效地保存两个之间的cookiecURL要求?

如果可能的话使用临时文件进行存储。


Use the --cookie-jar or --dump-header参数将接收到的 cookie 保存到文件中。这--cookie参数可以稍后从该文件中读回 cookie。

-b, --cookie

(HTTP) 将数据作为 cookie 传递到 HTTP 服务器。据推测,它是先前在“Set-Cookie:”行中从服务器接收到的数据。数据的格式应为“NAME1=VALUE1;NAME2=VALUE2”。

如果该行中没有使用“=”符号,则将其视为文件名,用于读取先前存储的 cookie 行,如果它们匹配,则应在本次会话中使用。使用此方法还会激活 cookie 引擎,这将使curl 也记录传入的 cookie,如果您将其与 -L, --location 选项结合使用,这可能会很方便。从中读取 cookie 的文件的文件格式应该是纯 HTTP 标头(Set-Cookie 样式)或 Netscape/Mozilla cookie 文件格式。

用 -b, --cookie 指定的文件仅用作输入。不会将 cookie 写入该文件。要存储 cookie,请使用 -c, --cookie-jar 选项.

如果您使用此选项,请务必小心,可能会发生多次传输。如果您使用 NAME1=VALUE1;格式,或者在文件中使用 Set-Cookie 格式并且不指定域,则 cookie 会针对任何域发送(即使在遵循重定向之后),并且无法由服务器设置的 cookie 进行修改。如果启用了 cookie 引擎并且服务器设置了同名的 cookie,则两者都将在将来传输到该服务器时发送,这可能不是您想要的。要解决这些问题,请在 Set-Cookie 中设置域(这样做将包括子域)或使用 Netscape 格式。

如果多次使用此选项,则将使用最后一次。

-c, --cookie-jar

(HTTP) 指定您希望curl 在完成操作后将所有cookie 写入哪个文件。Curl 写入之前从指定文件读取的所有 cookie 以及从远程服务器接收的所有 cookie。如果不知道 cookie,则不会写入任何数据。该文件将使用 Netscape cookie 文件格式写入。如果将文件名设置为单破折号“-”,则 cookie 将写入标准输出。

这个命令行选项将激活cookie引擎,使curl记录并使用cookie。激活它的另一种方法是使用 -b, --cookie 选项。

如果无法创建或写入cookie jar,则整个curl操作不会失败,甚至不会明确报告错误。使用 -v 将显示警告,但这是您获得的有关这种可能致命情况的唯一可见反馈。

自 7.43.0 起,以 Set-Cookie 格式导入且不带域名的 cookie 不会通过此选项导出。

如果多次使用此选项,则将使用最后指定的文件名。

-D, --dump-header

将协议头写入指定文件。

当您想要存储 HTTP 站点发送给您的标头时,可以方便地使用此选项。然后可以使用 -b, --cookie 选项在第二次curl调用中读取标头中的cookie! -c, --cookie-jar 选项是存储 cookie 的更好方法.

在 FTP 中使用时,FTP 服务器响应行被视为“标头”,因此保存在那里。

如果多次使用此选项,则将使用最后一次

或者,不使用命令行cURL app https://curl.haxx.se,编写一些使用的代码libCurl 库 https://curl.haxx.se/libcurl/。这将使您能够更直接地控制 cookie 处理。 libCurl 有几个与 HTTP cookie 相关的功能:

选项curl_easy_getinfo():

  • CURLINFO_COOKIELIST https://curl.haxx.se/libcurl/c/CURLINFO_COOKIELIST.html- 获取所有已知的cookie

选项curl_easy_setopt():

  • CURLOPT_COOKIE https://curl.haxx.se/libcurl/c/CURLOPT_COOKIE.html- 设置HTTP Cookie头的内容

  • CURLOPT_COOKIEFILE https://curl.haxx.se/libcurl/c/CURLOPT_COOKIEFILE.html- 从中读取cookie的文件名

  • CURLOPT_COOKIEJAR https://curl.haxx.se/libcurl/c/CURLOPT_COOKIEJAR.html- 存储 cookie 的文件名

  • CURLOPT_COOKIE 会话 https://curl.haxx.se/libcurl/c/CURLOPT_COOKIESESSION.html- 开始一个新的cookie会话

  • CURLOPT_COOKIELIST https://curl.haxx.se/libcurl/c/CURLOPT_COOKIELIST.html- 添加或操作内存中保存的cookie

然后,您可以根据需要存储 cookie,并根据需要将它们分配给以后的 HTTP 会话。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在两个curl请求之间保存cookie 的相关文章

  • 连接数据库错误类型:2002:权限被拒绝

    我正在尝试使用以下脚本连接数据库 cxn test php
  • HTTP请求的内容长度>正文大小

    我正在管理一个网站 该网站过去几个月在使用 MVC 3 0 ASP net 构建的 IIS 7 5 上运行良好 当我们的 AJAX POST 请求 通过 jQuery 触发 因发布的 JSON 被截断而失败时 我们时不时地会遇到一个问题 到
  • Node.js:在检索 http 请求正文之前断开 http 请求连接

    我正在用 Node js 编写一个 http 服务器 我有一个客户端通过 HTTP POST 多部分 数据 将大文件上传到该服务器 我想接受唯一使用有效文件名上传文件的连接 我有一些条件 在服务器检索数据之前应断开无效文件名连接 我不知道如
  • Internet Explorer 11 不会在网站上设置 cookie

    由于某种原因 IE11 仅限 IE11 与其他 IE9 和 IE10 一起测试 不会在我一直在处理的网站上创建会话 因此 这意味着网站登录等基本功能将无法使用 在其他浏览器上 这工作得很好 我研究了一下 发现 IE 不能与带下划线的域一起使
  • C++头文件问题

    我在处理类时尝试了一些 C 代码 这个问题出现在我身上 并且让我有点烦恼 我创建了一个包含类定义的头文件和一个包含实现的 cpp 文件 如果我在不同的 cpp 文件中使用此类 为什么要包含头文件而不是包含类实现的 cpp 文件 如果我包含类
  • HTML5 最佳实践;节/标题/旁白/文章元素[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 网络上 以及 stackoverflow 上 有足够的有关 HTML5 的信息 但现在我对 最佳实践 感到好奇 像节 标题 文章这样的标签是新的
  • 如何找出数据包的HTTP头长度?

    我知道如何手动执行此操作 通过查看十六进制转储 我怎样才能自动获得相同的信息 我必须使用 API 吗 我有wireshark 和Microsoft 网络监视器 这可以通过简单地实现Lua解析器 http wiki wireshark org
  • Cookie 过期时间格式

    我从谷歌浏览器的 Cookies 文件和其中的一列创建了数据库cookies表是expires utc 该列的格式类似于 13169399213145330 这更像是unix时间 但是当我尝试使用 unix 时间转换器时 它给出了错误的值
  • PHP 生成文件供下载然后重定向

    我有一个 PHP 应用程序 它创建一个 CSV 文件 强制使用标头下载该文件 这是代码的相关部分 header Content Type application csv header Content length filesize NewF
  • Crystal lang如何从http获取二进制文件

    In Ruby require open uri download open http example com download pdf IO copy stream download my file pdf 如何在水晶中做同样的事情 我们
  • 如何在 G-WAN 中添加 HTTP/2

    我想知道是否可以通过使用解决方案 nghttp2 https nghttp2 org https nghttp2 org 很抱歉这么晚才回答 出于某种原因 Stackoverflow 没有通知我们这个问题 我之所以找到它只是因为收到了更新的
  • Android 套接字和 HTTP 响应标头

    有趣的是 我可能无意中找到了解决方案是否可以使用普通套接字连接发送 HTTP 请求并接收没有标头的响应 https stackoverflow com questions 8320574 我希望我忽略了一些东西 无论如何 我正在连接到 We
  • C++ 实现友元/内联函数

    我似乎找不到这个新手问题的答案 如果我有课 头文件 h Class X public friend bool operator const X const X inline size type rows const ETC 当我去实现X的
  • 同一域上的多个 Django 站点 - CSRF 失败

    我有两个应用程序在同一域的不同端口上运行 都使用 csrf 中间件 当我登录其中一个应用程序时POST从另一个提交失败 我推测是因为SESSION COOKIE DOMAIN是一样的 我尝试改变SESSION COOKIE NAME 但是
  • Php Curl HTTP POST REQUEST 使用嵌套键值对设置自定义标头

    如何使用 Curl 在 php 中设置此标头 CustomInfo 元素是数组 嵌套键值对 AuthenticationInfo 元素是数组 嵌套键值对
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 使用 cURL PHP 发布到 Facebook 用户的墙

    我正在存储 facebook 用户 ID 和访问令牌 我可以将此信息发布到选定用户的留言墙上吗 在这里找到以下代码 http developers facebook com docs reference api post http deve
  • 如何向 ListView 添加粘性标题?

    我有一个 listView 所以我想添加一个粘性标头 以便它粘在 listView 的顶部 当 listView 中开始不同的类别时 不同的标头会取代它 就像联系人一样 其中 a 为粘性标头位于顶部 直到 b 出现 有没有图书馆可以做 我正
  • 如何让 HttpClient 返回状态码和响应正文?

    我试图让 Apache HttpClient 触发 HTTP 请求 然后显示 HTTP 响应代码 200 404 500 等 以及 HTTP 响应正文 文本字符串 重要的是要注意我正在使用v4 2 2因为大多数 HttpClient 示例都

随机推荐

  • 使用 AWS amplify 和 graphql 创建新用户时出现“未经授权”错误

    所以我认为这个问题来自于我不太理解 AWS cognito 用户池和 graphql 模式中的身份验证规则之间的关系 当我运行下面的代码时 我收到消息 未授权访问 User 类型上的 createUser import React from
  • 从模板中获取 Django 表单小部件的类型

    我正在迭代表单的字段 对于某些字段 我想要稍微不同的布局 需要更改 HTML 为了准确地做到这一点 我只需要知道小部件类型 它的类名或类似的名称 在标准 python 中 这很容易 field field widget class name
  • AS3中dispatchEvent()可以带参数吗?

    看这个例子 addEventListener myEventType myFunction argument function myFunction args String Function return function evt Even
  • 使用 Json.NET 读取大整数

    我有一些带有巨大整数的 json 大约有几百位数字 我想将它们解析为 BouncyCastle 的BigInteger https github com onovotny BouncyCastle PCL blob pcl crypto s
  • 如何在 Mac Os X 上将用户添加到 apache 组?

    我实际上正在尝试在我的 MacBook Pro Mac OS X 10 6 上运行 Symfony2 当我通过 apache 启动应用程序时 所有缓存和日志文件都是由 www www 用户 组创建的 但是 我已经必须使用我自己的用户在 CL
  • 使用 rvest 跟随带有相对路径的“下一个”链接

    我正在使用rvest从页面中抓取信息的包http www radiolab org series podcasts http www radiolab org series podcasts 抓取第一页后 我想点击底部的 下一步 链接 抓取
  • 可以将PreparedStatement.addBatch()用于SELECT查询吗?

    想象一下 我有 100 个 SELECT 查询 它们因一个输入而异 可以使用PreparedStatement 作为该值 我在网上看到的所有文档都是关于批量插入 更新 删除的 我从未见过用于 select 语句的批处理 这可以做到吗 如果是
  • 有哪些好的实体框架替代品[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我现在正在使用实体框架 并且经常需要编写内联sql 因为实体框架不支持全文搜索和其他功能 是否有一个 ORM 具有许多支持高级查询的功能
  • Wix 和 .NET Framework(先决条件)

    当客户端计算机上尚未安装所需的 NET Framework 时 如何让 Wix 包下载该包 我已经有条件检查已安装的 NET 版本 但我不确定如何在找不到时下载并安装它 ClickOnce 通过检查属性页中的先决条件自动执行此操作 由于一些
  • android-viewflipper 的简单淡出和淡入动画

    我是android新手 对android动画了解不多 我有一个取景器 我想在其中的图像之间制作动画 这是代码 runnable new Runnable public void run handler postDelayed runnabl
  • Oracle,向字符串(不是数字)添加前导零

    我正在使用 Oracle 工作空间是 TOAD 我需要将字符串设置为短接 10 个字符 然后添加前导零以使它们全部为 10 位数字字符串 例如 如果我有一个像这样的字符串 12H89 需要是 0000012H89 或者 1234 变为 00
  • C++中**是什么意思? [复制]

    这个问题在这里已经有答案了 例如 bool insertInFront IntElement head int data IntElement newElem new IntElement if newElem return false n
  • Google 通讯录 api (gdata) 同步低分辨率照片

    我正在使用 google 联系人 api gdata 在 google 联系人中设置联系人的照片 我正在使用 fiddler 我看到请求是根据Google 通讯录示例 https developers google com google a
  • Angular Spectator setInput 不适用于非字符串输入

    我已经成功地将我的项目转换为使用 Jest 代替 Karma Jasmine 并且我有很多测试运行得很好 我正在尝试使用 Spectator 5 2 1 进行一个非常简单的测试 但它不起作用 我正在尝试测试使用 mat table 呈现表格
  • Rails 路由的 API 版本控制

    我正在尝试像 Stripe 那样对我的 API 进行版本控制 下面给出的最新 API 版本是 2 api users返回 301 api v2 users api v1 users返回版本 1 的 200 个用户索引 api v3 user
  • 多条件IF语句

    我有一个包含多个条件的 if 语句 但我似乎无法正确执行 if ISSET SESSION status SESSION username qqqqq ISSET SESSION status SESSION company wwwwww
  • Kotlin 中通过反射获取 Enum 值

    您将如何用 Kotlin 重写以下 Java 代码 SuppressWarnings unchecked rawtypes static Object getEnumValue String enumClassName String enu
  • 如何将顶视图折叠成较小尺寸的视图?

    这个问题之前曾以过于宽泛和不清楚的方式提出过here https stackoverflow com q 47053822 878126 所以我使它更加具体 并提供了我所尝试的完整解释和代码 背景 我需要模仿谷歌日历在顶部有一个视图的方式
  • JavaScript 中的构造函数或对象继承

    我是 JavaScript 新手 本周开始学习 我已经完成了 CodeCademy 课程 实际上只是对象 1 2 部分 其余的很无聊 我以为我学会了构造函数的原型继承 但我已经开始观看了Douglas Crockford 高级 JavaSc
  • 在两个curl请求之间保存cookie

    我知道使用cURL我可以使用以下命令查看收到的 cookie 标头 curl head www google com 我知道我可以使用以下方法将标头添加到我的请求中 curl cookie Key Value www google com