Недавно я наткнулся на Telegram-канал, где парень продает короткие и запоминающиеся имена пользователей Instagram (3–4 буквы, чистые слова и т. д.). Время от времени он показывает небольшие части своих Python-скриптов — вы можете увидеть многопоточную проверку, threading.Lock() и статусы типа «Проверено», «Доступно», «Блокировано», «Недоступно». Очевидно, он скрывает реальный исходный код и основную логику.
Я понимаю основную идею: скрипт загружает списки слов и продолжает отправлять запросы в Instagram для проверки доступности имени пользователя. Как только что-то возвращает Avail, оно тут же пытается его запросить.
Но есть несколько архитектурных деталей, которые мне все еще интересны. Если у кого-то есть опыт работы с подобными инструментами или он понимает, как он работает изнутри, я был бы признателен за некоторые идеи:
Откуда они берут свои наборы данных? Это просто перебор всех возможных комбинаций из 3–4 символов, использование утекших дампов имен пользователей или получение дескрипторов с таких платформ, как TikTok/Twitter?
Как они справляются с ограничениями скорости? Instagram довольно агрессивно относится к борьбе со спамом — обычные прокси-серверы IPv4 почти сразу же подвергаются атакам с ошибками 429. Используют ли они большие пулы чередующихся домашних/мобильных прокси?
Что делать с «мертвыми» именами пользователей? Например, если я попробую ввести имя пользователя из 4 букв (например, @guhw), оно не появится в поиске, но при регистрации появится сообщение «Недоступно». Я предполагаю, что это связано с удаленной или навсегда заблокированной учетной записью. Могут ли эти программы проверки когда-либо вернуть себе такие имена пользователей, или они отслеживают только те, которые были недавно выпущены (после периода восстановления)?
Хотелось бы услышать какие-либо технические сведения о том, как этот рынок на самом деле работает за кулисами.