Получаем сертификат ЦРУ перебирая архивы

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Когда-то давно передо мной стояла задача по поиску файлов на ресурсах, которые могли уже не работать или определённые данные с них были удалены. Тогда для этой цели я использовал веб архивы Common Crawl и самопальный инструмент для автоматизации взаимодействия с ним.

Сейчас мне понадобилось решить схожую задачу, но Common Crawl упал и пока не встаёт... Поэтому было принято решение допилить свой инструмент до уровня скоростного велосипеда с использованием Wayback Machine и поделиться небольшим опытом извлечения архивных данных.

Не погружаясь сильно в детали, далее, в общих чертах я опишу что используют сервисы для архивации, как мы можем этим пользоваться через API, а в конце мы сертифицируемся по-ЦРУшному используя инструмент GoGetCrawl.

Общие моменты

Для начала стоит упомянуть про общие моменты сервисов веб архивирования. Архивы хранятся в файлах WARC/ARC формата, затем с помощью CDX сервера мы можем исследовать данные файлы используя различные фильтры. Популярным инструментом, с помощью которого это осуществляется являться pywb.

Например, на скриншоте ниже можно увидеть результат запроса http://<server_addr>/cdx?url=https://twitter.com/internetarchive/ к CDX серверу:

alt
Источник https://support.archive-it.org/hc/en-us/articles/115001790023-Access-Archive-It-s-Wayback-index-with-the-CDX-C-API

Как видим в результате будут получены данные содержащие оригинальный URL (original), статус при его запросе (status code) на момент сбора данных (timestamp), тип файла (mimetype) и другие интересные параметры. Более детальное описание CDX сервера и используемых при запросах параметрах можно найти тут.

Помимо сервисов Wayback Machine и Common Crawl, которые мы рассмотрим далее существуют множество других. Но их архивы менее обширны и скорее носят локальный характер по стране или тематике. Некоторые из них можно посмотреть тут.

Извлекаем файлы из архивов

Думаю многие пользовались web-архивами через удобные интерфейсы. Сейчас я покажу как это сделать неудобно используя API на примере 2 популярных сервисов. К примеру мы хотим получить все JPEG файлы на cia.gov и его поддоменах, а затем скачать интересующий нас файл.

Wayback Machine

Работаем ручками с Wayback machine

Для осуществления нашей задачи на данном ресурсе мы используем следующий запрос:

https://web.archive.org/cdx/search/cdx?url=*.cia.gov/*&output=json&limit=10&filter=mimetype:image/jpeg&collapse=urlkey

Где:

  • /cdx/search/cdx - endpoint CDX сервера,

  • url=*.cia.gov/* - исследуемый URL,

  • filter=mimetype:image/jpeg - фильтрация по MIME типу JPEG файла,

  • output=json - требуем результат в формате JSON,

  • limit=10 - ограничиваемся 10 результатами,

  • collapse=urlkey - получаем уникальные URL (без этого много дубликатов).

В результате мы получаем 10 найденных изображений в архиве. Из интересного, помимо URLов, ответ содержит MIME тип файлов (полезно если не используется фильтрация), и статус код при доступе к объекту на момент составления архива:

[["urlkey","timestamp","original","mimetype","statuscode","digest","length"],
["gov,cia)/++theme++contextual.agencytheme/images/aerial-analysis-btn.jpg", "20150324125120", "https://www.cia.gov/++theme++contextual.agencytheme/images/aerial-analysis-btn.jpg", "image/jpeg", "200", "OJRFXPWOPZQGPRIZZQZOTRSZKAVLQLKZ", "3845"],
["gov,cia)/++theme++contextual.agencytheme/images/aerial_cropped.jpg", "20160804222651", "https://www.cia.gov/++theme++contextual.agencytheme/images/Aerial_Cropped.jpg", "image/jpeg", "200", "3WII7DZKLXM4KSQ5UTEKO5EL7H5VTB35", "196685"],
["gov,cia)/++theme++contextual.agencytheme/images/background-launch.jpg", "20140121032437", "https://www.cia.gov/++theme++contextual.agencytheme/images/background-launch.jpg", "image/jpeg", "200", "3C4G73473VYPOWDNA4VJUV4Q7EC3IXN4", "44501"],
["gov,cia)/++theme++contextual.agencytheme/images/background-video-panel.jpg", "20150629034524", "https://www.cia.gov/++theme++contextual.agencytheme/images/background-video-panel.jpg", "image/jpeg", "200", "CQCUYUN5VTVJVN4LGKUZ3BHWSIXPSCKC", "71813"],
["gov,cia)/++theme++contextual.agencytheme/images/bannerheads/an-1.jpg", "20130801151047", "https://www.cia.gov/++theme++contextual.agencytheme/images/bannerheads/an-1.jpg", "image/jpeg", "200", "GPSEAEE23C53TRGHLMBXHWQYNB3EGBCZ", "14858"],
["gov,cia)/++theme++contextual.agencytheme/images/bannerheads/an-2.jpg", "20130801150245", "https://www.cia.gov/++theme++contextual.agencytheme/images/bannerheads/an-2.jpg", "image/jpeg", "200", "L6P2MNAAMZUMHUEHJFGXWEUQCHHMK2HP", "15136"],
["gov,cia)/++theme++contextual.agencytheme/images/bannerheads/an-3.jpg", "20130801151656", "https://www.cia.gov/++theme++contextual.agencytheme/images/bannerheads/an-3.jpg", "image/jpeg", "200", "ODNXI3HZETXVVSEJ5I2KTI7KXKNT5WSV", "19717"],
["gov,cia)/++theme++contextual.agencytheme/images/bannerheads/an-4.jpg", "20130801150219", "https://www.cia.gov/++theme++contextual.agencytheme/images/bannerheads/an-4.jpg", "image/jpeg", "200", "X7N2EIYUDAYWMX7464LNTHBVMTEMZUVN", "20757"],
["gov,cia)/++theme++contextual.agencytheme/images/bannerheads/banner-benefits-background.jpg", "20150510022313", "https://www.cia.gov/++theme++contextual.agencytheme/images/bannerheads/banner-benefits-background.jpg", "image/jpeg", "200", "VZJE5XSAQWBD6QF6742BH2N3HOTSCZ4A", "12534"],
["gov,cia)/++theme++contextual.agencytheme/images/bannerheads/chi-diversity.jpg", "20130801150532", "https://www.cia.gov/++theme++contextual.agencytheme/images/bannerheads/CHI-diversity.jpg", "image/jpeg", "200", "WJQOQPYJTPL2Y2KZBVJ44MVDMI7TZ7VL", "6458"]]

Далее, чтобы получить доступ к архивированному файлу, мы берем один из результатов выше и используем следующий запрос:

https://web.archive.org/web/20150324125120id_/https://www.cia.gov/++theme++contextual.agencytheme/images/aerial-analysis-btn.jpg

Где:

  • /web - endpoint сервера с файлами,

  • 20230502061729id_ - timestamp полученный в предыдущем запросе + id_,

  • https://company.habr.com/images/lanit.jpg - url файла из предыдущего запроса.

Common Crawl

Работаем ручками с Common Crawl

В случае с данным сервисом задача немного отяжеляется тем, что он перегружен, и сейчас пользоваться CDX сервером Common Crawl крайне затруднительно. Тем не менее я опишу как это делается.

Для начала нам необходимо выбрать версию архива (Common Crawl обновляет архивы раз в месяц или два). К примеру мы выбрали версию за Март\Апрель 2023, в этом случае аналогичный запрос будет выглядеть следующим образом:

https://index.commoncrawl.org/CC-MAIN-2023-14-index?url=*.cia.gov/*&output=json&limit=10&filter=mimetype:image/jpeg&collapse=urlkey

Как и ожидалось, сервера Common Crawl на момент написания статьи всё ещё перегружены и 504 Gateway Time-out-ают меня

Источник: https://habr.com/ru/articles/736016/


Интересные статьи

Интересные статьи

Многие знают о существовании такого ПО, как TeamViewer, но не все в курсе о нестандартных сценариях его использования. Знали ли вы, что можете легально использовать сессии, неограниченные во времени...
Несмотря на то, что в наше время существует letsencrypt и подобные сервисы с утилитами, которые всё делают сами, я считаю что каждый айтишник должен уметь выпускать самоподписанные сертификаты для баз...
Айдар присоединился к EPAM Anywhere в качестве DevOps-инженера полтора года назад, и за это время прошел несколько программ сертификации, какое-то время был на бенче, сме...
Искал я как-то себе дешевый VPS сервер. Ну для отладки чего-нибудь, моделирования сетей... Да мало ли еще для чего может понадобится личный сервер? И вот в результатах по...
И вот, когда я уже практически добавил в криптографический АРМ на базе токенов PKCS#11 cryptoarmpkcs генерацию самоподписанных сертификатов и готов был приступить к написанию статьи, мне пришло ...