PHP CURL获取cookies模拟登录!
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转码以后
发表评论
名称(*必填)
邮件(选填)
网站(选填)
记住我,下次回复时不用重新输入个人信息