继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

一个简单PHP CURL类

零基础h5前端入门培训
关注TA
已关注
手记 301
粉丝 37
获赞 253

这里要说明一下...这个类的形成是参考了晚上前辈们的代码加上我自己的理解见解而集成的...前辈们的代码出处已经忘记了

我在这里感谢这些前辈们给我的启发...希望这个类能给大家带来帮助...如果有不足的地方...请大家多多指点指点

这是一个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;    
   }

}

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP