如何在随机ip curl脚本中提到ip端口

时间:2017-08-27 07:38:38

标签: php curl proxy

我有一个卷曲的随机IP脚本,但我不知道如何使用相同的随机脚本端口

function curl_get($kix) 
 {
 $ips = array(
     '85.10.230.132',
     '88.198.242.9',
     '88.198.242.10',
     '88.198.242.11',
     '88.198.242.12',
     '88.198.242.13',
     '88.198.242.14',
  );
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_URL, $kix);
  @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
  curl_setopt($ch, CURLOPT_INTERFACE, $ips[rand(0, count($ips)-1)]);
  curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
  $html = curl_exec($ch);
  curl_close($ch);
  return $html; 
 }

你可以在这里看到我提到了ip,但我不知道如何为那些ip提供端口。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果每个IP有不同的端口,则可以使用关联数组将端口与IP关联。

因此,对于以下函数,我假设您使用PHP> = 7.0以及以下格式作为数组格式。

array('IP'=>'Port');

我们还 CURLOPT_PORT 指定要连接的备用IP。 引用documentation

  

CURLOPT_PORT:要连接的备用端口号。

回到你的问题:

  • 我使用curl_setopt($ch, CURLOPT_PORT, $port);分配我们需要使用的端口。
  • 我使用array_rand($ips)从新创建的关联数组(IP列表)中获取随机密钥
  • 最后,我使用$port = $ips[$randomIP];
  • 直接访问数组

所以你的功能现在看起来像:

function curl_get($kix)
{
    $ips = array(
         '85.10.230.132' => '80',
         '88.198.242.9' => '8080',
         '88.198.242.10' => '5754',
         '88.198.242.11' => '80',
         '88.198.242.12' => '8888',
         '88.198.242.13' => '8989',
         '88.198.242.14' => '8080',
      );

    // We get a random key (IP)
    $randomIP = array_rand($ips);

    // We get the port according to the random key (IP)
    $port = $ips[$randomIP];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL, $kix);
    @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_INTERFACE, $randomIP);

    // We set the alternative port with the following
    curl_setopt($ch, CURLOPT_PORT, $port);

    curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

    $html = curl_exec($ch);
    curl_close($ch);

    return $html;
}