【问题标题】:cURL with proxy does not work带代理的 cURL 不起作用
【发布时间】:2016-03-03 18:11:14
【问题描述】:

我想使用带有代理的 cURL 来抓取 URL。

当我不使用代理时,URL 会被抓取,但当我使用代理时,我会返回空白页。

这是我的代码,

    global $curl_init;
    $proxy = '201.172.53.123:10000';
//$proxyauth = 'user:password';
    curl_setopt($curl_init, CURLOPT_URL, $url);
    curl_setopt($curl_init, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
    curl_setopt($curl_init, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl_init, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_init, CURLOPT_HEADER, 1);

    curl_setopt($curl_init, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17');
    curl_setopt($curl_init, CURLOPT_SSL_VERIFYPEER, false);
   echo  $curl_scraped_page = curl_exec($curl_init);

我正在使用来自http://proxylist.hidemyass.com/的免费代理

我的代码有错误吗?还是免费代理根本不起作用?

【问题讨论】:

  • 尝试在curl_exec 行之后写echo curl_error($curl_init);。输出是什么?

标签: php curl proxy


【解决方案1】:

首先,将代理加载到数组中

$proxies_list = array(); 
$proxies_list [] = 'user:password@198.235.11.134:76891';  // Some proxies requires user, password, IP and port no.
$proxies_list [] = 'user:password@198.235.120.69:76891';
$proxies_list [] = 'user:password@198.235.46.176:76891';
$proxies_list [] = '198.235.92.107';  // Some proxies only require IP
$proxies_list [] = '198.235.93.94';
$proxies_list [] = '198.235.94.90:76891'; //Some proxies require IP,port no.
$proxies_list [] = '69.147.240.61:76891';

• 接下来,从列表中选择任何随机代理以供以后使用。

if (isset($proxies)) {  
    $proxy = $proxies[array_rand($proxies)];   
}

现在,在初始化 cURL 句柄后,将 cURL 的 CURLOPT_PROXY 选项设置为随机选择的代理,设置所有其他 cURL 选项,然后执行请求并关闭句柄。

$ch = curl_init(); 
// Setting proxy option for cURL
if (isset($proxy)) {    // If the $proxy variable is set, then
    curl_setopt($ch, CURLOPT_PROXY, $proxy);    // Set CURLOPT_PROXY with proxy in $proxy variable
}

// Set any other cURL options that are required
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);

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

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2020-12-24
    相关资源
    最近更新 更多