PHP CURL获取cookies模拟登录!

2014 年 10 月 22 日4550

PHP CURL获取cookies模拟登录!

Author:flymorn Source:flymorn

Categories:PHP编程 PostTime:2011-8-6 22:52:36

正 文:

利用PHP的curl函数实现模拟登录的方法。最近,飘易需要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的更加厉害,以前伪造下USER-AGENT就可以抓数据,但是现在却不行了。利用抓包数据发现,Google判断了cookies,当你没有cookies的时候,直接返回302跳转,而且是连续几十个302跳转,根本抓不了数据。因此,在发送搜索命令时,需要先提取cookies并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了。这其实和论坛的模拟登录一个道理,先POST登录,获取cookies并保存,然后利用这个cookies访问就可以了。PHP代码如下:

<?php
header('Content-Type:text/html;charset=utf-8');$cookie_file=dirname(__FILE__).'/cookie.txt';
//$cookie_file=tempnam("tmp","cookie");//先获取cookies并保存
$url="http://http://www.zjjv.com//.hk";
$ch=curl_init($url);//初始化
curl_setopt($ch,CURLOPT_HEADER,0);//不返回header部分
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//返回字符串,而非直接输出
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);//存储cookies
curl_exec($ch);
curl_close($ch);//使用上面保存的cookies再次访问
$url="http://http://www.zjjv.com//.hk/search?oe=utf8&ie=utf8&source=uds&hl=zh-CN&q=qq";
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);//使用上面获取的cookies
$response=curl_exec($ch);
curl_close($ch);echo$response;?>

有问题,欢迎大家留言。

作者:flymorn

来源:flymorn

版权所有。转载时必须以链接形式注明作者和原始出处及本声明。

Tag:浏览(次)

上一篇:C# HttpWebRequest保存cookies模拟登录的方法!

下一篇:原创软件:飘易关键字排名批量查询工具分享!

2条评论 “PHP CURL获取cookies模拟登录!”

1 zuicaipiao

2012-1-10 16:51:44

谢谢博主的分享。
我有个问题,我是原封不动的copy了你的代码放我机器上试跑下,然后修改URL里的q的参数内容为中文:“测试”。发现出来的搜索结果页面是乱码的,为什么呢?q的参数是英文的就是正常的了。

2 回复楼上

2012-10-20 23:44:00

中文参数用urlencode转码以后

发表评论

名称(*必填)

邮件(选填)

网站(选填)

记住我,下次回复时不用重新输入个人信息

0 0