Code PHP pour vérifier la validité de l'IP du proxy

墨辰丷
Libérer: 2023-03-29 08:42:02
original
2796 Les gens l'ont consulté

Cet article présente principalement en détail le code permettant de vérifier la validité de l'IP du proxy en PHP. Il a une certaine valeur pratique. Les amis intéressés peuvent s'y référer

L'exemple de cet article est à partager avec tout le monde. le code pour vérifier l'adresse IP du proxy, le code php de validité, la stabilité, comme le taux d'erreur et le temps de requête

/**
 +-----------------------------------------------------------------------------
 * 检查代理ip信息有效性
 +-----------------------------------------------------------------------------
 * @param string $proxy_ip [117.95.100.126:8998]
 * @param int $times 执行检查次数
 * @return array
 * @author elinx <654753115@qq.com> 2016-07-29
 +-----------------------------------------------------------------------------
 */
function check_proxy_ip_info($proxy_ip=false, $times=10) {
  $header = array(
    // "GET / HTTP/1.1",
    // "HOST: www.baidu.com",
    "accept: application/json",
    "accept-encoding: gzip, deflate",
    "accept-language: en-US,en;q=0.8",
    "content-type: application/json",
    "user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
  );
  $url = &#39;http://www.baidu.com/&#39;;
  $result[&#39;succeed_times&#39;] = 0; //成功次数
  $result[&#39;defeat_times&#39;] = 0; //失败次数
  $result[&#39;total_spen&#39;]  = 0; //总用时
  for ($i=0; $i < $times; $i++) { 
    $s = microtime();
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url); //设置传输的url
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //发送http报头
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_ENCODING, &#39;gzip,deflate&#39;); // 解码压缩文件
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //不验证证SSL书
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //不验证SSL证书
 
    if (@$proxy_ip != false) { //使用代理ip
      curl_setopt($curl, CURLOPT_HTTPHEADER, array (
        &#39;Client_Ip: &#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255),
      ));
      curl_setopt($curl, CURLOPT_HTTPHEADER, array (
        &#39;X-Forwarded-For: &#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255).&#39;.&#39;.mt_rand(0, 255),
      ));
      curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
      curl_setopt($curl, CURLOPT_PROXY, $proxy_ip);
    }
 
    curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__).&#39;/cookie.txt&#39;);
    curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__).&#39;/cookie.txt&#39;);
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    // $response_header = curl_getinfo($curl); // 获取返回response报头
    $content = curl_exec($curl);
    if (strstr($content, &#39;百度一下,你就知道&#39;)) {
      $result[&#39;list&#39;][$i][&#39;status&#39;] = 1;
      $result[&#39;succeed_times&#39;] += 1;
    } else {
      $result[&#39;list&#39;][$i][&#39;status&#39;] = 0;
      $result[&#39;defeat_times&#39;] += 1;
    }
    $e = microtime();
    $result[&#39;total_spen&#39;]     += abs($e-$s);
    $result[&#39;list&#39;][$i][&#39;spen&#39;]  = abs($e-$s);
    $result[&#39;list&#39;][$i][&#39;content&#39;] = json_encode($content, true);
    // $result[&#39;list&#39;][$i][&#39;response_header&#39;] = $response_header;
  }
  $result[&#39;precent&#39;] = (number_format($result[&#39;succeed_times&#39;]/$times, 4)*100).&#39;%&#39;;
  $result[&#39;average_spen&#39;] = number_format($result[&#39;total_spen&#39;]/$times, 4);
  return $result;
}
Copier après la connexion

Résumé : ce qui précède C'est tout le contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Explication détaillée du cas d'interface API de l'opération de synchronisation recommandée implémentée par PHP

Explication détaillée de thinkPHP méthode d'implémentation de classe personnalisée

Explication détaillée de l'utilisation de la boucle for et de l'instruction switch dans le modèle thinkPHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal