работа php через прокси c помощью curl на примере парсинга

Fetch url directly

The following program fetches the contents of a URL directly, without using any proxy.

Get запросы curl в php

Или можно использовать аналог через функцию file_get_contents():

Oauth авторизация

Если на сайте реализована работа с OAuth протоколом авторизации, который позволяетвыдать права на действия, которые сам сайт сможет производить на другом ресурсе отлица, авторизовавшегося и давшего это разрешение, пользователя, тогда запрос cURL в php будет выглядеть следующим образом:

Post запросы curl в php

Функция file_get_contents() так же умеет отправлять POST запросы. Для этого нужно использовать заголовки:

Use socks proxy with curl

This code example demonstrates how to use a socks proxy with curl in php

Запрос через proxy

Когда нужно сделать запрос, подменив при этом источник запроса на промежуточный адрес, то используйте опцию PROXY:

Какую задачу должен решать скрипт

Скрипт должен обращаться к сервису с курсами валют через прокси-сервер, получать ответ в формате JSON, декодировать его и выводить на экран курс доллара к рублю на сегодняшний день.

Методом ftp

Не смотря на то, что в PHP есть библиотека для работы с FTP, все же cURL также позволяет работать по этому протоколу напрямую.

Методом post

Таким образом можно отправить один или несколько файлов сразу:

Методом put

Мульти запросы curl в php

Обычно в скрипте PHP выполнение запросов cUrl производится последовательно, то есть друг за другом. Пока не вернется результат предыдущего запроса, новый не выполнится.

Одной из самых важных особенностью cURL в PHP является возможность осуществлять несколько асинхронных запросов одновременно.

Например, если нужно собрать независимые друг от друга данные с разных сайтов, то можно организовать их параллельный сбор. Можно также произвести несвязанные вычисления или обработку данных через асинхронные запросы к скриптам в отдельных файлах.

Эта особенность позволяет оптимизировать работу скрипта и сократить время его выполнения.

Функция curl_multi_exec() многократно вызывается в цикле с постусловием, где параметр $running имеет значение количества активных соединений.

Чем больше обработчиков в параллельной работе, тем больше сокращается время выполнения скрипта, поэтому нелишним будет внедрить привычку использовать эту возможность cURL в своих скриптах.

Нужны ли для curl php какие-то особые прокси?

в зависимости от типа прокси – различные параметры.

HTTP прокси:

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); 
curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);

HTTPS прокси:

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTPS); 
curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);

SOCKS4 прокси:

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);

curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);

SOCKS5 прокси без авторизации:

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);

SOCKS5 прокси с авторизацией по логину и паролю:

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_pass);

Насчёт https прокси с авторизацией по логину/паролю, socks4a прокси – ничего не скажу, не сталкивался с ними.
Кроме того, у вас могут быть прокси с авторизацией по ip. Тогда просто узнать внешний ip сервера и установить эту привязку в настройках в магазине, где приобрели прокси.

P.S. Если тип прокси достоверно не известен (публичные прокси из неясных источников) – то последовательно делать запрос и смотреть ответ. При работе с публичными списками прокси делаю именно так. Заодно можно отсекать прокси с неприемлемым временем ответа. В копилку – определение типа прокси средствами php/curl

Отправить и получить cookie

Для сохранения куки в файле необходимо указать путь к этому файлу в соответствующих параметрах CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR.

Параметр CURLOPT_COOKIE используется для принудительной передачи значения куки:

Отправка curl запроса php

Формирование cURL запроса состоит из четырех этапов:

  1. Инициализация
  2. Указание параметров
  3. Выполнение команды и получение результата
  4. Освобождение памяти

Итак, как это должно выглядеть в коде:

Этапы 1,3 и 4 типовые для всех типов запросов. А на этапе 2, в зависимости от указанных параметров, как раз и формируется тот или иной тип запроса.

Отправка файлов на другой сервер используя curl

Есть несколько вариантов передачи файлов между серверами.

Получение информации о запросе curl

Чтобы получить исчерпывающую информацию о самом запросе используется функция curl_getinfo(). Главным образом эта информация полезна для отладки работы скрипта, в котором выполняются cURL запросы.

Функция возвращает данные в виде массива со следующими ключами:

Проверяем работоспособность прокси на php через crul с возможностью авторизации – truewebstories

// Проверяем работоспособность прокси на PHP через CURLfunction proveryaem_rabotosposobnost_proxy_cherez_curl ($host_and_port,$prxy_auth='',$url="https://www.google.com.ua/",$timeout=5){$proxy=$host_and_port;$ch=curl_init();// Initialise a cURL handle
 
	// Setting proxy option for cURLif(isset($proxy)){// If the $proxy variable is set, thencurl_setopt($ch, CURLOPT_PROXY,$proxy);// Set CURLOPT_PROXY with proxy in $proxy variable}
 
	// Set any other cURL options that are required// curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxy_auth);  // Если понадобится авторизация на прокси. $prxy_auth = 'login:pass'curl_setopt($ch, CURLOPT_HEADER,FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch, CURLOPT_COOKIESESSION,TRUE);curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE);curl_setopt($ch, CURLOPT_RETURNTRANSFER,TRUE);curl_setopt($ch, CURLOPT_TIMEOUT,$timeout);// Определяет кол-во времени на попытку соединения https://toster.ru/q/418924curl_setopt($ch, CURLOPT_URL,$url);
 
	$results=curl_exec($ch);// Execute a cURL request//curl_close($ch);    // Closing the cURL handleif($results===false){echo"Proxy is not working: ",curl_error($ch);}else{//print the outputecho"OK";}}
 
// Пример вызова
proveryaem_rabotosposobnost_proxy_cherez_curl ('35.246.154.253:3128');
 
 
// Процедурно$host='118.179.206.162';$port=9999; 
 
$host='35.246.154.253';$port=3128; 
 
$host_port='118.179.206.162:9999';$host_port='35.246.154.253:3128';
 
 
// $proxy = 'login:[email protected]:8080';$url="https://www.google.com.ua/";
 
$proxy='35.246.154.251:3128';
 
$ch=curl_init();// Initialise a cURL handle
 
// Setting proxy option for cURLif(isset($proxy)){// If the $proxy variable is set, thencurl_setopt($ch, CURLOPT_PROXY,$proxy);// Set CURLOPT_PROXY with proxy in $proxy variable}
 
// Set any other cURL options that are required// curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxy_auth);  // Если понадобится авторизация на прокси. $prxy_auth = 'login:pass'curl_setopt($ch, CURLOPT_HEADER,FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch, CURLOPT_COOKIESESSION,TRUE);curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE);curl_setopt($ch, CURLOPT_RETURNTRANSFER,TRUE);curl_setopt($ch, CURLOPT_TIMEOUT,5);// Определяет кол-во времени на попытку соединения https://toster.ru/q/418924curl_setopt($ch, CURLOPT_URL,$url);
 
$results=curl_exec($ch);// Execute a cURL request//curl_close($ch);    // Closing the cURL handleif($results===false){echo"Proxy is not working: ",curl_error($ch);}else{//print the outputecho"OK";}
 

Источнк

Список прокси

Список прокси

Скачивание файлов

При передаче указателя на открытый файл в параметре CURLOPT_FILE результат выполнения скрипта записывается сразу в файл.

Похожее:  КАК ЗАРЕГИСТРИРОВАТЬСЯ В ЛК НА САЙТЕ ЭСКБ ЧТО ТАКОЕ ЕЛК УФА ЛИЧНЫЙ КАБИНЕТ

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

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