使用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-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
深入php list()函数的详解
Jun 05 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
PHP实现留言板功能的详细代码
Mar 25 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
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
详解JS函数stack size计算方法
2018/06/18 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Django多数据库的实现过程详解
2019/08/01 Python
Django模板语言 Tags使用详解
2019/09/09 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
python 模拟登陆163邮箱
2020/12/15 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
ASP.NET Core中的配置详解
2021/02/05 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
大学新生欢迎词
2014/01/10 职场文书
机修工工作职责
2014/02/21 职场文书
优秀班集体申报材料
2014/12/25 职场文书
党员个人总结范文
2015/02/14 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
运动员加油词
2015/07/18 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang