使用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 相关文章推荐
Windows下的PHP5.0详解
Nov 18 PHP
php htmlspecialchars加强版
Feb 16 PHP
Windows 下的 PHP-PEAR 安装方法
Nov 20 PHP
php在文件指定行中写入代码的方法
May 23 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
PHP的Yii框架的基本使用示例
Aug 21 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 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函数之子字符串替换&amp;#65279; str_replace
2011/03/23 PHP
php去除重复字的实现代码
2011/09/16 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
php7下的filesize函数
2019/09/30 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
javascript几个易错点记录
2014/11/26 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
对于Python的Django框架部署的一些建议
2015/04/09 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
保密普查工作实施方案
2014/02/25 职场文书
网站客服岗位职责
2014/04/05 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
公司车辆管理制度
2015/08/04 职场文书
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python