Контроль веб-запросов R при помощи OWASP ZAP

R
webscraping
сбор данных
webAPI
Author

i2z1@ddslab.ru

Published

December 26, 2023

Когда работаешь с какой-нибудь API на R иногда нужно проконтролировать структуру веб-запросов, которая отправляется от нас в Интернет. С появлением пакета httr2 это стало делать гораздо проще с помощью функции httr2::req_dry_run(), которая показыает структуру подготовленного запроса, никуда реально его не отправляя. Но когда запрос генерирует сторонний пакет, и что-либо не работает – то нужен объективный контроль.

Для этого можно использовать инструмент веб-безопасника OWASP Zed Attack Proxy – он же OWASP ZAP.

OWASP ZAP предназначен, главным образом, для исследования безопасности веб-приложений. Это проект с открытым исходным кодом, развиваемый сообществом OWASP. Для динамического анализа (DAST) веб-приложений внутри OWASP ZAP есть модуль проксирования и перехвата веб-запросов.

Как настроить OWASP ZAP для перехвата HTTP пакетов, генерируемых R? Приведу инстукцию для Ubuntu.

Инструкция

  1. Заходим в ZAP
  2. Идем в Tools - Options - Network - Server Certificates - Generate - Save

Сохраняем файл в любом месте.

  1. Добавляем сгенерированный новый сертификат в наше системное хранилище сертификатов:
sudo cp <путь к нашему сертификату> /usr/share/ca-certificates/
sudo dpkg-reconfigure ca-certificates

В появившемся меню выбираем звездочкой наш новый файл.

  1. Осталось в рабочей сессии R проинициализировать переменную окружения:
Sys.setenv(
  https_proxy = "http://127.0.0.1:8080"
  )

Все – трафик должен проходить сквозь прокси OWASP ZAP, и мы в его интерфейсе увидим перехваченный HTTP трафик!