前一段时间使用CURL处理COOKIE时遇到了难题,今天希望能解决这个东西。
转 http://www.canbing.com/blog/read.php?entryid=19&page=1&part=1
模拟cookie刷贴实例:
-
- <?php
- $ch = curl_init();
- //保存该次请求的cookie内容到文件cookie.txt
- curl_setopt($ch, CURLOPT_COOKIEJAR, "E:/cookie.txt");
- ///要请求的链接,此链接请求后必须会写cookie到客户端(一般这样的链接均为登陆验证页面,可以用httpWatch抓取url和需要post的数据)
- curl_setopt($ch, CURLOPT_URL,"http://www.mynit.net/login.php");
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS,“xx”)//xx代表要post出去的数据
- ob_start(); //开启浏览器缓存
- curl_exec ($ch);
- ob_end_clean(); //输出全部内容到浏览器
- curl_close ($ch);
- unset($ch);
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
- //把原先产生的cookie文件,作为这次请求的cookie
- curl_setopt($ch, CURLOPT_COOKIEFILE, "E:/cookie.txt");
- //此链接为你要做的操作获得验证的链接,比如回复贴子处理页面
- curl_setopt($ch, CURLOPT_URL,"http://www.mynit.net/post.php");
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, "xx");//xx代表要post出去的数据
- ///执行操作,如刷贴,如果要猛刷的就循环1000次,不够可以加。
- $buf2 = curl_exec ($ch);
- curl_close ($ch);
- echo $buf2;//返回结果
- ?>
- /*
- #cookie用法
- */
- $cookie_jar = tempnam('./tmp','cookie1');
- // login
- $c=curl_init('http://www.nbchem.com/user/login.php?user=yourname&password=pwd&act=1');
- curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
- curl_exec($c);
- curl_close($c);
- $c="http://www.nbchem.com/vip/";
- $c=curl_init($c);
- curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);
- $res=curl_exec($c);
- curl_close($c);
- echo $res;
- ?>
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的位置