@romaaa32

Как проверить proxy с авторизацией через CURL?

Через консоль:
curl --proxy Ip:Port -U username:password check-host.net/ip


Через PHP:
$ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://check-host.net/ip");
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
        curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
        curl_setopt($ch, CURLOPT_PROXYUSERPWD, "username:password");
        curl_setopt($ch, CURLOPT_PROXY, "Ip:Port");
        curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
       //curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

        $html = curl_exec($ch);
        curl_close($ch);

        echo $html;


Не работает этими способами. Прокси проверял в windows, и при переходе на любой сайт в хроме запрашивало логин:пароль - работает.

Что не так делаю?
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro Куратор тега PHP
если socks то желательно указать CURLOPT_PROXYTYPE = CURLPROXY_SOCKS5

//curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);


CURLOPT_URL задайте явно протокол (http) - http://check-host.net/ip

CURLOPT_PROXYAUTH убрать или поменять явно на ваш вариант CURLAUTH_BASIC

из документации https://www.php.net/manual/ru/function.curl-setopt.php
CURLOPT_PROXYAUTH Методы авторизации HTTP, используемые при соединении с прокси-сервером. Используйте те же самые битовые маски, которые были описаны у параметра CURLOPT_HTTPAUTH. В данный момент для авторизации прокси поддерживаются только CURLAUTH_BASIC и CURLAUTH_NTLM.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы