使用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生成自己的LOG文件
Oct 09 PHP
PHP 图片上传代码
Sep 13 PHP
PHP中extract()函数的妙用分析
Jul 11 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
ci检测是ajax还是页面post提交数据的方法
Nov 10 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
php将服务端的文件读出来显示在web页面实例
Oct 31 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 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
默默简单的写了一个模板引擎
2007/01/02 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
对联广告js flash激活
2006/10/19 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python读取Excel的方法实例分析
2015/07/11 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
我未来的职业规划范文
2014/01/11 职场文书
房产委托公证书样本
2014/04/04 职场文书
卫生系统先进事迹
2014/05/13 职场文书
2014年党支部承诺书
2014/05/30 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
golang中的并发和并行
2021/05/08 Golang
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js