Использование curl в php через прокси

Компьютерное

Бывает так, что нужно работать в 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);

Из комментариев к коду, я думаю и так понятно что изменилось и какие значения следует использовать. Надеюсь у вас всё получится ;)

Оцените статью
( 2 оценки, среднее 5 из 5 )
Блог админа