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 相关文章推荐
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
php上传大文件设置方法
Apr 14 PHP
PHP二维数组去重算法
Dec 17 PHP
php使用curl实现简单模拟提交表单功能
May 15 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
Git命令之分支详解
Mar 02 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绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
Python实现爬取逐浪小说的方法
2015/07/07 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
心灵点滴观后感
2015/06/02 职场文书
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python
centos7安装mysql5.7经验记录
2022/05/02 Servers
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python