PHP CURL获取cookies模拟登录的方法


Posted in PHP onNovember 04, 2013

要提取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://www.google.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://www.google.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;
?>
PHP 相关文章推荐
截获网站title标签之家内容的例子
Oct 09 PHP
php类
Nov 27 PHP
php下实现折线图效果的代码
Apr 28 PHP
PHP生成网页快照 不用COM不用扩展.
Feb 11 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
Jul 01 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
PHP实现生成数据字典功能示例
May 24 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
PHP字符串与数组处理函数用法小结
Jan 07 PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 PHP
php Session存储到Redis的方法
Nov 04 #PHP
在PHP中使用redis
Nov 04 #PHP
6种php上传图片重命名的方法实例
Nov 04 #PHP
php preg_replace替换实例讲解
Nov 04 #PHP
php define的第二个参数使用方法
Nov 04 #PHP
Linux编译升级php的详细方法
Nov 04 #PHP
php获取操作系统语言代码
Nov 04 #PHP
You might like
给多个地址发邮件的类
2006/10/09 PHP
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
php编写一个简单的路由类
2011/04/13 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
python对json的相关操作实例详解
2017/01/04 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
后进生转化工作制度
2014/01/17 职场文书
七年级数学教学反思
2014/01/22 职场文书
给老师的检讨书
2014/02/11 职场文书
网页美工求职信
2014/02/15 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
三好学生竞选稿
2015/11/21 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书