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 相关文章推荐
文件上传类
Oct 09 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
php设计模式 State (状态模式)
Jun 26 PHP
php判断ip黑名单程序代码实例
Feb 24 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
PHP实现生成推广海报的方法详解
Mar 14 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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
基于mysql的论坛(7)
2006/10/09 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python yield 使用方法浅析
2017/05/20 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
Django视图和URL配置详解
2018/01/31 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
求职信模板标准格式范文
2014/02/23 职场文书
入党函调证明材料
2014/12/24 职场文书
上学路上观后感
2015/06/16 职场文书
合作意向书怎么写
2019/06/24 职场文书