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 相关文章推荐
destoon设置自定义搜索的方法
Jun 21 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
php把数组值转换成键的方法
Jul 13 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 PHP
PHP加密解密类实例代码
Jul 20 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
laravel 使用auth编写登录的方法
Sep 30 PHP
php 中self,this的区别和操作方法实例分析
Nov 04 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的中问验证码
2006/11/25 PHP
PHP 中文处理技巧
2010/04/25 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
php获取远程文件内容的函数
2015/11/02 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
pytest中文文档之编写断言
2019/09/12 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
explicit和implicit的含义
2012/11/15 面试题
初中生学习的自我评价
2013/11/14 职场文书
出生公证书样本
2014/04/04 职场文书
售房协议书范本2014
2014/10/23 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
公司催款律师函
2015/05/27 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android