Поговорим об использовании электронных таблиц в работе OSINT-аналитиков. В
Для просмотра ссылки необходимо нажать
Вход или Регистрация
нашего цикла статей мы обсуждали автоматизацию генерации дорков (расширенных операторов поисковых запросов). Сегодня раскроем тему скрапинга: разберем основы, сделаем сервис для пробива судимостей и чтения RSS, а также интегрируем поисковые выдачи с сайтов в наши Таблицы.Что такое скрапинг?
Веб-скрейпинг (или скрепинг, или скрапинг от англ. web scraping) — это технология получения веб-данных путем извлечения их со страниц веб-ресурсов. Скрапинг широко применяется для отслеживания цен и товаров, конкурентной разведки, мониторинга новостей или контента, а также извлечения контактной или иной значимой информации.
Начнем издалека. Следующий скрипт позволит нам запросить статус той или иной страницы в сети:
Код:
function getPageStatus(url) {
try {
var response = UrlFetchApp.fetch(url, {
'muteHttpExceptions': true
});
var statusCode = response.getResponseCode();
return " " + statusCode + " " + (statusCode == 200 ? "FOUND" : "NOT FOUND");
} catch (e) {
return "Error: " + e.message;
}
}
Теперь непосредственно к скрапингу. За его запуск в Google Sheets отвечает функция =IMPORTXML. Для начала давайте попробуем скопировать данные из описания Telegram-канала, расположенного по адресу
Для просмотра ссылки необходимо нажать
Вход или Регистрация
. Создаем новую таблицу... К слову, для этого можно просто ввести sheet.new в адресной строке браузера Chrome. В ячейку A2 помещаем адрес
Для просмотра ссылки необходимо нажать
Вход или Регистрация
. Теперь ставим в ячейку B2 функцию:
Код:
=IMPORTXML(A2; "//title")
Это позволит скопировать в таблицу заголовок веб-страницы.
Попробуем использовать другую функцию:
Код:
=IMPORTXML("https://web.archive.org/cdx/search/cdx?url=t.me/tomhunter"; "//body")
Код:
=JOIN(CHAR(10); IMPORTXML(A2; "//html/body"))
Почистим полученные данные. Для этого создадим следующую формулу:
Код:
=MID(B4;1;SEARCH(" var ";B4)-1)
С ее помощью мы удалим текст, содержащийся в ячейке, начиная с определенного символа или слова. В нашем случае, это «var», с которого начинается техническая информация веб-страницы.
Теперь вытащим из полученных данных контакты, которые указаны в описании канала. Для этого мы используем формулу =REGEXEXTRACT, а также регулярные выражения. Регулярное выражение — это шаблон, который обработчик регулярных выражений пытается сопоставить с введенным текстом. Так, например, регулярное выражение, по которому программа распознает в тексте адрес электронной почты, будет следующим:
Код:
[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}
Код:
=REGEXEXTRACT(B4; "[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}")
Вы можете использовать такие регулярные выражения для поиска в тексте ячейки номеров телефонов, никнеймов пользователей, гиперссылок, хэштегов и иной значимой информации.
Скрапинг по судам и физлицам
Теперь давайте попробуем применить описанное выше на примере канала в Telegram для обмена данными с сайтом судебных решений:
-
Для просмотра ссылки необходимо нажать Вход или Регистрация
Для просмотра ссылки необходимо нажать
Вход или Регистрация
и запрос типа «Фамилия И.О.». Проиллюстрирую на примере уже известного нам Бабеля Михаила Александровича, находящегося в федеральном розыске. -
Для просмотра ссылки необходимо нажать Вход или РегистрацияМ.А.
Код:
=JOIN(CHAR(10); IMPORTXML(A2; "//html/body"))
Получилась куча неструктурированных данных. Чтобы разделить ее, воспользуемся формулой =SPLIT. Например:
Код:
=SPLIT(A3; "~")
Это позволит нам разнести данные из ячейки A3 по другим ячейкам в том случае, если между блоками в тексте будет присутствовать символ ~.
Попробуем и здесь очистить поисковую выдачу. Предположим, что нас интересует получение только номеров судебных дел. В таком случае, мы можем составить следующую формулу:
Код:
=MID(D3;1;SEARCH(" от ";D3)-1)
И как видно на скриншоте, отдельной ячейкой мы вывели интересующие нас номера. А по итогам работы с Google Sheets и скрапинга по сайту судебных решений мы получаем удобный сервис, позволяющий парой кликов в таблице находить всю интересующую нас здесь информацию о физических лицах.
Скрапинг по коду сайта
Перейдем к более сложным формам скрапинга. Итак, у нас есть поисковая выдача со страницы
Для просмотра ссылки необходимо нажать
Вход или Регистрация
М.А. Зайдем на эту страницу, кликнем правой кнопкой мыши и выберем функцию «Просмотреть код». В правой части экрана откроется код веб-страницы. Нажимаем «Элементы» — «Выбрать элементы на странице для проверки». Далее кликаем на элемент, который выводит все результаты найденных судебных решений. Копируем адрес нужного элемента в формате Xpath. Должно получиться что-то похожее:
Код:
/html/body/div[1]/div[6]/div/div[2]/div[3]/ul
Теперь пишем новую формулу:
Код:
=IMPORTXML(A1; "/html/body/div[1]/div[6]/div/div[2]/div[3]/ul")
Она позволит выгрузить в таблицу только те сведения, которые содержатся в выбранном элементе, а также разнести их по соседним ячейкам. Попробуем воспроизвести эту функциональность для страницы описания нашего Telegram-канала. Формула будет следующая:
Код:
=IMPORTXML(A1; "//html/body/div[2]/div[2]/div/div[4]")
Использование формулы позволило выгрузить построчно описание канала в нашу таблицу. Теперь распространим формулу для исследования группы каналов. Для этого можно ее растянуть в таблице.
Хочу также отметить, что в нашу таблицу мы можем импортировать и RSS-фиды. За это отвечает функция =IMPORTFEED. Допустим, что мы сгенерировали RSS-поток при помощи Google Alerts. Вывести его в таблицу можно при помощи следующей формулы:
Код:
=IMPORTFEED ("https://www.google.be/alerts/feeds/16150513236241462639/7461767585858944553")
Или при помощи такой:
Код:
=IMPORTFEED ("https://www.google.be/alerts/feeds/16150513236241462639/6304816192407876741")
Согласитесь, классно? Главное, все это сделано с помощью легко доступного сервиса и не стоит миллионы долларов, как различный аналитический софт для спецслужб. Используя примеры из этой статьи, вы с легкостью сможете запрашивать информацию даже с сайтов, не имеющих удобного API для обработки таких запросов.
А мы продолжим рубрику и в следующей статье расскажем о других возможностях электронных таблиц для анализа информации. В частности о визуализации данных на карте или в виде таймлайна. Удачи в работе с OSINT!
Для просмотра ссылки необходимо нажать
Вход или Регистрация