16

我一直在寻找一种方法来指定 CURL 的 cookie 数据。我找到了一些关于如何从访问过的页面保存 cookie 的解决方案,但这不是我需要的。我想要的是,自己为 cookie 编写数据,所以 CURL 使用它。

4

3 回答 3

22

您可以使用curl_setoptCURLOPT_COOKIE 常量:

<?php
// create a new cURL resource
$ch = curl_init();

// cookies to be sent
curl_setopt($ch, CURLOPT_COOKIE, "fruit=apple; colour=red");
于 2012-05-13T08:34:42.270 回答
20

您真的应该阅读文档- 它列出了您期望的关键字,并包含许多有用的信息:

-b, --cookie

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

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

请注意,使用 -b, --cookie 指定的文件仅用作输入。文件中不会存储任何 cookie。要存储 cookie,请使用 -c、--cookie-jar 选项,或者您甚至可以使用 -D、--dump-header 将 HTTP 标头保存到文件中!

如果多次设置此选项,则最后一个将是使用的那个。

于 2012-05-13T08:33:59.453 回答
2

cURL 可以使用Netscape 格式的 cookie 文件。只需自己创建这样一个文件并用作CURLOPT_COOKIEFILE选项。

于 2012-05-13T08:33:38.650 回答