curl + proxy - 如果代理地址不可用,则重新加载脚本


Curl + proxy - reload the script if proxy address is unavailable

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

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 秒内没有响应,脚本将再次加载?

查看CURLOPT_TIMEOUT,在合理时间内未获得任何数据时,在每种情况下重新加载。另外,您是否确定代理列表站点中的数据正确通过并且因此而没有挂起?

实际上,

您只是面临着一个常见问题,无论是PHP还是curl,都不会自动解决。这是出于多种原因,但更普遍的是,您无法自动解决该问题。

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

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

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

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

当心。并非所有这些代理列表都可以安全使用。但更一般地说,不要期望所有这些代理实际上都有效。这些列表可能会发生变化。你可能会说,一分钱一分货,或者,当你寻找一个可靠的代理时,你为什么不自己运行一个?