设为首页 收藏本站
查看: 794|回复: 0

[经验分享] 一个简单PHP CURL类

[复制链接]

尚未签到

发表于 2018-12-22 12:45:52 | 显示全部楼层 |阅读模式
  这里要说明一下...这个类的形成是参考了晚上前辈们的代码加上我自己的理解见解而集成的...前辈们的代码出处已经忘记了
  我在这里感谢这些前辈们给我的启发...希望这个类能给大家带来帮助...如果有不足的地方...请大家多多指点指点

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

}





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-654421-1-1.html 上篇帖子: php.ini 安全配置 下篇帖子: lnmp编译php报错:libconv
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表