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 相关文章推荐
《PHP编程最快明白》第七讲:php图片验证码与缩略图
Nov 01 PHP
PHP file_exists问题杂谈
May 07 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
PHP常用日期加减计算方法实例小结
Jul 31 PHP
php中的buffer缓冲区用法分析
May 31 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
PHP 采集程序原理分析篇
2010/03/05 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
python函数装饰器用法实例详解
2015/06/04 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
python中的随机函数小结
2018/01/27 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
python+opencv实现阈值分割
2018/12/26 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
NumPy统计函数的实现方法
2020/01/21 Python
创业计划书中要认真思考的问题
2013/12/28 职场文书
《四季》教学反思
2014/04/08 职场文书
优秀班组长事迹
2014/05/31 职场文书
技术员岗位职责范本
2015/04/11 职场文书
公安机关起诉意见书
2015/05/20 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
详解Vue3使用axios的配置教程
2022/04/29 Vue.js