PHP curl函数模拟爬虫(操作cookie)

curl函数.操作cookie,模拟爬虫

模拟cookie刷贴实例:

 1 <?php
 2     $ch = curl_init();
 3     //保存该次请求的cookie内容到文件cookie.txt
 4     curl_setopt($ch, CURLOPT_COOKIEJAR, ”E:/cookie.txt”);
 5     ///要请求的链接,此链接请求后必须会写cookie到客户端(一般这样的链接均为登陆验证页面,可以用httpWatch抓取url和需要post的数据)
 6     curl_setopt($ch, CURLOPT_URL,”http://www.mynit.net/login.php”);
 7     curl_setopt($ch, CURLOPT_POST, 1);
 8     curl_setopt($ch, CURLOPT_POSTFIELDS,“xx”)//xx代表要post出去的数据
 9     ob_start();       //开启浏览器缓存
10     curl_exec ($ch);
11     ob_end_clean();   //输出全部内容到浏览器
12     curl_close ($ch);
13     unset($ch);
14     $ch = curl_init();
15     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
16     //把原先产生的cookie文件,作为这次请求的cookie
17     curl_setopt($ch, CURLOPT_COOKIEFILE, ”E:/cookie.txt”);
18     //此链接为你要做的操作获得验证的链接,比如回复贴子处理页面
19     curl_setopt($ch, CURLOPT_URL,”http://www.mynit.net/post.php”);
20     curl_setopt($ch, CURLOPT_POST, 1);
21     curl_setopt($ch, CURLOPT_POSTFIELDS, ”xx”);//xx代表要post出去的数据
22     ///执行操作,如刷贴,如果要猛刷的就循环1000次,不够可以加。
23     $buf2 = curl_exec ($ch);
24     curl_close ($ch);
25     echo $buf2;//返回结果
26     ?>
 1 <?php
 2 
 3     /*
 4     #cookie用法
 5     */
 6     $cookie_jar = tempnam(‘./tmp’,'cookie1′);
 7     // login
 8     $c=curl_init(‘http://www.nbchem.com/user/login.php?user=yourname&password=pwd&act=1′);
 9     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
10     curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
11     curl_exec($c);
12     curl_close($c);
13     $c=”http://www.nbchem.com/vip/”;
14     $c=curl_init($c);
15     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
16     curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);
17     $res=curl_exec($c);
18     curl_close($c);
19     echo $res;
20     ?>

php curl cookie的使用 curl发送cookie的2种途径
curl的cookie怎么使用?新手都很头疼的,curl的参数太多了,其中cookie部分就涉及了4个。
当然了,手册上明白写的curl的cookie是3个,但是嘛,不是还有个header的参数嘛,里面可以包含cookie.
七巧游戏网(http://7game.net.cn/)的采集是基于curl库的。
curl非常的好用。最主要的是要熟悉curl_setopt的用法。
curl_setopt ($ch, CURLOPT_COOKIE , $cookie );
这里的cookie值要用;分开的,而不是用&。也不需要用urlencode编码,当然了,编码了就更好。
$cookie = “a=b;c=d;name=方世玉”;
注意使用这个的时候,不可在 curl_setopt ($ch, CURLOPT_HTTPHEADER , $header );
的$header里包含Cookie参数,否则会重叠,造成cookie不可预见的情况发生。
如下代码是用来分析IE里的cookie的,就是c:\document …..\cookie里的文本

function join_cookie($cook)
{
foreach( $cook as $k=>$v )
{
$d[] =$k.”=”.$v;
}
$data = implode(“;”,$d);
return $data;
}

function pase_cookie($cookFile,$encode=true)
{
$cookie = file_get_contents ( $cookFile );
$citem = explode(“*\n”,$cookie); //pr($citem);
foreach( $citem as $c )
{
list($ckey,$cvalue) = explode(“\n”,$c);
if($ckey!=”)$cook[$ckey] = $cvalue;
}
return $cook;
//pr($cook);
}

++++++++++++++++++++++++++++++++++++++++
$cookie_jar   =   ‘cookie.txt ‘;
$data   =   array( ‘mvfAdminMonths ‘       =>   array( ’200706 ‘, ’200707 ‘),
‘mvfSiteProvinces ‘   =>   ‘Beijing ‘,
‘whichFirst ‘           =>   ‘AS ‘,
‘__act ‘                 =>   ‘__id.22.SeatsQuery.adp.actList ‘,
‘submit.x ‘=>   ’28 ‘,
‘submit.y ‘=>   ’9 ‘);
$ch   =   curl_init();
curl_setopt($ch,   CURLOPT_URL, ‘http://toefl.etest.edu.cn/cn/SeatsQuery ‘);
curl_setopt($ch,   CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,   CURLOPT_RETURNTRANSFER,false);
curl_setopt($ch,   CURLOPT_COOKIEJAR,   $cookie_jar);
echo   curl_exec($ch);
sleep(30);
$data   =   array( ‘mvfAdminMonths ‘       =>   ’200706 ‘,
‘mvfAdminMonths ‘       =>   ’200707 ‘,
‘mvfSiteProvinces ‘   =>   ‘Beijing ‘,
‘whichFirst ‘           =>   ‘AS ‘,
‘__act ‘                 =>   ‘__id.22.SeatsQuery.adp.actList ‘,
‘submit.x ‘=>   ’28 ‘,
‘submit.y ‘=>   ’9 ‘);
$ch2   =   curl_init();
curl_setopt($ch2,   CURLOPT_URL, ‘http://toefl.etest.edu.cn/cn/SeatsQuery ‘);
curl_setopt($ch2,   CURLOPT_POSTFIELDS,$data);
curl_setopt($ch2,   CURLOPT_RETURNTRANSFER,false);
curl_setopt($ch2,   CURLOPT_COOKIEFILE,   $cookie_jar);
echo   curl_exec($ch2);
curl_close($ch);

获取cookie要指定cookie文件位置

类似于这样
curl_setopt($ch,   CURLOPT_COOKIEJAR,   $cookie_jar);
指定获取cookie位置

curl_setopt($ch2,   CURLOPT_COOKIEFILE,   $cookie_jar);
指定要传送的cookie的位置

原文地址:https://www.cnblogs.com/tohilary/p/2579501.html