Управление множеством профилей
Santiago держит каждый профиль полностью изолированным — со своим отпечатком, прокси и хранилищем кук — поэтому вы можете запускать одну и ту же автоматизацию по множеству профилей параллельно, и они не будут связаны между собой. Это руководство показывает, как создавать профили массово, запускать их в пределах лимитов тарифа и выполнять задачу по всему набору.
Во всех примерах подразумевается, что демон работает по адресу http://localhost:7891/api.
1. Массовое создание профилей
Заголовок раздела «1. Массовое создание профилей»Каждому профилю нужен свой отпечаток и (в идеале) свой прокси. Сгенерируйте реалистичный отпечаток на стороне сервера, затем создайте профиль с ним.
FP=$(curl -s localhost:7891/api/generate-fingerprint -X POST \ -H 'Content-Type: application/json' -d '{"os":"windows"}' | jq .data)
curl -s localhost:7891/api/profiles -X POST -H 'Content-Type: application/json' -d "{ \"name\": \"worker-01\", \"tags\": [\"batch-jan\"], \"proxy\": {\"type\":\"socks5\",\"host\":\"1.2.3.4\",\"port\":1080,\"username\":\"u\",\"password\":\"p\"}, \"fingerprint\": $FP}"Запустите это в цикле, чтобы создать столько профилей, сколько нужно, каждый со своим прокси:
i=1for PROXY in $(cat proxies.txt); do HOST=${PROXY%%:*}; PORT=${PROXY##*:} FP=$(curl -s localhost:7891/api/generate-fingerprint -X POST -H 'Content-Type: application/json' -d '{"os":"windows"}' | jq .data) curl -s localhost:7891/api/profiles -X POST -H 'Content-Type: application/json' -d "{ \"name\": \"worker-$(printf '%02d' $i)\", \"tags\": [\"batch-jan\"], \"proxy\": {\"type\":\"socks5\",\"host\":\"$HOST\",\"port\":$PORT}, \"fingerprint\": $FP }" > /dev/null i=$((i+1))doneПометьте партию тегом (batch-jan выше), чтобы потом найти и отфильтровать этот набор — см. Организация профилей.
2. Запуск в пределах лимита одновременных сессий
Заголовок раздела «2. Запуск в пределах лимита одновременных сессий»Количество профилей, которые можно запустить одновременно, также ограничено вашим тарифом. Запуск сверх лимита возвращает 403 CONCURRENT_LIMIT_REACHED. Запускайте волнами по размеру вашего тарифа.
for ID in $(curl -s localhost:7891/api/profiles | jq -r '.data[] | select(.tags[]? == "batch-jan") | .id'); do curl -s localhost:7891/api/profiles/$ID/launch -X POST # async 202 # poll until running until [ "$(curl -s localhost:7891/api/profiles/$ID/status | jq -r .data.status)" = "running" ]; do :; done
# ... drive the profile here (navigate / fill-page / extract) ...
curl -s localhost:7891/api/profiles/$ID/stop -X POST # syncs cookies + tabsdoneЗапускайте профили последовательно, как выше, или параллельно — вплоть до вашего лимита одновременных сессий, просто не превышайте его.
3. Выполнение одной и той же задачи по профилям
Заголовок раздела «3. Выполнение одной и той же задачи по профилям»Внутри каждого запущенного профиля используйте обычные эндпоинты автоматизации — см. Заполнение форм для работы с формами и Справочник API для всего остального. Заданные вами отпечаток и прокси применяются автоматически; код вашей задачи никогда их не касается.
4. Сброс сессии между прогонами
Заголовок раздела «4. Сброс сессии между прогонами»Чтобы запустить профиль с чистого состояния без перезапуска, очистите его куки:
curl -s localhost:7891/api/profiles/$ID/cookies -X DELETE# or scope it to one domaincurl -s "localhost:7891/api/profiles/$ID/cookies?domain=.example.com" -X DELETEСм. также
Заголовок раздела «См. также»- Запуск профилей — жизненный цикл запуска / статуса / остановки в деталях.
- Сессии и облачная синхронизация — как состояние каждого профиля сохраняется и синхронизируется.
- Автономные задачи — передайте долгую задачу агенту.