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

摘要:
卷曲功能。操作cookie,模拟爬虫,模拟刷cookie实例:1˂?

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

免责声明:文章转载自《PHP curl函数模拟爬虫(操作cookie)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sql 语句实现一串数字位数不足在左侧补0的技巧1050 循环数组最大子段和下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Apache HTTP服务器扩展模块的工具-apxs

1.安装httpd # yum install httpd    # service httpd start  在地址栏里输入http://172.16.22.1(你输入你自己的IP地址,这个是我的),验证web服务是否可以正常工作。 2.安装mysql 方法和LAMP(linux下apache+mysql+php)平台编译安装的实现的安装mysql的...

推荐一个集成环境 XAMPP

摘自:http://blog.sina.com.cn/s/blog_72c4b92501012ll7.html 一个新手接触 Joomla! 的过程应该是这样的:看到这个词之后首先要弄明白“什么是Joomla!”,然后就想“试用一下看看”。可是,Joomla! 是 web 程序,它需要有服务器环境才能运行。如果你还不了解 Joomla! 是否合你意,就贸然...

【PHP】你使用过redis做异步队列么,是怎么用的?有什么缺点?

Redis设计主要是用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列。 它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列; 另外,做消息队列的其他特性例如FIFO(先入先出)也很容易实现,只需要一个list对象从头取数据,从尾部塞数据即可; Redis能做消息队列还得益于其list对象blpop brpop接口以及P...

laravel框架使用生涯

手工安装laravel http://laravelacademy.org/resources-download 1、将下载的文件复制到虚拟主机目录 2、在Apache的配置文件配置一个虚拟主机【注意,需要指向 public目录下】 <VirtualHost *:80> DocumentRoot "C:phpStudyWWWlarav...

用Zend Encoder加密PHP文件和PHP 优化配置

在发布一个你写好的PHP程序时,你是不是担心自已辛苦写出来的成果会被别人占为已有呢?其实我们可以用Zend Encoder为我们的PHP文件加上一层保护壳。 软件版本:2.0.1软件大小:10.2M适用平台:Win9X/2000/XP官方网址:http://www.zend.com/store/products/zend-encoder.php软件的使用方...

PHP常用符号和函数

(转)最近在写PHP程序的时候发现了一些特殊的PHP符号,例如连续小于符号,三个小于符号,eot,eod,echo示例,print示例等,突然间 发现用这么久的PHP了,竟然连PHP的基本符号都没有认全,看到@号还查了半天才知道什么意思.把基本符号和一些外面常见的PHP符号整理成了列表,在我的博客上帖一下吧,需要的朋友们可以参考下PHP相关的特殊符号~注解...