有的网站会用不同的域名设置cookie,这样好像curl就会漏掉一些cookie。例如curl访问网站www.xxx.com首页时,它会立即设置一个属于xxx.com的cookie,在首页填写用户名确定后转到www.xxx.com/next.php,这时会设置一个属于www.xxx.com的cookie。请问这两个cookie要怎么成功获取呢?
回复讨论(解决方案) curlopt_cookie
设定http请求中“set-cookie:”部分的内容。
curlopt_cookiefile
包含cookie信息的文件名称,这个cookie文件可以是netscape格式或者http风格的header信息。
curlopt_cookiejar
连接关闭以后,存放cookie信息的文件名称
curlopt_cookie
设定http请求中“set-cookie:”部分的内容。
curlopt_cookiefile
包含cookie信息的文件名称,这个cookie文件可以是netscape格式或者http风格的header信息。
curlopt_cookiejar
连接关闭以后,存放cookie信息的文件名称
谢谢你的回复
访问首页时,首页会生成属于xxx.com的cookie,curl取不到这个cookie:
$ch = curl_init();
curl_setopt($ch, curlopt_url, 'http://www.xxx.com');
curl_setopt($ch, curlopt_connecttimeout, 5);
curl_setopt($ch, curlopt_followlocation, 1);
curl_setopt($ch, curlopt_cookiejar, $cookiefile);
curl_setopt($ch, curlopt_header, 0);
curl_setopt($ch, curlopt_returntransfer, 1);
$contents = curl_exec($ch);
curl_close($ch);
填写用户名确定后,转到第二页时,会生成属于www.xxx.com的cookie,curl可以成功取得这个cookie:
$ch = curl_init();
curl_setopt($ch, curlopt_url, 'http://www.xxx.com/next.php');
curl_setopt($ch, curlopt_connecttimeout, 5);
curl_setopt($ch, curlopt_followlocation, 1);
curl_setopt($ch, curlopt_post, 1);
curl_setopt($ch, curlopt_postfields, $postdata);
curl_setopt($ch, curlopt_cookiefile, $cookiefile);
curl_setopt($ch, curlopt_cookiejar, $cookiefile);
curl_setopt($ch, curlopt_header, 0);
curl_setopt($ch, curlopt_returntransfer, 1);
$contents = curl_exec($ch);
curl_close($ch);
为什么curl访问http://www.xxx.com的时候,www.xxx.com会生成一个属于xxx.com的cookie呢?这会不会就是curl取不到cookie的原因?
具体情况要具体分析,你最好给出真实的 url
具体情况要具体分析,你最好给出真实的 url
已经解决了,原来是js设置的,谢谢你。还有一个问题想问你一下:curl_exec()之后就立即curl_close()和curl_exec()之后暂停5分钟再curl_close(),那对于被curl的网站来说,会有什么不同呢? 没有什么不同
没有什么不同
非常感谢! 楼主您好!我好像遇到了和你一样的问题,使用curl库时request里的cookies好像缺少了一部分,请问你是怎么解决的?
