AdsPower настройка прокси: карточка профиля, импорт списком и локальный интерфейс
- Что понадобится
- Поля прокси в карточке профиля
- Общий список адресов и привязка к отдельному профилю
- Массовый импорт профилей из таблицы и формат строки
- Встроенная проверка соединения и её границы
- Раскладка профилей по адресам
- Локальный интерфейс AdsPower и запуск профилей из кода
- Хранение пар логина и пароля
- Проверка после настройки
- Разбор ошибок
AdsPower это антидетект-браузер, который держит изолированные профили с раздельными отпечатками, куками и хранилищем. Страница разбирает, куда в нём вносятся адреса посредника, как раздать один список на сотню карточек и как убедиться, что каждый профиль выходит в сеть через назначенный ему адрес.
1. Что понадобится
Сборка AdsPower Browser ветки 6 под Windows или macOS, вход в аккаунт и открытый раздел «Управление профилями». Список адресов нужен в одном из двух видов: IP:PORT, когда авторизация идёт по привязанному в кабинете адресу, и IP:PORT:LOGIN:PASS, когда авторизация идёт парой логина и пароля. Я держу под рукой обе выгрузки, потому что часть машин работает из офисной сети с постоянным внешним адресом, часть с ноутбуков через случайные сети. Протокол беру SOCKS5 или HTTP, оба поддерживаются карточкой напрямую. Если планируется запуск профилей из скрипта, заранее включите локальный интерфейс в настройках программы, иначе порт будет закрыт.
Отдельно проверьте, что список адресов у вас свежий. Пул на стороне сервиса живёт своей жизнью, ротация внутри него автоматическая, и выгрузка недельной давности легко окажется наполовину неактуальной. Я обновляю файл перед каждым большим прогоном профилей, это занимает минуту и снимает половину будущих вопросов к настройке. Для браузерных профилей я держу свежую выгрузку под рукой, тогда карточка с залогиненным аккаунтом получает ровную сессию без обрывов. Такую же раскладку списка в соседнем антидетекте я разбирал на странице про адреса под отдельные профили Dolphin Anty.
2. Поля прокси в карточке профиля
Создание профиля открывается кнопкой «Создать профиль» в разделе «Управление профилями». Блок с сетевыми настройками называется «Информация о прокси» и стоит сразу под платформой и учётной записью сайта. Первое поле в нём задаёт способ подключения, и от выбора зависит, какие поля появятся ниже.
| Поле карточки | Что вписывать | Замечание |
|---|---|---|
| Способ подключения к прокси | «Новый прокси» или «Список прокси» | «Новый прокси» вписывает адрес в саму карточку, «Список прокси» подтягивает строку из общего справочника |
| Тип прокси | SOCKS5, HTTP или HTTPS | тип берётся из формата выгрузки, угадывать его вручную бессмысленно |
| Хост прокси | адрес до двоеточия | без схемы http:// и без пробелов по краям |
| Порт | число после двоеточия | одно число, диапазоны карточка не принимает |
| Имя пользователя прокси | логин из пары | поле пропадает, если авторизация идёт по привязанному адресу |
| Пароль прокси | пароль из пары | регистр символов важен, копируйте целиком |
| Канал проверки IP | IP2Location, IPInfo, DB-IP, IP-API | канал влияет на то, какой город и часовой пояс покажет проверка |
Ниже блока сети живут настройки отпечатка. Часовой пояс и язык интерфейса я всегда ставлю в режим определения по адресу выхода, чтобы профиль не спорил сам с собой: браузер сообщает сайту одно, адрес сообщает другое, и такая пара разъезжается на первой же проверке. WebRTC перевожу в режим замены, тогда внутренний адрес машины наружу не уходит. Это три переключателя, и они закрывают самые заметные расхождения между карточкой и реальным маршрутом трафика. Подробнее про то, как список адресов ложится на профили в антидетекте, я разбирал на странице про прокси для антидетект-браузеров.
Выбор «Список прокси» меняет вид блока: пять полей сворачиваются в одну строку поиска по справочнику. Набираете кусок адреса или заметку, программа подставляет подходящую запись, тип и порт подтягиваются вместе с ней. Рядом со строкой справочника видно, сколько профилей её уже используют, и это единственное место в программе, где такой счётчик показан честно. Я смотрю на него перед каждым новым профилем.
Кнопка «Проверить сеть прокси» стоит справа от полей. Нажимать её нужно до сохранения карточки, потому что после сохранения профиль уйдёт в общий список и найти его среди сотни других будет дольше, чем перенабрать поля заново. Проверка занимает 2-4 секунды и рисует результат прямо под полями, отдельного окна не открывается.
3. Общий список адресов и привязка к отдельному профилю
У AdsPower два способа хранить адреса, и выбор между ними определяет, сколько времени займёт замена выгрузки через неделю. Первый способ вписывает адрес прямо в карточку профиля. Второй складывает адреса в раздел «Прокси» и оставляет в карточке ссылку на строку справочника.
| Признак | Адрес внутри карточки | Строка из общего списка |
|---|---|---|
| Где хранится | в самом профиле | в разделе «Прокси» |
| Замена адреса у 50 профилей | правка каждой карточки или повторный импорт | правка одной строки справочника |
| Видно, кто занял адрес | нет, придётся собирать глазами | да, счётчик профилей стоит рядом со строкой |
| Подходит для | 5-10 разовых карточек | постоянному парку профилей |
| Риск задвоить адрес | высокий | низкий, повтор виден сразу |
Я перешёл на общий список после того, как столкнулся с простой арифметикой: смена выгрузки при 80 карточках это 80 открытий формы, а через справочник те же 80 профилей переезжают за 12 правок. Справочник заполняется вставкой сразу пачки строк, поле принимает многострочный текст. Формат строки там свободнее, чем в карточке: понимаются и хост:порт:логин:пароль, и запись со схемой.
203.0.113.24:8000:u4471:Kf3sQm2p
socks5://u4471:Kf3sQm2p@203.0.113.24:8000
http://u4471:Kf3sQm2p@198.51.100.77:3128
198.51.100.77:3128
Последняя строка без пары логина и пароля работает при авторизации по привязанному адресу. В пакет входят две привязки, менять их можно свободно, так что офисный адрес и домашний адрес спокойно живут рядом. Помните про арифметику потоков: 1000 потоков на обычных пакетах и до 3000 на корпоративном, при двух привязках лимит делится пополам между ними.
4. Массовый импорт профилей из таблицы и формат строки
Кнопка «Импорт» в разделе профилей открывает загрузку таблицы. Шаблон скачивается тут же, приходит файлом .xlsx, и колонки в нём переименовывать запрещено: разбор идёт по именам заголовков, а порядок колонок роли не играет. Я заполняю шаблон выгрузкой из своей таблицы формулами, руками не набиваю ничего.
| Колонка шаблона | Что кладу | Обязательна |
|---|---|---|
| Group Name | имя группы, куда упадут профили | да |
| Name | имя профиля, например shop-014 | нет, подставится автоматически |
| Proxy Type | socks5, http, https или noproxy | да, если адрес есть |
| Proxy Host | адрес без порта и схемы | да, если тип задан |
| Proxy Port | порт числом | да, если тип задан |
| Proxy User | логин пары | нет |
| Proxy Password | пароль пары | нет |
| Username | учётная запись сайта | нет |
| Password | пароль сайта | нет |
| Cookie | куки строкой JSON | нет |
| Remark | заметка, куда я пишу дату выгрузки | нет |
Разбить выгрузку IP:PORT:LOGIN:PASS по четырём колонкам проще всего прямо в таблице. Формула делит строку по двоеточию и раскладывает части по местам:
=ТЕКСТ.ДО(A2;":") -> Proxy Host
=ТЕКСТ.ДО(ТЕКСТ.ПОСЛЕ(A2;":");":") -> Proxy Port
=ТЕКСТ.ДО(ТЕКСТ.ПОСЛЕ(A2;":";2);":") -> Proxy User
=ТЕКСТ.ПОСЛЕ(A2;":";3) -> Proxy Password
Три ошибки импорта, которые я делал сам и теперь проверяю до загрузки файла. Первая: порт приезжает текстом с пробелом на конце, AdsPower молча создаёт профиль и обрывается при старте. Вторая: тип написан заглавными как SOCKS5, разбор ждёт нижний регистр. Третья: одна и та же строка адреса попала в 40 карточек, потому что формула протянулась без сдвига, и весь парк вышел с одного порта. Для проверки я перед импортом считаю в таблице количество уникальных значений колонки Proxy Port и сверяю с количеством строк.
После загрузки AdsPower показывает отчёт: сколько профилей создано, сколько строк отклонено и по какой причине. Отклонённые строки скачиваются отдельным файлом, его я правлю и загружаю повторно. Если работаете с парой логина и пароля, удобнее сразу взять выгрузку в формате с авторизацией, где адреса IPv4 отдаются строкой с логином и паролем, тогда колонки Proxy User и Proxy Password заполняются той же формулой без ручного вмешательства.
5. Встроенная проверка соединения и её границы
Кнопка проверки делает один запрос через указанный адрес к сервису определения местоположения и рисует результат: адрес выхода, страну, часовой пояс и провайдера. Зелёная надпись означает, что канал открыт и авторизация принята. Этого достаточно, чтобы поймать опечатку в порту или перепутанный логин.
Дальше начинается то, что проверка не покрывает по своей природе. Она делает один короткий запрос, поэтому длинную сессию под нагрузкой не моделирует. Она обращается к порту 80 или 443, поэтому связь с нестандартным портом целевого сервиса остаётся непроверенной. Она смотрит адрес выхода, поэтому утечку через WebRTC и разрешение имён мимо посредника показать не может. И она ничего не говорит о том, как целевой сайт отнесётся к этому адресу: у площадки свои правила, и проверка про них не осведомлена.
Полезно понимать и то, что показанный проверкой город берётся из базы выбранного канала. Разные каналы держат разные базы, поэтому один и тот же адрес у IP2Location и IP-API легко покажет соседние города. Пугаться такого расхождения не нужно, оно говорит про базы канала. Важно другое: часовой пояс профиля должен браться из того же канала, который вы оставили в карточке, иначе браузер и проверка будут показывать разные значения одному и тому же адресу.
Я закрываю эти четыре пробела вручную, ровно четырьмя действиями. Запускаю профиль и держу открытой страницу с автообновлением 3-4 минуты, смотрю, не рвётся ли канал. Открываю сервис проверки WebRTC и сверяю, что локального адреса машины там нет. Открываю страницу проверки разрешения имён и смотрю, чей сервер отвечает. И только потом иду на целевую площадку. Порядок действий один и тот же, занимает около 5 минут на профиль, при массовом заведении я прогоняю выборочно каждую десятую карточку.
6. Раскладка профилей по адресам
Сколько профилей вешать на один адрес, зависит от того, что эти профили делают. Пассивная карточка, которая раз в сутки открывает почту, стоит дёшево по нагрузке. Карточка с непрерывной лентой и загрузкой файлов забирает поток надолго.
| Тип парка | Профилей на адрес | Что учесть при раскладке |
|---|---|---|
| Разовая ручная работа | 1 | адрес виден только этой карточке, проверка занимает минуту |
| Постоянные аккаунты одной площадки | 2-3 | одинаковый часовой пояс у всех карточек группы |
| Массовые прогоны и сбор данных | 5-8 | считайте потоки, каждая вкладка это отдельное соединение |
| Фоновая проверка страниц | 10 и больше | ставьте паузы между запусками, старт 10 профилей разом даёт всплеск |
Пул около 12 000 адресов позволяет не жаться при раскладке. Я держу правило: группа профилей одной площадки получает адреса из одной выгрузки, сделанной за один раз, тогда у них похожий профиль маршрута. Разные площадки развожу по разным выгрузкам. Для карточек, где важно минимальное количество служебных заголовков на выходе, беру анонимные адреса для браузерных профилей, они не добавляют к запросу лишних полей.
Если парк живёт месяцами и профили запускаются каждый день, удобнее взять доступ к пулу на месяц: включение занимает около 5 минут, трафик безлимитный, и раскладку не нужно пересобирать каждые несколько суток. Бесплатный тест до 2 часов я использую перед новой раскладкой, чтобы проверить формат выгрузки на паре карточек.
7. Локальный интерфейс AdsPower и запуск профилей из кода
Программа поднимает у себя HTTP-сервер на порту 50325. Он включается в настройках, там же выдаётся ключ доступа, и без ключа свежие сборки отвечают отказом. Через этот интерфейс профиль стартует, отдаёт адрес отладочного порта и подхватывается автоматизацией.
API=http://local.adspower.net:50325/api/v1
KEY=<ключ из настроек>
curl -s "$API/user/list?page=1&page_size=50" -H "Authorization: Bearer $KEY"
curl -s "$API/browser/start?user_id=k1abcde&open_tabs=1" -H "Authorization: Bearer $KEY"
curl -s "$API/browser/active?user_id=k1abcde" -H "Authorization: Bearer $KEY"
curl -s "$API/browser/stop?user_id=k1abcde" -H "Authorization: Bearer $KEY"
Ответ на старт содержит ws.puppeteer, ws.selenium, debug_port и путь к исполняемому файлу. Дальше подключается любой драйвер. Между стартами держите паузу в 1-2 секунды, иначе программа не успевает поднять окна и отдаёт пустой ответ.
Адрес посредника меняется тем же интерфейсом, без открытия карточки руками. Тело запроса на обновление выглядит так:
{
"user_id": "k1abcde",
"user_proxy_config": {
"proxy_soft": "other",
"proxy_type": "socks5",
"proxy_host": "203.0.113.24",
"proxy_port": "8000",
"proxy_user": "u4471",
"proxy_password": "Kf3sQm2p"
}
}
Запрос уходит методом POST на /api/v1/user/update. Именно этим я обновляю парк после смены выгрузки: скрипт читает свежий файл, сопоставляет строки с идентификаторами профилей и прогоняет обновление по списку. 80 карточек переезжают за полторы минуты. Значение proxy_soft со словом other говорит программе, что адрес свой, без него интерфейс ждёт название встроенного поставщика.
Полезная мелочь про поведение интерфейса. Если профиль уже открыт, повторный вызов browser/start вернёт тот же отладочный порт без перезапуска окна, поэтому скрипт можно вызывать повторно без опаски. Вызов browser/active отвечает статусом Active или Inactive и служит дешёвой проверкой перед стартом. А browser/stop закрывает окно корректно, с сохранением куки профиля, чего не делает завершение процесса из диспетчера задач.
Проверить, что порт открыт, можно одной строкой в PowerShell:
Test-NetConnection -ComputerName 127.0.0.1 -Port 50325 | Select-Object TcpTestSucceeded
8. Хранение пар логина и пароля
Пара логина и пароля от посредника лежит в трёх местах сразу: в карточке профиля, в файле выгрузки и в скрипте автоматизации. Каждое из трёх мест хочет отдельного обращения.
В карточке пароль хранится внутри базы профилей AdsPower и наружу не показывается, поле отображается точками. Копия базы профилей уезжает в облако сервиса при синхронизации, поэтому доступ к самому аккаунту AdsPower стоит закрыть вторым фактором. Файл выгрузки я кладу в отдельную папку и не отправляю его в общие таблицы: пара из выгрузки открывает доступ к пулу целиком.
В скриптах пару я передаю переменными окружения, в тексте кода её нет.
setx PROXY_USER "u4471"
setx PROXY_PASS "Kf3sQm2p"
export PROXY_USER=u4471
export PROXY_PASS=Kf3sQm2p
Когда работаю с общей машиной, пару беру из менеджера паролей при старте скрипта и в переменных не оставляю. Смена пары в кабинете обесценивает все старые копии разом, это самый быстрый способ закрыть утечку, если файл выгрузки где-то засветился. Заодно напомню про вторую дорогу без пары: привязка своего адреса в кабинете снимает вопрос хранения полностью, потому что хранить становится нечего. Как это устроено со стороны браузерных профилей, я расписывал в материале про список адресов под профили AdsPower.
9. Проверка после настройки
Профиль запускается кнопкой «Открыть» в списке. Первая вкладка должна открыться за 3-5 секунд, длинная пауза на старте почти всегда означает, что канал до посредника не поднялся и браузер ждёт таймаута.
Порядок проверки, который я прохожу на каждой новой раскладке:
1. Открыть сервис определения адреса и сверить показанный адрес со строкой карточки. Совпадение по последнему октету достаточно. 2. Открыть страницу проверки WebRTC. Локальных адресов вида 192.168.* в выдаче быть не должно. 3. Сверить часовой пояс страницы с часовым поясом профиля. Расхождение означает, что режим определения по адресу выхода не включился. 4. Открыть вторую вкладку и обновить обе одновременно, посмотреть, держится ли адрес. 5. Оставить профиль открытым на 10 минут с активной страницей и вернуться, адрес должен остаться прежним внутри сессии.
Дополнительно я смотрю сетевой журнал в инструментах разработчика: если в списке запросов встречается прямое обращение мимо посредника, видно сразу по времени ответа, оно резко короче остальных. Такое случается с расширениями, которые ходят в свои домены отдельным каналом, и лечится отключением лишних расширений в профиле.
Ещё одна проверка занимает 10 секунд и экономит час разбирательств. Запустите два профиля одной группы и сравните адреса. Одинаковый адрес у двух карточек означает задвоенную строку при импорте, и найти это до начала работы гораздо приятнее, чем после.
Результат проверки я записываю в поле «Заметка» карточки: дата прогона и короткая пометка о том, что все пять пунктов пройдены. Поле выводится отдельной колонкой в списке профилей, сортируется и фильтруется, поэтому через неделю сразу видно, какие карточки после смены выгрузки ещё никто не открывал. Мелочь, а парк из сотни профилей она держит в порядке лучше любой внешней таблицы.
10. Разбор ошибок
| Сообщение или симптом | Причина | Что делать |
|---|---|---|
Не удалось подключиться к прокси при проверке | опечатка в хосте или порте, пробел по краям поля | перевставить строку целиком, убрать пробелы, повторить проверку |
ERR_PROXY_CONNECTION_FAILED при открытии профиля | адрес выпал из выгрузки | взять свежую выгрузку и обновить строку в справочнике «Прокси» |
ERR_TUNNEL_CONNECTION_FAILED только на части сайтов | целевой порт закрыт на маршруте | сменить тип на SOCKS5, он пропускает произвольные порты |
407 Proxy Authentication Required | пара логина и пароля не подставилась | проверить поля авторизации, при пустых полях включить привязку адреса в кабинете |
| Профиль открылся, показывает собственный адрес машины | в карточке выбран режим без посредника | вернуть «Новый прокси» или «Список прокси» в поле способа подключения |
| Проверка проходит, профиль стартует минуту | канал до порта поднимается медленно из-за загрузки локальной сети | проверить, сколько профилей стартует одновременно, развести старты паузами |
| Канал проверки IP не отвечает | сервис определения местоположения недоступен | переключить канал на другой из выпадающего списка |
| Часовой пояс профиля не совпал с адресом | режим определения по адресу выхода выключен | включить автоопределение в блоке отпечатка и перезапустить профиль |
| Локальный интерфейс отвечает отказом | ключ доступа не передан или порт 50325 занят | взять ключ в настройках, при занятом порте сменить его там же |
| При импорте отклонены все строки | заголовки колонок переименованы или тип написан заглавными | скачать шаблон заново, привести Proxy Type к нижнему регистру |
Отдельно про поведение адреса внутри одной сессии. Ротация внутри пула автоматическая, и это работает в вашу пользу: адреса обновляются сами, вручную ничего перебирать не нужно. Внутри открытой сессии профиля соединение держится стабильно, а свежая выгрузка перед новым прогоном даёт актуальный набор строк. Я обновляю выгрузку раз в несколько дней и обновляю парк скриптом через локальный интерфейс, вся операция занимает пару минут.
Соседние страницы справочника по антидетект-браузерам разбирают ту же настройку в других программах: настройка прокси в BitBrowser с её собственным менеджером адресов, подключение адресов в GenLogin и работа с прокси в Octo Browser, где раскладка по группам устроена иначе. Когда через посредник нужно провести обычную программу на той же машине, смотрите страницу про маршрутизацию приложений через Proxifier.