使用PHP curl模拟浏览器抓取网站信息


Posted in PHP onOctober 28, 2013

官方解释
curl是一个利用URL语法在命令行方式下工作的文件传输工具。curl是一个利用URL语法在命令行方式下工作的文件传输工具。
它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,
上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器, 通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

curl讲解一

PHP中curl函数应用
简单的来说一共四步
curl_init();
curl_setopt();
curl_exec();
curl_close();

最重要的命令就是 curl_setopt();

一个简单的post请求例子
index.php

<?php
$url = "http://www.mytest.com/curl/login.php";  //请求的url地址
$user = "zkg111"; //用户名
$pass = "123456"; 
$postdata = "user_name=".$user."&password=".$pass;  //请求的数据,以 & 符号分割
$curl = curl_init(); //开启curl
curl_setopt($curl, CURLOPT_URL, $url); //设置请求地址
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  //是否输出 1 or true 是不输出 0  or false输出
curl_setopt($curl, CURLOPT_POST, 1); //是否使用post方法请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);  //post数据 
echo $data = curl_exec($curl); //执行curl操作
curl_close($curl);
?>

 下面一个简单的例子,我随便打开了兄弟连的论坛,接着就模拟了一下兄弟连论坛的登陆,如果需要发帖的话原理都是一样的,转接页面,提交数据
特别注意的是cookie的保存目录 windows7下面必须是在./temp目录下,开始我自己创建了一个新文件夹,发现存是对的,但是cookie读取的时候不对,为此还在好多地方
提问,但是没有回答对的,折腾了好几天该了保存文件为./temp目录下才可以的,提醒别的朋友别和我一样瞎转
<?php
$url = "http://bbs.lampbrother.net/login.php";
$urls = "http://bbs.lampbrother.net";
$lgt = 0;
$user = "XXXX";
$pass = "XXXX";
$question = 0;
$hideid = 1;
 $cookie_file    =    tempnam('./temp','cookie');
 $postdata = "forward=&jumpurl=".$urls."&step=2&lgt=".$lgt."&pwuser=".$user."&pwpwd=".$pass."&question=".$question."&answer=&hideid=".$hideid;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 $data = curl_exec($ch);
curl_close($ch);
 //echo $data;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://bbs.lampbrother.net/');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_exec($ch);
curl_close($ch);
?>
PHP 相关文章推荐
如何做到多笔资料的同步
Oct 09 PHP
php运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP中常见的密码处理方式和建议总结
Oct 14 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
Laravel框架表单验证操作实例分析
Sep 30 PHP
Yii框架安装简明教程
May 15 PHP
thinkphp 框架数据库切换实现方法分析
May 18 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 PHP
php header功能的使用
Oct 28 #PHP
简单实用的.net DataTable导出Execl
Oct 28 #PHP
php json与xml序列化/反序列化
Oct 28 #PHP
php中的boolean(布尔)类型详解
Oct 28 #PHP
php中的比较运算符详解
Oct 28 #PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 #PHP
析构函数与php的垃圾回收机制详解
Oct 28 #PHP
You might like
PHP 加密与解密的斗争
2009/04/17 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
bootstrapValidator表单验证插件学习
2016/12/30 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
python中的装饰器详解
2015/04/13 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
python 生成图形验证码的方法示例
2018/11/11 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Python如何对XML 解析
2020/06/28 Python
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
销售总监工作职责
2013/11/21 职场文书
金融专业大学生自我评价
2014/01/09 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
火锅店的活动方案
2014/08/15 职场文书
单身申明具结书
2015/02/26 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers