Как работать с мобильными прокси на PHP

Как работать с мобильными прокси на PHP

 

Сегодня мы разберём 2 варианта работы PHP с мобильными прокси.

Зачем использовать мобильные прокси?

Есть несколько причин, по которым вы, возможно, захотите использовать прокси с cURL:

  • Чтобы обойти региональные фильтры и загородные блоки.
  • Использование прокси IP-адресов позволяет вам замаскировать или скрыть свой собственный IP-адрес.
  • Для устранения проблем с сетевым подключением.

Мобильный проси на PHP через CURL

Настройка для использования с cURL и PHP относительно проста, в основном это зависит от используемого сервера и метода аутентификации (если есть). Метод аутентификации HTTP управляется параметром CURLOPT_PROXYAUTH, метод по умолчанию - CURLAUTH_BASIC - если мобильный прокси требует аутентификации, имя пользователя и пароль могут быть установлены в формате [имя пользователя]: [пароль] с помощью параметра CURLOPT_PROXYUSERPWD.

На данный момент мы просто сосредоточимся на использовании прокси, который не требует аутентификации. Установить адрес и номер порта в PHP для cURL можно с помощью параметра CURLOPT_PROXY, как показано в следующем примере:

curl_setopt($ch, CURLOPT_PROXY, '128.0.0.3:8080');

Как показано в приведенном выше примере, вы можете установить прокси с синтаксисом IP: PORT в PHP, используя cURL. Но если вы предпочитаете, чтобы IP-адрес был отделен от порта, вы также можете использовать параметр CURLOPT_PROXYPORT, что приведет к приведенному ниже коду PHP:

curl_setopt($ch, CURLOPT_PROXY, 'mproxy.site');curl_setopt($ch, CURLOPT_PROXYPORT, '8080');

После настройки прокси-сервера вы сможете выполнять запрос с помощью функции curl_exec

$ch = curl_init($url);
$url = "https://mobileproxy.space/my-ip.html";
curl_setopt($ch, CURLOPT_PROXY, 'mproxy.site');
curl_setopt($ch, CURLOPT_PROXYPORT, '8080');
$result = curl_exec($ch);
echo $result;

Установка типа мобильных прокси cURL

cURL поддерживает два типа прокси: по умолчанию - HTTP, а другой вариант - SOCKS5. Вы можете установить тип прокси, используя параметр CURLOPT_PROXYTYPE. Т.е.

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

Вам действительно нужно только установить тип прокси, если вы не используете прокси HTTP.

Установка метода аутентификации

Как упоминалось в начале руководства, установить метод аутентификации прокси-сервера можно с помощью параметра CURLOPT_HTTPAUTH. Чтобы это работало должным образом, нам также необходимо предоставить имя пользователя и пароль для прокси-сервера, все это выполняется в приведенном ниже сценарии, в котором мы просто используем метод аутентификации BASIC.

$ch = curl_init($url);
$url = "https://mobileproxy.space/my-ip.html";
curl_setopt($ch, CURLOPT_PROXY, 'mproxy.site');
curl_setopt($ch, CURLOPT_PROXYPORT, '8080');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'USERNAME:PASSWORD');
$result = curl_exec($ch);
echo $result;

Другие методы аутентификации включают следующее:

CURLAUTH_BASIC
CURLAUTH_DIGEST
CURLAUTH_GSSNEGOTIATE
CURLAUTH_NTLM
CURLAUTH_ANY
CURLAUTH_ANYSAFE

Некоторые ошибки, которые могут возникнуть при использовании curl:

  • “Failed to attach to 128.0.0.3 port 8080: Timed out” Это означает, что cURL не удалось подключиться к используемому IP-адресу и порту прокси. Убедитесь, что и IP, и порт верны, а также проверьте, правильно ли работает прокси.
  • “Failed to attach to 11.22.33.44 port 1234: Connection refused” Эта ошибка обычно возникает, если вы указали неправильный номер порта, то есть IP-адрес прокси-сервера был правильным, но он не прослушивает запросы на указанном порту. Также существует вероятность того, что сервер работает, но программное обеспечение, на котором работает прокси, не работает.
  • “Received HTTP code 407 from proxy after CONNECT” Комбинация имени пользователя и пароля, которую вы просто используете с CURLOPT_PROXYUSERPWD, неверна. Убедитесь, что имя пользователя и пароль верны, и вы разделяете имя пользователя и пароль двоеточием: символ.

Мобильный проси на PHP через file_get_contents

Чтобы использовать file_get_contents()  через мобильный прокси-сервер, который не требует аутентификации, нужно сделать следующее:

$aContext = array( 'http' => array( 'proxy' => 'tcp://mproxy.site:8080', 'request_fulluri' => true, ),);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("https://mobileproxy.space/my-ip.html", False, $cxContext);
echo $sFile;

Если прокси требует аутентификации, вам придется добавить пару строк, например

$auth = base64_encode('LOGIN:PASSWORD');
$aContext = array( 'http' => array( 'proxy' => 'tcp://mproxy.site:8080', 'request_fulluri' => true, 'header' => "Proxy-Authorization: Basic $auth", ),);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("https://mobileproxy.space/my-ip.html", False, $cxContext);
echo $sFile;

На сколько нам известно, на данный момент работать file_get_contents с sock прокси не умеет.

Оставайтесь с нами, дальше будет еще интереснее!


Поделитесь статьёй: