Как одна команда парсит 120 IG-аккаунтов дважды в день
Ребята регулярно тянут посты и сториз с пула Instagram-аккаунтов и делятся тем, как у них это устроено на нашей инфраструктуре.
Что за задача
Каждые 12 часов пробегают по 120 аккаунтам. За один прогон получается 700+ постов и около 350 сториз. Ходят на приватные API /api/v1/feed/user/ и /api/v1/feed/reels_media/, отдельным потоком качают картинки с IG-CDN. Трафика уходит 500-800 МБ на прогон, из этого основная часть - сами картинки.
Почему они порезали пул на 28 отдельных session-id
У нас в пакете можно завести много уникальных sticky-сессий под одним аккаунтом биллинга. Они взяла 28 штук - по одной на каждый свой warmup-аккаунт IG.
Что это им даёт:
- Каждый warmup ходит из своей "соты" - IG видит 28 отдельных мобильных пользователей вместо одного, скачущего по стране. Sticky window в 30 минут не даёт IP перебрасывать посреди чанка запросов, но и не задерживается настолько долго, чтобы IG успел построить по нему модель поведения.
- Если один exit-IP словил rate-limit, страдает только его warmup - остальные 27 продолжают работать. У ребят это выкрутилось в failover: цели с упавшего аккаунта передаются другому, у которого свежий IP.
- Отдельный плюс - линейное масштабирование. Захотят взять 50 аккаунтов, попросят 50 session-id, никакой перекладки в коде.
