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入门教程 精简版
Dec 13 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP的Socket网络编程入门指引
Aug 11 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
php使用crypt()函数进行加密
Jun 08 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
为什么python比较流行
2020/06/19 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
Whistles官网:英国女装品牌
2020/08/14 全球购物
财务分析个人的自荐书范文
2013/11/24 职场文书
五一服装活动方案
2014/01/11 职场文书
门诊手术室工作制度
2014/01/30 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
海底两万里读书笔记
2015/06/26 职场文书
结婚司仪主持词
2015/06/29 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers