PHP curl实现抓取302跳转后页面的示例


Posted in PHP onJuly 04, 2014

PHP的CURL正常抓取页面程序如下:

$url = 'http://www.baidu.com';

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$ret = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch);

如果你抓取到的是302状态,是因为再抓取的过程中,有的跳转需要给下一个链接传递参数,而下一个链接同时也设置了如果没接收到相应的参数是为非法访问。

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');

显示就应该正常了。

上面用来抓取功能,几乎应该没问题的。你可以查一下CURLOPT_CUSTOMREQUEST相关资料。

使用一个自定义的请求信息来代替”GET”或”HEAD”作为HTTP请求。这对于执行”DELETE” 或者其他更隐蔽的HTTP请求。有效值如”GET”,”POST”,”CONNECT”等等。也就是说,不要在这里输入整个HTTP请求。例如输入”GET /index.html HTTP/1.0\r\n\r\n”是不正确的。

PHP 相关文章推荐
PHP 表单提交给自己
Jul 24 PHP
php5 pdo新改动加载注意事项
Sep 11 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 PHP
ThinkPHP查询返回简单字段数组的方法
Aug 25 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 #PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 #PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 #PHP
php+memcache实现的网站在线人数统计代码
Jul 04 #PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 #PHP
CodeIgniter安全相关设置汇总
Jul 03 #PHP
php使用pack处理二进制文件的方法
Jul 03 #PHP
You might like
PHP和XSS跨站攻击的防范
2007/04/17 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
jQuery中的100个技巧汇总
2016/12/15 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python list语法学习(带例子)
2013/11/01 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
详解Django中的过滤器
2015/07/16 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python自动化生成IOS的图标
2018/11/13 Python
Python命令行click参数用法解析
2019/12/19 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
网站域名和主机:Domain.com
2019/04/01 全球购物
Android面试题附答案
2014/12/08 面试题
儿科护理实习自我鉴定
2013/09/19 职场文书
有关环保的标语
2014/06/13 职场文书
会议通知范文
2015/04/15 职场文书
竞聘书的秘诀
2019/04/02 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
Python代码实现双链表
2022/05/25 Python