Перейти до вмісту

Керування кількома профілями

Santiago тримає кожен профіль повністю ізольованим — власний відбиток, проксі та сховище кук — тож ви можете запускати однакову автоматизацію на багатьох із них паралельно без зв’язування профілів між собою. Цей посібник показує, як створювати профілі масово, запускати їх у межах лімітів вашого тарифу та виконувати завдання на всьому наборі.

Усі приклади припускають, що демон працює за адресою http://localhost:7891/api.

1. Створення профілів масово

Section titled “1. Створення профілів масово”

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

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. Запуск у межах ліміту одночасності

Section titled “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. Виконання однакового завдання на всіх профілях

Section titled “3. Виконання однакового завдання на всіх профілях”

Усередині кожного запущеного профілю використовуйте звичайні ендпоінти автоматизації — див. Заповнення форм для роботи з формами та Довідник API для всього іншого. Налаштований вами відбиток і проксі застосовуються автоматично; код вашого завдання їх ніколи не торкається.

4. Скидання сесії між запусками

Section titled “4. Скидання сесії між запусками”

Щоб запустити профіль із чистого стану без перезапуску, очистіть його куки:

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