Отправка запроса через прокси-сервер с помощью php и cURL

Запросы через прокси с помощью cURL

В связи с тем, что РКН объявил святую войну одному мессенджеру, под дружественный огонь попали и многие другие сервисы. IP-адреса которых были, случайно или не совсем случайно, заблокированы. И к одной из жертв мне пришлось искать возможность подключиться – отправлять запросы, для получения данных. Самое простое решение, это настроить vpn на сервере или воспользоваться другим сервером. Но это дело дорогое и трудозатратое. Поэтому такие варианты пришлось сразу исключить. Немного поломав голову, пришла более простая идея – воспользоваться прокси-серверами. Прокси можно найти в свободном доступе очень быстро и многие из них бесплатные. Остается немного дописать код отправки запроса, который будет отправляться не напрямую к заблокированному сервису, а через прокси.

Запросы через прокси с помощью cURL

Для отправки запросов через прокси-сервера, идеально подходит cURL. Достаточно добавить всего пару строк в код и все готово. Стоит только обратить внимание, что некоторые прокси не дают просто так к ним подключиться, а только с авторизацией. Но и такой вариант не доставит хлопот – еще одна строка в коде и запросы будут отправляться.
Единственный минус, с которым придется мириться, это скорость отправки данных. Через прокси-сервера скрипт будет выполняться медленней. Скорость будет зависть от прокси, через который работает скрипт. Очевидно, что через платные сервера все будет работать быстрее. Но это уже зависит от необходимости и финансовой возможности каждого.
Для тестирования скрипта я залил на блог скрипт, к которому будет отправляться запрос через прокси-сервер. В ответ на обращение, скрипт вернет ip-адрес, с которого пришел запрос. Если слать данные на прямую, то ip будет вашего сервера, а если через прокси, то соответственно ip прокси-сервера.
Остается только привести пример запроса с подробными комментариями:

// запрос на тестовый адрес
$url = 'https://vk-book.ru/my-ip.php';

// ip и порт прокси
$proxy = '109.188.81.101:8080';
// если требуется авторизация на прокси-сервере
//$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

// домен, на который осуществляется отправка
// тестового запроса, работает через https
// поэтому нужно добавить флаги для работы с ssl
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

// подключение к прокси-серверу
curl_setopt($ch, CURLOPT_PROXY, $proxy);
// если требуется авторизация
// curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);

// отправка запроса
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

// вывод ответа сервера
// должен вернуть все заголовки и ip с которого 
// было обращение, в данном случае это 109.188.81.101
var_dump($curl_scraped_page);

Послесловие

Если кому-то лень гуглить прокси-сервера, то вы можете воспользоваться вот этим сервисом: список прокси. Или вот этим: мне повезет

Рассказать друзьям:


Оценить:
(10 оценок, среднее: 3,60 из 5)

Отправка запроса через прокси-сервер с помощью php и cURL: 2 комментария

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code