Целью этого проекта является предоставление полных копий политической рекламы с возможностью поиска в библиотеке объявлений Facebook.
С 17.08.2023 он также содержит рекламу, показываемую на территории ЕС не старше этой даты. Дополнительные поля вы можете увидеть ниже.
Facebook уже предоставляет все эти данные через свой веб-интерфейс. Проблема в том, что его трудно найти и, следовательно, он бесполезен для анализа политической рекламы. В дополнение к этому API труднодоступен и во многих отношениях ограничен.
Эти данные уже должны быть общедоступными, поэтому этот набор данных просто помогает обеспечить прозрачность, которую хочет обеспечить Facebook Meta.
Сайт для живого доступа к данным: https://ad-archive.nexxxt.cloud
Данные загружаются непосредственно из их официального API.
Начиная с версии 3, объявления сканируются по пустому запросу (*) во всех странах. Этот запрос оказался достаточно надежным и возвращает все объявления всех страниц.
Раньше данные загружались по page_id, полученному из Ad-отчетов. Они должны включать только страницы, связанные с политикой или вопросами политического значения, но не все они четко отмечены.
Поскольку эти отчеты содержат созданные пользователем имена страниц и заявления об отказе от ответственности, некоторые имена или заявления об отказе от ответственности могут быть искажены странными символами.
Еще я понял, что некоторые объявления (или целые страницы?) временно (или постоянно?) недоступны для поиска по идентификатору страницы, которая их опубликовала. Вы можете идентифицировать их, сверив указанное количество рекламы в отчете с фактически загруженным количеством рекламы в наборе данных. Часто это также приводит к тому, что на страницах кажется 0 рекламы. Вы можете идентифицировать их по пустому полю msg (msg="").
Еще одна проблема заключается в том, что рекламные объявления со страниц page_id=0 не сканируются по их page_id. Часто они просто относятся к «пользователю Instagram с каким-либо идентификатором» или другим пользователям платформы Facebook. Посмотрите отчеты, которые я использовал для получения дополнительной информации. ОБНОВЛЕНИЕ: они сканируются с использованием трюка с пустым запросом. Также позже я понял, что при сканировании очень огромных сайтов пусто, хотя они должны содержать рекламу.
В конечном итоге это привело к тому, что рекламы в этом наборе данных оказалось меньше, чем должно быть согласно отчетам. Теперь должно быть довольно точно.
id("_id" в таблице)
время создания_объявления
ad_creative_bodies
ad_creative_link_captions
ad_creative_link_descriptions
ad_creative_link_titles
ad_delivery_start_time
ad_delivery_stop_time
языки
идентификатор_страницы
имя_страницы
издатель_платформы
подписи
валюта
доставка_по_региону
демографическое_распределение
оцененная_аудитория_размер
впечатления
тратить
целевые_локации
целевой_пол
target_ages
eu_total_reach
бенефициары_плательщики
age_country_gender_reach_breakdown
визуализированный (определяет, доступна ли визуализированная версия) (УСТАРЕЛО, начиная с V5!)
rendering_started (используется для постановки рекламы в очередь на рендеринг) (УСТАРЕЛО, начиная с V5!)
потеряно (верно, если объявление не было найдено при рендеринге)
_last_updated (содержит дату последнего сканирования/обновления объявления)
Поле ad_snapshot_url
не сканируется, поскольку оно представляет собой просто комбинацию идентификатора и вашего токена доступа:
https://www.facebook.com/ads/archive/render_ad/?id=<id>&access_token=<token>
Чтобы перейти к объявлению, если у вас нет токена доступа, вы можете использовать эту ссылку:
https://www.facebook.com/ads/library/?id=<id>
Чтобы фактически отобразить рекламу без токена доступа, вы можете использовать мой работник Cloudflare для проксирования данных: https://render-facebook-ad.lejo.workers.dev/<id>
Возможно, вам придется отключить некоторые настройки конфиденциальности в браузерах ( например Firefox) блокируют межсайтовые запросы Facebook.
Для получения дополнительной информации посмотрите файл example.json
или описание полей в официальном API.
Скрипт из папкипредварительного preview_renderer
используется для создания скриншота соответствующих элементов из ad_snapshot_url
каждого объявления. Отдельная база данных render_queue
используется для постановки объявлений в очередь на рендеринг. После рендеринга изображения хранятся в течение одного месяца, но могут быть перерисованы в любое время.
После рендеринга вы можете просмотреть их здесь: https://facebook-ad-previews.nexxxt.cloud/<id>.jpg
Вы можете в любое время получить доступ к текущим данным, хранящимся для объявления, по адресу: https://ad-archive.nexxxt.cloud/ad/<AD_ID>
. Эту конечную точку также можно использовать для автоматической загрузки рекламной информации и разрешать запросы из разных источников. Обратите внимание, что сканирование новых объявлений и их добавление в базу данных может занять некоторое время.
17.08.2023 в базе данных появились все объявления ЕС с этой даты. Теперь он более чем в два раза больше прежнего. Объявления для ЕС содержат дополнительные поля, как указано выше.
Поля, используемые для рендеринга, были удалены (кроме потерянных) и теперь обрабатываются отдельно.
Скачать Метаданные (02.11.2023) Kaggle
Скачать Метаданные (01.03.2024) Kaggle
Загрузка базы данных в файл JSON и ее сжатие заняли у меня все больше времени. Вот почему я перешел на сжатые файлы BSON (bson.gz). Они являются родными для mongodb и могут быть созданы намного быстрее и надежнее.
Они создаются с помощью инструмента mongodump и могут быть загружены в вашу собственную базу данных mongodb с помощью mongorestore. Вы также можете конвертировать их в обычные файлы JSON, используя инструмент bsondump.
В дополнение к этому вы можете использовать файл метаданных для восстановления индексов, используемых в моей базе данных.
Некоторые из этих наборов данных также доступны на Kaggle.
Скачать метаданные (07.09.2022)
Скачать Метаданные (22.10.2022) Kaggle
Скачать Метаданные (30.12.2022) Kaggle
Скачать Метаданные (15.03.2023) Kaggle
Скачать Метаданные (06.08.2023) Kaggle
Объявления сканировались с использованием пустого запроса (*) во всех странах. По идее теперь должно содержать всю рекламу в библиотеке.
Для предварительного просмотра добавлено поле rendered
.
Файла коллекции todo.json
нет, так как статистика неверна и не имеет отношения к этому сканированию.
Скачать (09.02.2022)
Скачать (03.04.2022)
Скачать (26.05.2022)
Версия 2 и старше:
todo.json
-Файл: основан на рекламных отчетах и содержит все просканированные страницы с отметкой времени последнего сканирования и курсором пейджинга (после).
Также содержит статистику страниц для нескольких отказов от ответственности и стран. Большие страницы должны быть готовы. Для обновления использовались несколько отчетов за разные даты.
Скачать
Сначала я просканировал немецкую и американскую библиотеку, а затем решил провести полное сканирование.
Для этого сканирования todo.json
содержит поле lang
, определяющее отчет, из которого получена страница. Все отчеты были автоматически загружены в базу данных с помощью скрипта import_reports.py
.
Скачать отчеты
Данные по этим странам также доступны на kaggle.com.
Германия (DE) Скачать отчет
США (США) Скачать отчет
Раньше сканирование осуществлялось на основе официальных отчетов Facebook. Я загрузил их в базу данных mongodb, и старый скрипт crawl.py
извлек данные из API и добавил их в коллекцию объявлений. Теперь я просто использую трюк с пустым запросом (*), чтобы загрузить рекламу со всех страниц во всех странах, см.: crawlall.py
Для этого вам понадобится токен доступа (а лучше несколько). Скрипт автоматически обрабатывает ограничение скорости, но вы не сможете использовать несколько потоков, если у вас недостаточно токенов.
Для получения дополнительной информации просто просмотрите файл crawlall.py
.
Если у вас есть дополнительная информация об API/библиотеке Facebook или вы считаете, что существуют какие-либо юридические проблемы с распространением этих данных, свяжитесь со мной: [email protected] или откройте проблему!