php-curl-class,一个简单PHP CURL类
这里要说明一下...这个类的形成是参考了晚上前辈们的代码加上我自己的理解见解而集成的...前辈们的代码出处已经忘记了
我在这里感谢这些前辈们给我的启发...希望这个类能给大家带来帮助...如果有不足的地方...请大家多多指点指点
这是一个PHP CURL的类
public $cookieFile; //cookie存放路径
public $loginUrl; //登录链接
public $loginFields; //登录参数
public $targetUrl; //目标地址
public $targetFields; //目标参数
这里是要说明的几个参数
$cookieFile保存的是CURL获取回来的COOKIE的文件存放的位置
$loginUrl;模拟登陆时用的链接
$loginFields;模拟登录时用到的参数 如账号密码等
$targetUrl;模拟提交,获取时用到的地址
$targetFields;模拟提交时用到的参数
用法简介
$curl=new curl($cookieFile); //初始化时载入COOKIE保存位置
//模拟登录
$curl->loginUrl="http://www.xxx.com"; //登录链接
$curl->loginFields="username=xxx&pwd=xxx"; //登录参数
$curl->curlLogin($ref,$header); //$ref 伪造来源地址 $header 伪造头部和IP信息
//模拟获取
$curl->targetUrl="http://www.xxx.com"; //目标链接
$curl->curGet($ref,$header); //$ref 伪造来源地址 $header 伪造头部和IP信息
//模拟提交
$curl->targetUrl="http://www.xxx.com"; //目标链接
$curl->targetFields="username=xxx&pwd=xxx"; //提交参数
$curl->curlPost($ref,$header); //$ref 伪造来源地址 $header 伪造头部和IP信息
====================Curl.class.php PHP代码如下=====================================================================
class curl{
public $cookieFile; //cookie存放路径
public $loginUrl; //登录链接
public $loginFields; //参数
public $targetUrl; //目标地址
public $targetFields; //目标参数
function __construct(){
$this->cookieFile='cookie.txt';
}
//模拟登录
function curlLogin($ref="",$head=""){
if($ref==""){
$referer="http://www.baidu.com/";
}
else{
$referer=$ref;
}
if($head==""){
$header=$this->randIP();
}
else{
$header=array_merge($head,$this->randIP());
}
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $this->loginUrl); // 要访问的地址
curl_setopt($curl, CURLOPT_HTTPHEADER , $header ) ; // 伪造访问IP
curl_setopt($curl, CURLOPT_REFERER, $referer); // 伪造来路
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $this->loginFields); // Post提交的数据包
curl_setopt($curl, CURLOPT_COOKIEJAR, $this->cookieFile); // 存放Cookie信息的文件名称
curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookieFile); // 读取上面所储存的Cookie信息
curl_setopt($curl, CURLOPT_TIMEOUT, 300); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
//模拟获取数据
function curlGet($ref="",$head=""){
if($ref==""){
$referer="http://www.baidu.com/";
}
else{
$referer=$ref;
}
if($head==""){
$header=$this->randIP();
}
else{
$header=array_merge($head,$this->randIP());
}
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $this->targetUrl); // 要访问的地址
curl_setopt($curl, CURLOPT_HTTPHEADER , $header); // 伪造访问IP
curl_setopt($curl, CURLOPT_REFERER, $referer); // 伪造来路
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_HTTPGET, 1); // 发送一个常规的GET请求
curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookieFile); // 读取上面所储存的Cookie信息
curl_setopt($curl, CURLOPT_TIMEOUT, 300); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
//模拟提交数据
function curlPost($ref="",$head=""){
if($ref==""){
$referer="http://www.baidu.com/";
}
else{
$referer=$ref;
}
if($head==""){
$header=$this->randIP();
}
else{
$header=array_merge($head,$this->randIP());
}
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $this->targetUrl); // 要访问的地址
curl_setopt($curl, CURLOPT_HTTPHEADER , $header); // 伪造访问IP
curl_setopt($curl, CURLOPT_REFERER, $referer); // 伪造来路
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $this->targetFields); // Post提交的数据包
curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookieFile); // 读取上面所储存的Cookie信息
curl_setopt($curl, CURLOPT_TIMEOUT, 300); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
//随机生成IP
function randIP(){
$ip_long = array(
array('607649792', '608174079'), //36.56.0.0-36.63.255.255
array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255
);
$rand_key = mt_rand(0, 9);
$ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
$headers['CLIENT-IP'] = $ip;
$headers['X-FORWARDED-FOR'] = $ip;
$headerArr = array();
foreach( $headers as $n => $v ) {
$headerArr[] = $n .':' . $v;
}
return $headerArr;
}
}
php-curl-class,一个简单PHP CURL类相关推荐
- 在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!
作者 | Bram Dingelstad 译者 | 弯月 责编 |徐威龙 封图| CSDN下载于视觉中国 我们都遇到过这种情况:有人发现了一个bug,然而这不是一般的软件bug,甚至都不是通常意义上的 ...
- python简单代码演示效果-演示python如何创建和使用一个简单的元类的代码
在做工程闲暇时间,将做工程过程比较重要的一些内容备份一下,如下内容段是关于演示python如何创建和使用一个简单的元类的内容,应该能对小伙伴们也有用途. #!/usr/bin/env python # ...
- boost::mpi模块实现一个简单的点类,我们可以构建、添加、比较和 连载
boost::mpi模块实现一个简单的点类,我们可以构建.添加.比较和 连载 实现功能 C++实现代码 实现功能 (boost::mpi模块实现一个简单的点类,我们可以构建.添加.比较和 连载 C++ ...
- python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?
原标题:技术图文:如何利用 Python 做一个简单的定时器类? 背景 今天在B站上看有关 Python 最火的一个教学视频 -- "零基础入门学习 Python",这也是我们 P ...
- C++ 一个简单的基类
继承 可在已有类的基础上添加功能 可给类添加数据 可修改类方法的行为 从一个类派生出另一个类时,原始类称为基类,继承类成为派生类 Webtown俱乐部决定跟踪乒乓球会员,设计一个简单的TableTen ...
- 实验3.2 定义一个简单的Computer类
题目 定义一个简单的Computer类,有数据成员芯片(cpu).内存(ram).光驱(cdrom)等等,有两个公有成员函数run.stop.cpu为CPU类的一个对象,ram为RAM类的一个对象,c ...
- 技术图文:如何利用 Python 做一个简单的定时器类?
背景 今天在B站上看有关 Python 最火的一个教学视频,零基础入门学习 Python,这也是我们 Python基础刻意练习活动 的推荐视频教程. 在学习魔法方法的时候,有一节视频是制作一个简单的定 ...
- uniapp APP 端 WebSocket 使用,实现一个简单 WebSocket 工具类
背景 最近有需求要做一个简单业务的 APP 应用,简单考虑选用 uniapp + uview + vue2.x 方案,因为还有web端页面也需要用到 WebSocket ,简单封装了一个适应 web ...
- [转贴]从零开始学C++之STL(二):实现一个简单容器模板类Vec(模仿VC6.0 中 vector 的实现、vector 的容量capacity 增长问题)...
首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下: C++ Code 1 2 template < class _Ty, cla ...
最新文章
- 计算机专业的教学内容落后实例,关于中职计算机专业教学现状的思考.doc
- 一个最为简单的jquery 分页实现方法!可以用用于理解js分页的原理。
- mybatis源码_Mybatis源码之SqlSession
- 使用场景_天然气重卡使用痛点及应用场景研究
- 爬虫爬评书吧_python scrapy+Mongodb爬取蜻蜓FM,酷我及懒人听书
- linux多线程学习(一)
- 中国锦鲤信小呆为兑奖曾刷爆信用卡、陷入焦虑?网友:但我仍想做锦鲤
- 优秀案例UI素材模板|深层解析iPhone手机APP页面怎么设计?
- python绑定句柄容易么_Python 有什么奇技淫巧?
- PetShop 4.0 官方详解
- Java Web基础入门第三十九讲 利用易宝第三方支付实现简单在线支付
- 黑塞矩阵和雅克比矩阵
- 微型计算机的微处理器芯片集成了,微型计算机的微处理器芯片上集成了什么东西...
- 4005. 取石子游戏
- Excel单元格插入图片,并自适应宽高——保姆级教程
- win10 此电脑中【设备和驱动器】位置出现空白图标
- Android版本+pwa,微博pwa版本下载
- freeswitch1.10.7 安装部署排坑
- 手机如何html5音频取,怎么用手机把视频里的音频提取?
- C/C++数据结构课程设计安排
热门文章
- LeetCode 696. 计数二进制子串
- LeetCode 504. 七进制数(进制转换)
- LeetCode 179. 最大数(自定义谓词函数--Lambda表达式--排序)
- go oracle编程,go基础编程(一):第一个go程序-hello word
- java json path_Java使用JSONPath解析JSON完整内容详解
- 华为正式发布鸿蒙智慧屏,5499 元、21999 元,2021 款华为智慧屏 V55/V85 明日 0 点正式开售:搭载鸿蒙系统...
- java toast_Android中Toast的用法简介
- c2c旅游springboot开源_重量级开源的商城和SpringBoot等项目看看有没有正好是你需要的...
- html 拍照旋转了90度_华为Mate X2概念图:可旋转正反三屏幕,单颗镜头在转轴上...
- java用栈处理四则运算_Java 用栈处理四则运算