使用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 相关文章推荐
php echo()和print()、require()和include()函数区别说明
Mar 27 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
Jun 05 PHP
php+xml实现在线英文词典查询的方法
Jan 23 PHP
php结合正则获取字符串中数字
Jun 19 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
基于PHP实现数据分页显示功能
May 26 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
python从入门到精通(DAY 3)
2015/12/20 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
Python如何输出警告信息
2020/07/30 Python
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
童装店创业计划书
2014/01/09 职场文书
安全标语口号
2014/06/09 职场文书
2016新年慰问信范文
2015/03/25 职场文书
孙振耀退休感言
2015/08/01 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers