SELECT * FROM Vzakladke.net

Статьи об автоматизации и программировании

Как настроить cURL Proxy на PHP

 

 

Представим ситуацию, когда нам нужно подключаться к сайту на своем сервере через прокси. Во-первых, находим подходящий прокси сервер (например здесь, https://hidemy.name/ru/proxy-list/). Выбираем прокси для HTTP или HTTPS, предпочтительнее второе, иначе Ваш код не будет работать с сайтами, использующими SSL-сертификат. Далее нам понадобится CURLOPT_PROXY которой мы передаем хост выбранного прокси-сервера и не забываем указывать номер порта (через двоеточие).

 

Для начала необходимо упомянуть что curl_setopt — Устанавливает параметр для сеанса CURL

Список параметров Функции cURL:

ch - Дескриптор cURL, полученный из curl_init().
option - Устанавливаемый параметр CURLOPT_XXX.
value - Значение параметра option.

Чтобы запрос не обрывался на редиректе нужно прописать: curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

CURLOPT_HEADER необходим для включения заголовков в вывод, поэтому его оставляем закомментированным, так как он нам необходим только для отладки.

Приступим к написанию кода для нашего прокси-парсера:

error_reporting(E_ALL);

$query = 'soil'; 
//url 
$host= 'https://yandex.ru/yandsearch?text='.$query; 
$proxy = '80.211.231.72:3128';
$curl = curl_init($host);
if (isset($proxy)) {curl_setopt($curl, CURLOPT_PROXY, $proxy);}
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/27.0.1453.94 Safari/537.36"); 
curl_setopt($curl, CURLOPT_COOKIE, 'cookie.txt'); 
curl_setopt($curl, CURLOPT_AUTOREFERER, true); 
curl_setopt($curl, CURLOPT_COOKIESESSION, true); 
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
$reply = curl_exec($curl);
curl_close($curl);
// var_dump(curl_getinfo($curl));
echo $reply;

 

Если прокси сервер доступен по логин-паролю, то нужно дописать в код следующую конструкцию:
$proxyauth = 'user:password'; 

curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);

 

Если мы будем отправлять POST запрос, тогда добавим еще одну строку

curl_setopt($ch, CURLOPT_POST, true);

Но это еще не все - нам скорее всего в POST запросе потребуется передавать некоторые параметры в массиве.

$post = array( 
    'act' => 'login',
    'q' => '',
    'expire' => '',
    'email' => $login,
    'pass' => $password
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));

 

Более подробно о CURL прочитать Вы сможете на странице http://php.net/manual/ru/function.curl-setopt.php

 

Дата публикации: 2018-05-01 12:23:26

PHP

0

Отзывы:

Ваше имя:

Ваш e-mail (необязательно):

Сообщение:

Captcha