Перейти к содержанию

Руководство · На русском

Как проверить прокси через curl

Начните с небольшого запроса: подключитесь к шлюзу, проверьте авторизацию и получите ответ сервиса, который сообщает ваш выходной IP. Затем повторите проверку в приложении, где будет выполняться задача.

Инструкции в этом разделе — на русском. Магазин, личный кабинет, документация и условия заказа пока доступны на английском.

Опубликовано:

Короткие ответы

Как понять, что прокси работает?

Укажите прокси через -x, передайте полное имя пользователя в --proxy-user и введите пароль по запросу curl. Проверьте HTTP-код и содержимое ответа. Отдельно запишите ошибку curl: успешное соединение ещё не означает успешный ответ сайта.

Как проверить страну выходного IP?

Echo-сервис показывает адрес, с которого получил запрос, а не страну. Геобаза даёт отдельную оценку местоположения. Проверяйте источник и время такой оценки: сайт может определять регион иначе. Страна, указанная в настройках подключения, сама по себе не подтверждает местоположение выхода.

Как проверить SOCKS5-прокси?

Используйте -x "socks5h://gw.portproof.org:7001". В режиме socks5h имя сайта разрешается на стороне прокси; в socks5 это делает ваш клиент. В остальном проверка остаётся той же: авторизация, ограничение времени, HTTP-код и ответ.

Почему curl работает, а браузер — нет?

У браузера могут отличаться прокси, пароль, список исключений и настройки DNS. Проверьте фактический запрос из браузера. Его cookie и состояние сайта не переносятся из curl автоматически. Проверка настроек приложения — на английском.

Как убедиться, что ротация сменила IP?

Сравните ответы нескольких разрешённых подключений с одинаковыми настройками. Повтор адреса возможен и сам по себе не доказывает сбой ротации. Сравнение IP также не позволяет установить, использовалось ли то же устройство.

Тест расходует купленный трафик?

Да. Запросы и ответы через шлюз расходуют баланс. Ограничьте число проверок, используйте небольшой ответ и учитывайте задержку обновления счётчика в личном кабинете.

Как измерить задержку?

Выведите time_connect, time_starttransfer и time_total. Первое значение относится к установлению TCP-соединения с сервером или прокси, второе — к получению первого байта ответа, третье — ко всей передаче. Разница первых двух значений не равна времени работы сайта.

Первый запрос через HTTP-прокси

Откройте интерактивный терминал. Возьмите адрес шлюза, порт и учётные данные из личного кабинета. В примере замените USERNAME на учётную часть имени пользователя. Коды стран и режимы в командах — примеры: выберите нужные настройки и сначала проверьте доступность выбранного пула на странице локаций — на английском.

Адрес шлюза передаётся в -x, а полное имя пользователя — в --proxy-user, без двоеточия и пароля. curl запросит пароль отдельно при каждом запуске. Команды ниже предназначены для оболочки sh, bash или zsh; это не синтаксис PowerShell.

Подключение и ответ echo-сервисаsh
curl --disable --silent --show-error --noproxy '' --connect-timeout 5 --max-time 15 -x "http://gw.portproof.org:7000" \
  --proxy-user "USERNAME-mbl-us-rot-auto10" \
  https://api.portproof.org/v1/echo-ip

Поле ip в ответе — адрес, который увидел echo-сервис. Сохраните время проверки, протокол, пул, страну из настроек, режим ротации и результат. Не записывайте пароль или полную строку авторизации в журнал.

Пароль вводится в терминале: предел времени передачи не ограничивает время ожидания ввода. Такой ввод убирает пароль из набранной команды, но не защищает все места, где используются учётные данные. Для фоновых задач используйте свой механизм секретов. Подстановка переменной с паролем в аргумент команды всё равно может сделать пароль видимым в списке процессов. Не включайте трассировку оболочки и не публикуйте диагностические логи с секретами. Справочник curl.

Разделите ответ прокси и ответ сайта

При обращении к HTTPS-сайту через HTTP-прокси сначала создаётся туннель CONNECT. Его статус и итоговый HTTP-код сайта — разные результаты. Следующая команда выполняет ещё один запрос и выводит оба кода, не сохраняя тело ответа.

Код CONNECT и код сайтаsh
curl --disable --silent --show-error --noproxy '' --connect-timeout 5 --max-time 15 -o /dev/null \
  -w 'connect=%{http_connect} target=%{response_code}\n' \
  -x "http://gw.portproof.org:7000" \
  --proxy-user "USERNAME-mbl-us-rot-auto10" \
  https://api.portproof.org/v1/echo-ip

Обычный запуск curl может завершиться без транспортной ошибки и при HTTP-ответе 4xx или 5xx. Поэтому сверяйте код и ожидаемый ответ. Если соединение оборвалось до получения ответа, значение 000 не является HTTP-кодом сайта. Для отдельной диагностики туннеля есть руководство по CONNECT — на английском.

Выходной адрес, страна и время ответа

Выбор страны задаёт маршрут, а проверка IP показывает результат конкретного запроса. Геолокационные базы могут расходиться; IP не доказывает физическое местоположение устройства. Язык сайта, cookie, настройки аккаунта и часовой пояс браузера тоже могут влиять на показанный регион.

Сравнивайте несколько ограниченных проверок с одним клиентом, адресом назначения и настройками. Один ответ не характеризует весь пул.

Три показателя времениsh
curl --disable --silent --show-error --noproxy '' --connect-timeout 5 --max-time 15 -o /dev/null \
  -w 'connect=%{time_connect}s first_byte=%{time_starttransfer}s total=%{time_total}s\n' \
  -x "http://gw.portproof.org:7000" \
  --proxy-user "USERNAME-peer-gb-rot-auto10" \
  https://api.portproof.org/v1/echo-ip

Метод API POST /v1/traffic/test выполняет отдельную проверку со стороны Portproof и возвращает результат, выходной IP и задержку. Поле exit_country относится только к полученному наблюдению: если доверенного источника страны нет, оно равно null, а country_verified — false. Запрошенная страна не подставляется вместо результата. Эта проверка не подтверждает маршрут более раннего запроса из вашего приложения. Справочник API — на английском.

Проверьте ротацию между подключениями

В режиме rot-ondemand маршрут выбирается для нового соединения. Одно соединение может обслуживать несколько HTTP-запросов, а разные соединения могут получить одинаковый публичный адрес. Для небольшой проверки выполните два независимых запуска curl и сравните полученные значения.

При каждом запуске curl запросит пароль. Два одинаковых IP не означают, что ротация сломалась.

Два отдельных подключенияsh
for i in 1 2; do
  curl --disable --silent --show-error --noproxy '' --connect-timeout 5 --max-time 15 -x "http://gw.portproof.org:7000" \
    --proxy-user "USERNAME-peer-es-rot-ondemand" \
    https://api.portproof.org/v1/echo-ip
  echo
done

Ротация по времени тоже не обещает новый IP в точную секунду и не меняет адрес каждого запроса в уже открытом соединении. Подробности — в русском руководстве по ротации и sticky-сессиям.

Повторите проверку с одним именем сессии

Два запроса с именем check7sh
U="USERNAME-mbl-gb-sid-check7-rot-sticky"

curl --disable --silent --show-error --noproxy '' --connect-timeout 5 --max-time 15 -x "http://gw.portproof.org:7000" --proxy-user "$U" https://api.portproof.org/v1/echo-ip
echo
sleep 5
curl --disable --silent --show-error --noproxy '' --connect-timeout 5 --max-time 15 -x "http://gw.portproof.org:7000" --proxy-user "$U" https://api.portproof.org/v1/echo-ip
echo
Sticky-сессия сохраняет выбранное устройство, но оператор сети может изменить его IP. Совпавшие адреса не доказывают, что устройство то же самое. Если задаче необходим неизменный IP, проверяйте это условие и останавливайте её при изменении. Диагностика смены IP — на английском.

Та же проверка через SOCKS5

SOCKS5 с DNS на стороне проксиsh
curl --disable --silent --show-error --noproxy '' --connect-timeout 5 --max-time 15 -x "socks5h://gw.portproof.org:7001" \
  --proxy-user "USERNAME-peer-nl-rot-ondemand" \
  https://api.portproof.org/v1/echo-ip

socks5h передаёт имя сайта прокси для разрешения. В режиме socks5 адрес определяет локальный клиент. Эти способы могут вернуть разные адреса сайта, поэтому фиксируйте режим DNS в результатах. Выбор HTTP или SOCKS5.

Что проверить при ошибке

Ошибки и следующий шаг
РезультатСледующая проверка
HTTP 407Сверьте имя пользователя, пароль и баланс. Уточните код ошибки шлюза; одного HTTP-кода недостаточно для точной причины.
E_USERNAME_PARSEПроверьте регистр, поддерживаемые токены и разделители в имени пользователя.
E_NO_STOCK_COUNTRYПроверьте текущую доступность выбранного пула и страны. Наличие страницы страны не означает наличие устройства онлайн.
Connection refusedСверьте адрес, протокол и порт: HTTP — 7000, SOCKS5 — 7001. Затем проверьте доступ к шлюзу из своей сети.
Operation timed outВыясните, на каком этапе истёк срок: соединение или передача. Не увеличивайте таймаут бесконечно.
SSL certificate problemПроверьте доверенные сертификаты и сетевое окружение. Не отключайте проверку TLS ради успешного теста.
Empty reply from serverHTTP-ответ не получен. Сохраните ошибку и время; по этой строке нельзя определить, кто оборвал соединение.

Меняйте по одному параметру и повторяйте только небольшой разрешённый запрос. Не отправляйте пароль в поддержку. Для ошибки авторизации используйте проверки 407.

Повторите тест в рабочем приложении

Успех curl подтверждает только этот запуск. В Python, Node.js или браузере снова проверьте настройки прокси, пароль, ограничения времени и фактический ответ. Пример на русском: Python Requests. Для JavaScript есть Node.js fetch. Отдельно: настройки приложения — на английском.

Оцените расход на небольшом запуске

Тестовые запросы расходуют трафик. Размер тела ответа не описывает всю передачу, поэтому не рассчитывайте стоимость только по нему. Выполните небольшую типичную задачу и сравните расход по счётчику после его обновления.

Для оценки объёма откройте калькулятор трафика — на английском и руководство по расчёту ГБ — на английском. Текущие условия заказа находятся на странице цен — на английском.

Допустимое использование

Проверяйте свои ресурсы или сервисы, которые разрешают такие запросы. Соблюдайте правила доступа и ограничения частоты. Для мониторинга цен, проверки рекламы, исследований и QA действует политика допустимого использования — на английском.

Следующий шаг

Как проверить прокси через curl · Portproof