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的位置