【问题标题】:Curl + proxy - reload the script if proxy address is unavailableCurl + proxy - 如果代理地址不可用,则重新加载脚本
【发布时间】:2012-06-26 19:29:39
【问题描述】:

我有一个问题 - 我正在使用 CURL 和 PROXY。我正在从付费网络服务获取代理地址列表。列表如下所示(示例):

123.456.789.012:1234
123.456.789.012:1234
123.456.789.012:1234
123.456.789.012:1234
123.456.789.012:1234
123.456.789.012:1234
123.456.789.012:1234

假设上面提到的列表可以在这里找到:http://example.com/list_with_the_proxy

我的 PHP 代码如下所示:

<?php
$url = 'http://connect.to.another.example.net/'; //I want to open this url using one of the proxy address from the list

$proxy_url = 'http://address.of.proxy.example.org';

function RandomLine($filename) { 
    $lines = file($filename) ; 
    return $lines[array_rand($lines)] ; 
} 

$random_proxy = RandomLine($proxy_url); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
curl_setopt($ch, CURLOPT_PROXY, $random_proxy); 
$data = curl_exec($ch); 
curl_close($ch); 
echo $data;

?>

我注意到一些问题 - 有时某些代理不可用,并且网站正在加载和加载和加载......如果网站加载时间过长,是否有可能重新加载脚本并获取新的随机代理?例如,如果代理在 5 秒内没有响应,脚本将再次加载?

【问题讨论】:

  • 因此页面根本无法加载。这意味着您无法获得任何 HTTP 响应代码?

标签: php list curl proxy


【解决方案1】:

查看CURLOPT_TIMEOUT,当您在合理的时间内没有获得任何数据时,请重新加载。您还确定来自代理列表站点的数据正确通过并且没有因此而挂起吗?

【讨论】:

    【解决方案2】:

    实际上,您只是面临一个常见问题——无论是 PHP 还是 curl——都不会自动解决。这有很多原因,但更普遍的原因是您无法自动解决该问题。

    您想通过某个代理列表建立连接。但另一方面,您无法控制该列表中的代理。所以你可能会得到一个不工作的代理。

    根据代理的定义,您要么需要信任该地址,要么放弃它。但是,如果您相信它,但您的决定是错误的,那么您可能会被愚弄。因为您使用了自动化措施,但没有告诉您是否可以相信代理列表来源是可靠的,所以我认为该来源并不真正可靠。因此,您遇到了希望轻松解决的问题,但实际上并非如此。

    我无法判断这是否真的是一个问题。但是我可以说的是,stackoverflow.com 可能不是问您问题的正确网站。

    所以这不是一个真正的答案,而是一个冗长的评论。答案是主观的,甚至没有建设性,因为您没有分享代理提供商的地址。

    保重。并非所有这些代理列表都可以安全使用。但更普遍的是,不要期望所有这些代理都能真正起作用。这些列表可能会发生变化。有人说,你得到你所支付的,或者,当你寻找一个可靠的代理时,你为什么不自己运行一个?

    【讨论】:

      猜你喜欢
      • 2013-11-30
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2017-04-06
      • 2014-10-11
      • 2019-03-03
      • 2013-01-29
      • 1970-01-01
      相关资源
      最近更新 更多