基于狂雨cms, 写了个ip代理, ip被封掉的可交流下

jasonchen   ·   发表于 2020-5-11   ·   技术交流

说明:个人是购买某ip代理

修改文件的路径:  项目根目录\extend\net\Http.php

只需修改 curlGet() 方法, 同时加1个代理ip的方法 xiongmaodaili()  即可.

代码如下

/**   
 * 说明:这个方法是自己加的
 * 熊猫代理    
 * 地址: http://www.xiongmaodaili.com/
 * 账号: xxx  
 */

public static function xiongmaodaili()
   {

       $orderno = 'xxx';//订单号
       $secret  = 'xxx';//密钥
       $time = time();

       $sign = strtoupper(md5("orderno={$orderno},secret={$secret},timestamp={$time}"));
       $auth = 'sign='.$sign.'&orderno='.$orderno.'&timestamp='.$time;

       return "Proxy-Authorization:".$auth;

   }

//通过curl get数据 
//说明: 这个方法是原先有,但修改了些参数
static public function curlGet($url,$timeout=60,$header="")
{

       //说明: 我的服务器是被 12zw点com 给封ip, 所以, 只有采集 12zw点com 才走代理
       $has_proxy = strpos($url,'12zw.com') != false ? true : false; //是否走代理   
       
       $header=empty($header)?explode("\r\n",self::defaultHeader()):array($header);
      
       if ($has_proxy){
           $proxy_header = self::xiongmaodaili();;
           if (count($header) > 1 ){
               $header[] = $proxy_header;
           } else {
               $header[0] .= $proxy_header;
           }
       }

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
   curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
   curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
   curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
   curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//模拟的header头   if(self::hasHttps($url)){
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
   }

   //自己加的代理逻辑,个人买的是按量计算 
    if ($has_proxy){
           curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,true);
           curl_setopt($ch,CURLOPT_PROXYAUTH,CURLAUTH_BASIC);//代理认证模式           
           curl_setopt($ch,CURLOPT_PROXYTYPE,CURLPROXY_HTTP);//使用http代理模式           
           curl_setopt($ch, CURLOPT_PROXY, "http://dynamic.xiongmaodaili.com:8088"); //按量计费的url
       }

   $result = curl_exec($ch);
   $http_code = curl_getinfo($ch,CURLINFO_HTTP_CODE);
   curl_close($ch);
   if($http_code==200){
   
       //说明 , 个人购买的这个代理, 如果没钱或者有错误,会返回这个东东, 自己加层判断.不同代理不一样
       if ($has_proxy && strpos($result,'"code":200')){ //说明代理有错误           
           return false;
       }
           
      return $result;
   }else{
      return false;
   }
}


大家多多交流ip代理的事. 同时欢迎推荐下ip代理稳定, 费用合理的ip代理服务商


0 条回复   |  直到 2020-5-11 | 985 次浏览
登录后才可发表内容