+7 (812) 677-17-05

Google Sheets в OSINT: Скрапинг данных

#

Всем привет! Мы снова говорим об использовании электронных таблиц в работе OSINT-аналитиков. В первой части нашего цикла статей мы обсуждали автоматизацию генерации дорков (расширенных операторов поисковых запросов). Во второй — коснулись интеграции API для исследования данных. Сегодня раскроем тему скрапинга: разберем основы, сделаем сервис для пробива судимостей и чтения 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;

}

}

На выходе мы получим сведения о доступности страницы (код 200), о ее отсутствии (404), превышении сроков ожидания (429) или ошибках в записях DNS. Нам это пригодится для различных задач — от проверки никнеймов в социальных сетях до сканирования веб-ресурсов.

Теперь непосредственно к скрапингу. За его запуск в Google Sheets отвечает функция =IMPORTXML. Для начала давайте попробуем скопировать данные из описания нашего Telegram-канала, расположенного по адресу https://t.me/tomhunter.

Создаем новую таблицу… К слову, для этого можно просто ввести sheet.new в адресной строке браузера Chrome. В ячейку A2 помещаем адрес https://t.me/tomhunter. Теперь ставим в ячейку B2 функцию:

Это позволит нам скопировать в таблицу заголовок веб-страницы.

Попробуем использовать другую функцию:

Она выгрузит в таблицу все содержимое веб-страницы. Обычно тут возникают проблемы, поскольку содержимое может оказаться раскиданным по нескольким ячейкам. Чтобы собрать всю информацию в одной ячейке, изменим функцию следующим образом:

Почистим полученные данные. Для этого создадим следующую формулу:

С ее помощью мы удалим текст, содержащийся в ячейке, начиная с определенного символа или слова. В нашем случае, это ‭«var», с которого начинается техническая информация веб-страницы.

Теперь вытащим из полученных данных контакты, которые указаны в описании канала. Для этого мы используем формулу =REGEXEXTRACT, а также регулярные выражения. Регулярное выражение — это шаблон, который обработчик регулярных выражений пытается сопоставить с введенным текстом. Так, например, регулярное выражение, по которому программа распознает в тексте адрес электронной почты, будет следующим:

А формула, которую мы вставим в ячейку:

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

Скрапинг по судам и физлицам

Теперь давайте попробуем применить описанное выше на примере канала в Telegram для обмена данными с сайтом судебных решений:

Это позволит нам загружать в таблицу сведения об уголовных, административных и гражданских делах физлица. Вспомним нашу первую статью и сгенерируем готовую гиперссылку, которая будет содержать страницу поиска https://sudact.ru/regular/doc/?regular-txt= и запрос типа ‭«Фамилия И.О.». Проиллюстрирую на примере уже известного нам Бабеля Михаила Александровича, находящегося в федеральном розыске.

Теперь сформируем для этой веб-страницы формулу:

Получилась куча неструктурированных данных. Чтобы разделить ее, воспользуемся формулой =SPLIT. Например:

Это позволит нам разнести данные из ячейки A3 по другим ячейкам в том случае, если между блоками в тексте будет присутствовать символ ~.

Попробуем и здесь очистить поисковую выдачу. Предположим, что нас интересует получение только номеров судебных дел. В таком случае, мы можем составить следующую формулу:

И как видно на скриншоте, отдельной ячейкой мы вывели интересующие нас номера. А по итогам работы с Google Sheets и скрапинга по сайту судебных решений мы получаем удобный сервис, позволяющий парой кликов в таблице находить всю интересующую нас здесь информацию о физических лицах.

Скрапинг по коду сайта

Перейдем к более сложным формам скрапинга. Итак, у нас есть поисковая выдача со страницы https://sudact.ru/regular/doc/?regular-txt=Бабель М.А. Зайдем на эту страницу, кликнем правой кнопкой мыши и выберем функцию ‭«Просмотреть код». В правой части экрана откроется код веб-страницы. Нажимаем ‭«Элементы»  —  ‭«Выбрать элементы на странице для проверки». Далее кликаем на элемент, который выводит все результаты найденных судебных решений. Копируем адрес нужного элемента в формате Xpath. Должно получиться что-то похожее:

Теперь пишем новую формулу:

Она позволит выгрузить в таблицу только те сведения, которые содержатся в выбранном элементе, а также разнести их по соседним ячейкам. Попробуем воспроизвести эту функциональность для страницы описания нашего Telegram-канала. Формула будет следующая:

Использование формулы позволило выгрузить построчно описание канала в нашу таблицу. Теперь распространим формулу для исследования группы каналов. Для этого можно ее растянуть в таблице.

Хочу также отметить, что в нашу таблицу мы можем импортировать и RSS-фиды. За это отвечает функция =IMPORTFEED. Допустим, что мы сгенерировали RSS-поток при помощи Google Alerts. Вывести его в таблицу можно при помощи следующей формулы:

Или при помощи такой:

Согласитесь, классно? Главное, все это сделано с помощью легко доступного сервиса и не стоит миллионы долларов, как различный аналитический софт для спецслужб. Используя примеры из этой статьи, вы с легкостью сможете запрашивать информацию даже с сайтов, не имеющих удобного API для обработки таких запросов.

А мы продолжим рубрику и в следующей статье расскажем о других возможностях электронных таблиц для анализа информации. В частности о визуализации данных на карте или в виде таймлайна. Удачи в работе с OSINT и подписывайтесь на наш блог!

17.09.2024 Блог
Читайте все свежие новости первыми. Подписывайтесь на нас в Telegram
Том Хантер Том Хантер Pentest Guru

Мистер Том Хантер, вдохновитель нашей компании по обеспечению кибербезопасности

Спасибо

Спасибо, что заполнили форму! Мы свяжемся с вами в ближайшее время по указанным контактным данным!

Обратный звонок

Заполните форму и наш специалист свяжется с вами в ближайшее время.

    Принимаю соглашение об использовании персональных данных