>백엔드 개발 >PHP 튜토리얼 >curl保存cookies的问题

curl保存cookies的问题

WBOY
WBOY원래의
2016-06-23 13:19:311260검색

有的网站会用不同的域名设置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好像缺少了一部分,请问你是怎么解决的?

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.