Короткие ответы
Как понять, что прокси работает?
Укажите прокси через -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.
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-сервис. Сохраните время проверки, протокол, пул, страну из настроек, режим ротации и результат. Не записывайте пароль или полную строку авторизации в журнал.
Разделите ответ прокси и ответ сайта
При обращении к HTTPS-сайту через HTTP-прокси сначала создаётся туннель CONNECT. Его статус и итоговый HTTP-код сайта — разные результаты. Следующая команда выполняет ещё один запрос и выводит оба кода, не сохраняя тело ответа.
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, настройки аккаунта и часовой пояс браузера тоже могут влиять на показанный регион.
Сравнивайте несколько ограниченных проверок с одним клиентом, адресом назначения и настройками. Один ответ не характеризует весь пул.
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 не означают, что ротация сломалась.
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-сессиям.
Повторите проверку с одним именем сессии
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Та же проверка через SOCKS5
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-ipsocks5h передаёт имя сайта прокси для разрешения. В режиме 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 server | HTTP-ответ не получен. Сохраните ошибку и время; по этой строке нельзя определить, кто оборвал соединение. |
Меняйте по одному параметру и повторяйте только небольшой разрешённый запрос. Не отправляйте пароль в поддержку. Для ошибки авторизации используйте проверки 407.
Повторите тест в рабочем приложении
Успех curl подтверждает только этот запуск. В Python, Node.js или браузере снова проверьте настройки прокси, пароль, ограничения времени и фактический ответ. Пример на русском: Python Requests. Для JavaScript есть Node.js fetch. Отдельно: настройки приложения — на английском.
Оцените расход на небольшом запуске
Тестовые запросы расходуют трафик. Размер тела ответа не описывает всю передачу, поэтому не рассчитывайте стоимость только по нему. Выполните небольшую типичную задачу и сравните расход по счётчику после его обновления.
Для оценки объёма откройте калькулятор трафика — на английском и руководство по расчёту ГБ — на английском. Текущие условия заказа находятся на странице цен — на английском.
Допустимое использование
Проверяйте свои ресурсы или сервисы, которые разрешают такие запросы. Соблюдайте правила доступа и ограничения частоты. Для мониторинга цен, проверки рекламы, исследований и QA действует политика допустимого использования — на английском.