php中curl获取返回页面的cookie

作者:袖梨 2022-06-24

curl可以获取返回页面设置的cookie, 原理跟get_headers是一样的, 在返回的头信息中将"Set-Cookie:"的内容取出来即可.

测试页面/设置cookie的页面:

test.php

 代码如下 复制代码

setcookie('test', 'sssss');
setcookie('xxx', 'www');

//获取cookie的脚本

 代码如下 复制代码

$url = 'http://localhost/test.php';

$ch = curl_init($url); //初始化
curl_setopt($ch,CURLOPT_HEADER,1); //将头文件的信息作为数据流输出
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //返回获取的输出文本流
curl_setopt($ch, CURLOPT_HEADER, 1);
$string = curl_exec($ch);
preg_match_all('/Set-Cookie:stest=(.*)/i', $string, $results);
var_dump($results);


获取cooke并保存到文件

 代码如下 复制代码

$url = "http://www.111com.net/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
$content = curl_exec($ch);
curl_close($ch);


curl参数介绍

CURLOPT_COOKIEJAR 用于保存 cookie 到文件
CURLOPT_COOKIEFILE 用于将保存的 cookie 文件发送出去
CURLOPT_COOKIE 用于发送 cookie 变量

所谓 在会话结束后就过期了 是因为浏览器不保存没有过期设定的 cookie 变量,所以关闭浏览器后再次请求时就没有 cookie 发送出去

curl 处理中,如果是一次做完,只需 CURLOPT_COOKIEJAR 就可以
若要分段处理则先 CURLOPT_COOKIEJAR,后 CURLOPT_COOKIEFILE
发送 cookie 文件内容的段,不要 CURLOPT_COOKIEJAR。以避免新的 cookie 变量的影响

相关文章

精彩推荐