使用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 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
一个典型的PHP分页实例代码分享
Jul 28 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
8个PHP数组面试题
Jun 23 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
Python中单例模式总结
2018/02/20 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
对python中的argv和argc使用详解
2018/12/15 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
存储过程的优缺点是什么
2015/01/10 面试题
大学生党员自我批评
2014/02/14 职场文书
揭牌仪式主持词
2014/03/19 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
PHP中多字节字符串操作实例详解
2021/08/23 PHP