Перейти к содержимому

Управление множеством профилей

Santiago держит каждый профиль полностью изолированным — со своим отпечатком, прокси и хранилищем кук — поэтому вы можете запускать одну и ту же автоматизацию по множеству профилей параллельно, и они не будут связаны между собой. Это руководство показывает, как создавать профили массово, запускать их в пределах лимитов тарифа и выполнять задачу по всему набору.

Во всех примерах подразумевается, что демон работает по адресу http://localhost:7891/api.

Каждому профилю нужен свой отпечаток и (в идеале) свой прокси. Сгенерируйте реалистичный отпечаток на стороне сервера, затем создайте профиль с ним.

Generate a fingerprint + create a profile
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
}"

Запустите это в цикле, чтобы создать столько профилей, сколько нужно, каждый со своим прокси:

Create N profiles
i=1
for 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. Запускайте волнами по размеру вашего тарифа.

Launch a wave, work, then stop
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 + tabs
done

Запускайте профили последовательно, как выше, или параллельно — вплоть до вашего лимита одновременных сессий, просто не превышайте его.

3. Выполнение одной и той же задачи по профилям

Заголовок раздела «3. Выполнение одной и той же задачи по профилям»

Внутри каждого запущенного профиля используйте обычные эндпоинты автоматизации — см. Заполнение форм для работы с формами и Справочник API для всего остального. Заданные вами отпечаток и прокси применяются автоматически; код вашей задачи никогда их не касается.

Чтобы запустить профиль с чистого состояния без перезапуска, очистите его куки:

Clear a profile's cookies
curl -s localhost:7891/api/profiles/$ID/cookies -X DELETE
# or scope it to one domain
curl -s "localhost:7891/api/profiles/$ID/cookies?domain=.example.com" -X DELETE