Бывает так, что нужно работать в 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);
Из комментариев к коду, я думаю и так понятно что изменилось и какие значения следует использовать. Надеюсь у вас всё получится ;)