1

我有一个问题 - 我正在使用 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 秒内没有响应,脚本会再次加载吗?

4

2 回答 2

1

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

于 2012-06-26T20:02:08.213 回答
0

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

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

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

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

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

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

于 2012-06-27T00:38:53.030 回答