Я пытался использовать прокси в PHP, используя оба метода. У меня есть socks5 прокси. Который прекрасно работает, когда я использую cURL
метод. Но когда я пытаюсь использовать stream_context_set_default
это не работает вообще. Есть ли способ использовать прокси? Например: этот прокси 207.174.151.226:45021
не работает с stream_context_set_default
но работает с cURL. Я не хочу использовать прокси с использованием cURL, потому что мне нужен прокси везде в моем php-файле. Любая помощь по этому поводу? Код:
<?php
$default_opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar",
'proxy'=>"186.34.59.99:10000")
);
$default = stream_context_set_default($default_opts);
$homepage = file_get_contents('http://www.google.com');
echo $homepage;?>
Это работает :
<?php
$url = "http://www.google.co.uk";
$ch = curl_init();
if($ch === false)
{
die('Failed to create curl object');
}
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//proxy details
curl_setopt($ch, CURLOPT_PROXY, '186.34.59.99:10000');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
?>
Спасибо!
Убедитесь, что вы отправили URI, включая оригинальное имя хоста. Вы можете достичь этого, явно передав request_fulluri = true
как часть $default_opts['http']
как описано на http://php.net/manual/en/context.http.php
Других решений пока нет …