使用cURL获取当前会话的cookie

时间:2015-01-21 15:11:34

标签: bash curl cookies

我正在处理一个向URL发送POST请求的脚本,实际上我是在标题中手动发送cookie但是如何从当前的浏览器会话中获取它?

我使用了tcpdump和grep,但它确实是错误的选择:D 一些建议?

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

2 个答案:

答案 0 :(得分:6)

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

以下是主卷曲网站的示例,它使用来自文件cookies.txt的cookie来设置一些,同时在newcookies.txt中存储新的cookie。

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

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

例如,在进行登录过程时,可以重复使用来自cookie jar的cookie。

答案 1 :(得分:0)

我发现了一个链接,现在已经破了一个来自snipplr.com的例子。我将在此发布以供将来参考(对所有者的信用):

$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();