Керування кількома профілями
Santiago тримає кожен профіль повністю ізольованим — власний відбиток, проксі та сховище кук — тож ви можете запускати однакову автоматизацію на багатьох із них паралельно без зв’язування профілів між собою. Цей посібник показує, як створювати профілі масово, запускати їх у межах лімітів вашого тарифу та виконувати завдання на всьому наборі.
Усі приклади припускають, що демон працює за адресою http://localhost:7891/api.
1. Створення профілів масово
Section titled “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. Запуск у межах ліміту одночасності
Section titled “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. Виконання однакового завдання на всіх профілях
Section titled “3. Виконання однакового завдання на всіх профілях”Усередині кожного запущеного профілю використовуйте звичайні ендпоінти автоматизації — див. Заповнення форм для роботи з формами та Довідник API для всього іншого. Налаштований вами відбиток і проксі застосовуються автоматично; код вашого завдання їх ніколи не торкається.
4. Скидання сесії між запусками
Section titled “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Дивіться також
Section titled “Дивіться також”- Запуск профілів — життєвий цикл запуску / статусу / зупинки детально.
- Сесії та хмарна синхронізація — як стан кожного профілю зберігається та синхронізується.
- Автономні завдання — передайте тривале завдання агенту.