使用 cURL 获取当前 session 的 cookie

Grab current session's cookie with cURL

我正在编写一个将 POST 请求发送到 URL 的脚本,实际上我是在 header 中手动发送 cookie。但是如何获取来自当前浏览器 session?

我使用了 tcpdump 和 grep,但这确实是错误的选择:,D 有什么建议吗?

我不会从文件中获取它们,而是从浏览器中获取 session 并且不输入浏览器的 cookie 路径

Curl 可以为您处理;可以选择将 cookie 存储在 cookiejar 中并在后续请求中使用它们。

这是主 curl 站点的示例,它使用文件 cookies.txt 中的 cookie 来设置一些,同时将新的 cookie 存储在新 cookies.txt.

http://curl.haxx.se/docs/httpscripting.html#Cookie_Basics

curl --cookie cookies.txt --cookie-jar newcookies.txt  http://www.example.com

例如,在进行登录过程时,人们会重复使用 cookie jar 中的 cookie。

我发现 link 现在被 snipplr.com 中的示例破坏了。我将 post 放在这里以供将来参考(归功于所有者):

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

if (isset($_COOKIE[session_name()])) {
  curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.$_COOKIE[session_name()].'; path=/');
}

session_write_close();
$result = curl_exec($ch);

if (curl_errno($ch)) {
  echo 'curl error: '.curl_error($ch);   
}

curl_close($ch);
session_start();