使用php+curl伪造IP进行url访问

某些网站是通过请求头的”X-Forwarded-For”值来获取访问者的ip,而请求头是可以修改的,所以很多网站都可以通过伪造请求头来绕过ip检测,这时我们就会想到了PHP内有个神器曰为:curl,于是乎,有了以下代码:

  1. function task() {
  2.         $url = "url";
  3.         $headers = randIp();
  4.         $curl = curl_init();
  5.         curl_setopt($curl, CURLOPT_URL, $url);
  6.         curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
  7.         curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  8.         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  9.         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  10.         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  11.         curl_setopt($curl, CURLOPT_USERAGENT,  "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0");      //模拟浏览器类型
  12.         curl_setopt($curl, CURLOPT_TIMEOUT, 300);                               // 设置超时限制防止死循环    
  13.         curl_setopt($curl, CURLOPT_HEADER, 0);                                  // 显示返回的Header区域内容    
  14.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);                          // 获取的信息以文件流的形式返回
  15.         $tmpInfo = curl_exec($curl);
  16.         if (curl_errno($curl)) {
  17.             print "Error: " . curl_error($curl);
  18.         } else {
  19.             curl_close($curl);
  20.         }
  21.     }
  22. //此函数提供了国内的IP地址
  23. function randIP(){
  24.        $ip_long = array(
  25.            array('607649792', '608174079'), //36.56.0.0-36.63.255.255
  26.            array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
  27.            array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
  28.            array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
  29.            array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
  30.            array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
  31.            array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
  32.            array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
  33.            array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
  34.            array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255
  35.        );
  36.        $rand_key = mt_rand(0, 9);
  37.        $ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
  38.        $headers['CLIENT-IP'] = $ip;
  39.        $headers['X-FORWARDED-FOR'] = $ip;
  40.        $headerArr = array();
  41.        foreach$headers as $n => $v ) {
  42.            $headerArr[] = $n .':' . $v;
  43.        }
  44.        return $headerArr;
  45.    }

您可以选择一种方式赞助本站

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: