Перевірка HTTP-проксі за допомогою curl
Перевірте з’єднання з проксі, HTTPS-тунель, статус відповіді та правила обходу обмеженим у часі тестом curl, не змінюючи глобальні налаштування проксі пристрою.
Замініть 127.0.0.1:8080 кінцевою точкою свого сервісу або адресою зі списку HTTP-проксі та виконайте цю команду для нешкідливого HTTPS-ресурсу:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Адреса зворотної петлі позначає порт прослуховування на вашому комп’ютері. Команда явно вибирає його, очищує список обходу curl для цього виклику й відводить п’ять секунд на установлення з’єднання та п’ятнадцять секунд загалом. Налаштування проксі браузера й системи вона не змінює.
Використовуйте справжній виконуваний файл curl, якщо оболонка визначає curl як псевдонім іншої програми; curl --version дає змогу визначити збірку. Якщо сам порт прослуховування потребує TLS, використовуйте схему URL проксі з його документації.
Читайте чотири результати, а не одну ознаку успіху
- З’єднання з вибраним проксі: адреса й порт доступні.
- CONNECT прийнято: проксі відкрив тунель до HTTPS-ресурсу.
- Сертифікат цільового сервера перевірено: TLS завершився з очікуваними перевірками довіри.
- Відповідь цільового сервера отримано: перевірте статус і вміст, щоб визначити, чи отримано результат, потрібний застосунку.
Навіть через робочий тунель цільовий сервер може повернути 403 або 429. curl також може завершитися успішно після отримання HTTP-відповіді з помилкою, тому записуйте і статус відповіді, і результат помилки curl. Самого TCP-з’єднання або успішного CONNECT недостатньо.
Стислий результат для повторних порівнянь
В Unix-подібній оболонці відкиньте тіло відповіді та виведіть статус тунелю, статус цільового сервера, іншу сторону з’єднання й витрачений час:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect описує відповідь тунелю; http_code — кінцеву HTTP-відповідь. remote_ip — інша сторона з’єднання curl, а не незалежне вимірювання вихідної адреси проксі. В інших системах замініть /dev/null або збережіть тіло відповіді.
Якщо тест не вдався, знайдіть невдалий етап установлення з’єднання або передавання і порівняйте той самий ресурс із прямим доступом там, де цей маршрут дозволений:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*' обходить проксі. Помилка перевірки сертифіката на обох маршрутах указує на спільну проблему довіри; успішний прямий доступ за відхиленого CONNECT — на автентифікацію або політику проксі. Перед поширенням докладного виводу перегляньте його, адже він може містити ідентифікаційні дані.
Збережіть кінцеву точку, ціль і часову позначку разом із результатом. Це фіксує, що спрацювало для конкретного запиту; майбутня доступність, приватність і продуктивність під навантаженням потребують окремих доказів.