Facebook Profile Parser: Модульный парсер с обходом защиты и динамическим сбором данных

Ссылка на работу
image
Заказчику требовался инструмент для автоматизированного поиска и сбора публичных данных о пользователях Facebook по имени и фамилии. Задача включала два уровня парсинга: Массовый сбор базовой информации по всем найденным профилям (ссылка, аватар, количество подписчиков, место работы и учёбы). Глубокий парсинг динамических превью-карточек, которые подгружаются только при наведении курсора на имя пользователя. Основная сложность — структура Facebook использует обфусцированные, повторяющиеся CSS-классы и многоуровневую защиту от автоматизации, что делает стандартные парсеры неэффективными. Решение • Разработала модульную архитектуру парсера на Python: отдельный модуль для поиска пользователей, отдельный — для извлечения данных из динамических карточек. • Реализовала обход защиты от автоматизации: эмуляция поведения реального пользователя, ротация user-agent, использование резидентных прокси, маскировка признаков Selenium/Playwright. • Для работы с динамическим контентом применила подход на основе JavaScript-инъекций: эмуляция события mouseover, ожидание подгрузки карточки через MutationObserver, извлечение данных из временно появляющихся DOM-элементов. • Решила проблему обфусцированных классов: вместо селекторов по классам использовала поиск по атрибутам data-*, относительным XPath, текстовым меткам и иерархии элементов. • Настроила экспорт данных в структурированный JSON/CSV с дедупликацией профилей и логированием ошибок для отладки.