407 Proxy Authentication Required
Ответ 407 приходит от нас, а не от сайта, к которому вы шли. Адресат этого запроса не видел.
Что это значит
Мы не смогли сопоставить ваше соединение с аккаунтом. Либо неверны учётные данные, либо, что бывает гораздо чаще, строка логина не разобралась из-за кривого суффикса.
Ответ 401 это совсем другая история: он приходит от адресата и означает, что вас отверг сайт. Если вы видите 401, прокси отработал.
Обычные причины
По частоте: пробел в названии города вместо дефиса, код страны строчными, недопустимое значение TTL, учётные данные в поле, которое их игнорирует, и только потом действительно неверный пароль.
Отдельного упоминания заслуживают инструменты на Chromium. Флаг --proxy-server принимает только хост и порт, поэтому всё до собаки тихо отбрасывается. Puppeteer требует page.authenticate, Playwright требует отдельных полей, а Selenium требует selenium-wire или сгенерированного расширения.
Кривое и правильное
login_c_us wrong, country code must be upper case
login_c_US_city_New York wrong, space instead of a hyphen
login_c_US_ttl_10m wrong, only 30s, 15m and 1h exist
login_c_US_city_New-York correctКак локализовать
Сократите логин до голого аккаунта без суффиксов и попробуйте снова. Если так работает, добавляйте по одному суффиксу, пока не сломается, и последний добавленный и есть виновник.
Деление логина пополам
curl -x login:password@proxy.sotaproxy.com:10000 https://api.ipify.org
curl -x login_c_US:password@proxy.sotaproxy.com:10000 https://api.ipify.org
curl -x login_c_US_s_1_ttl_15m:password@proxy.sotaproxy.com:10000 https://api.ipify.orgГде учётные данные теряются молча
Регулярный источник 407 это инструмент, который принимает URL прокси с учётными данными и затем игнорирует эту часть. Обычный подозреваемый это автоматизация на Chromium: флаг запуска берёт хост и порт, а всё до собаки исчезает без предупреждения.
Три решения для инструментов на Chromium
# Puppeteer: flag for the address, authenticate for the credentials
args: ["--proxy-server=http://proxy.sotaproxy.com:10000"]
await page.authenticate({ username: "login_c_US", password: "password" });
# Playwright: separate fields, per context
proxy={"server": "http://proxy.sotaproxy.com:10000",
"username": "login_c_US", "password": "password"}
# Selenium: selenium-wire, credentials inside the URL