Бывает так, что нужно работать в php с библиотекой curl для обращения, например, к какому-либо API сервиса. И бывает очень неприятно, когда доступ к API оказывается заблокирован для вашего сервера по IP. Выпутаться из данной ситуации можно перенаправляя запросы сервера через прокси. Это можно делать через системные настройки, засылая ВСЕ запросы через прокси-сервер либо выполняя именно те запросы, которые вам требуются.
В принципе всё просто. У вас есть запрос:
$url = "http://www.example.com/API/v2.0/";
function get_url($url)
{
$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);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
echo get_url($url); Вам потребуется изменить запрос:
$url = "http://www.example.com/API/v2.0/";
function get_url($url) {
$proxy_ip = 'your_proxy_ip:proxy_port'; //IP адрес сервера прокси и порт
$loginpassw = 'login:password'; //логин и пароль для прокси
$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);
//Указываем к какому прокси подключаемся и передаем логин-пароль
curl_setopt($ch, CURLOPT_PROXY, $proxy_ip );
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);
//доступные значения для типа используемого прокси-сервера: CURLPROXY_HTTP (по умолчанию), CURLPROXY_SOCKS4, CURLPROXY_SOCKS5, CURLPROXY_SOCKS4A или CURLPROXY_SOCKS5_HOSTNAME.
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
echo get_url($url); Из комментариев к коду, я думаю и так понятно что изменилось и какие значения следует использовать. Надеюсь у вас всё получится ;)







