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 相关文章推荐
wordpress之wp-settings.php
Aug 17 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
php 操作调试的方法
Jul 12 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
YII框架常用技巧总结
Apr 27 PHP
laravel框架数据库配置及操作数据库示例
Oct 10 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
Jan 23 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/11/16 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
jquery map方法使用示例
2014/04/23 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
python妙用之编码的转换详解
2017/04/21 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
Python 读取位于包中的数据文件
2020/08/07 Python
python 如何实现遗传算法
2020/09/22 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
英文请假条
2014/04/11 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
说明书格式及范文
2014/05/07 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
复兴之路展览观后感
2015/06/02 职场文书
亮剑观后感600字
2015/06/05 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android
浅谈克隆 JavaScript
2021/11/02 Javascript
如何解决php-fpm启动不了问题
2021/11/17 PHP
Python代码实现双链表
2022/05/25 Python
JS实现简单的九宫格抽奖
2022/06/28 Javascript