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 特殊字符处理函数
Sep 05 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
php 文件上传代码(限制jpg文件)
Jan 05 PHP
php stream_get_meta_data返回值
Sep 29 PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 PHP
php实现的统计字数函数定义与使用示例
Jul 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
php制作动态随机验证码
2015/02/12 PHP
详解PHP数组赋值方法
2015/11/07 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python读取网页内容的方法
2015/07/30 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
在pycharm中显示python画的图方法
2019/08/31 Python
python生成任意频率正弦波方式
2020/02/25 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
服务之星事迹材料
2014/05/03 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
金陵十三钗观后感
2015/06/04 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书