Подключите SotaProxy к вашему стеку
Пошаговые руководства для Python, Playwright, Puppeteer, Selenium, cURL и антидетект-браузеров. Скопируйте, вставьте, запустите.
Разработка
Антидетект-браузер
Также работает с
Двенадцать страниц ниже описывают одно и то же: хост, порт и логин. Меняется только то, куда эту строку положить и что библиотека делает с соединениями дальше. Если инструмент уже выбран, открывайте его страницу. Если ещё нет, здесь короче.
Одна строка, двенадцать мест
Ротация и липкие сессии идут через общий шлюз: хост proxy.sotaproxy.com, порт 10000, а страна, город, номер сессии и её время жизни задаются суффиксами в логине. Статические адреса, и ISP, и датацентровые, суффиксов не принимают: там хостом выступает выданный вам IP, порт 50100, а SOCKS5 на 50101.
Всё остальное это вопрос того, в какое поле конкретная библиотека хочет получить эти три вещи. У curl это флаг, у requests словарь, у Playwright объект в контексте браузера, у антидетект-браузера поле в настройках профиля.
Поэтому если строка работает в curl, она работает везде. Проверять интеграцию имеет смысл именно в таком порядке: сначала curl, потом библиотека. Иначе вы отлаживаете чужой код вместо своей конфигурации.
Что между библиотеками действительно отличается
Разница не в синтаксисе, а в четырёх вещах, которые всплывают уже после того, как первый запрос прошёл.
- Переиспользование соединений. Библиотека, которая держит keep-alive, останется на том же выходе дольше, чем вы рассчитывали при ротации. Если нужен новый адрес на каждый запрос, соединения надо закрывать явно.
- Кто резолвит доменные имена. При SOCKS5 имя может резолвить клиент или прокси, и это разные вещи: в первом случае ваш DNS-запрос уходит мимо прокси и выдаёт вашу настоящую сеть.
- Отпечаток TLS. Библиотека и браузер выглядят по-разному ещё до того, как цель посмотрит на адрес. Адрес тут ни при чём, и менять его бессмысленно, если отказ приходит на уровне рукопожатия.
- Где живёт аутентификация. Часть инструментов принимает логин и пароль только в URL, часть только отдельным заголовком, а часть не умеет аутентификацию по SOCKS5 вовсе. Отсюда большинство ошибок 407 на первом подключении.
Антидетект-браузеры это отдельный случай
Здесь прокси задаётся не на запрос, а на профиль, и это меняет требования.
Время жизни липкой сессии должно перекрывать время жизни профиля. Если сессия истекает раньше, профиль в середине работы получает другой адрес, и это заметнее, чем если бы адрес не менялся вовсе.
Часовой пояс и язык профиля настраиваются под город выхода, а не под ваш собственный. Про часовые пояса стоит смотреть страницу нужной страны: в Мексике и России разница внутри страны доходит до нескольких часов, в Марокко пояс двигается по лунному календарю.
Один профиль это один адрес. Два профиля на одном адресе имеют смысл только если вы сознательно моделируете двух человек за одним домашним подключением.
Что спрашивают про подключение
С чего начинать отладку?
С curl. Если строка подключения работает там, дальше вы отлаживаете библиотеку, а не доступ. Обратный порядок обычно заканчивается чтением чужих issue.
Почему приходит 407?
Почти всегда из-за того, где стоит аутентификация: часть инструментов принимает её только в URL, часть отдельным заголовком, а некоторые не умеют её по SOCKS5.
Почему адрес не меняется, хотя включена ротация?
Библиотека держит соединение открытым. Ротация происходит на новом соединении, поэтому keep-alive надо закрывать явно.
Нужен ли отдельный тариф для антидетект-браузера?
Нет, это те же адреса. Разница только в том, что прокси задаётся на профиль и время жизни сессии должно перекрывать время работы профиля.
Что делать, если отказ приходит до ответа сервера?
Смотреть на клиент, а не на адрес. Отпечаток TLS у библиотеки и у браузера разный, и смена страны тут ничего не решает.