Mitmproxy Является ли очень универсальным и мощным инструментом, направленным на то, что имеется в том, что подразумевает его название: действовать как Человек в середине Расшифровав соединения TLS между браузером и целевым веб-сайтом.
Определив свой собственный Орган сертификата И потому, что вы явно рассказывают вашему браузеру доверять этому совершенно новым власть , вы можете позволить Mitmproxy Чтобы услышать трафик между вашим браузером и удаленным веб-сайтом, даже когда это соединение выполнено через TLS. Кроме того, используя его мощный Аддон Система, вы даже можете вместить поток данных и например, автоматически сохранять ресурсы, отрицать некоторые, чтобы загрузить, изменять заголовки, удалять файлы cooks и т. Д. Эти скрипты просты Python Сценарии, которые используют выделенные Mitmproxy Python API.
Это дало мне идею разработать простое метод для реализации крошечного персонального брандмауэра, чтобы избавиться от всех этих ресурсов Pesky Ads, таких как эти цифровые маркетинговые услуги. Используя один из 3 Mitmproxy Команды, вы можете получить представление о том, сколько из этих ресурсов загружаются при отправке на любой веб-сайт, как вы можете использовать меню разработчиков Chrome.
Остерегайтесь, когда начинается, Mitmproxy Можно увидеть и перехватить все трафик HTTPS между вашим браузером и удаленным сайтом. Поэтому вы должны принять все необходимые действия безопасности, чтобы предотвратить кого-либо, кроме вас, чтобы использовать вашу конфигурацию.
Так что давайте разработаем немного.
Первые шаги
Сначала скачайте Mitmproxy исполняемые файлы для вашей платформы. Я лично использую Linux, поэтому я только что загрузил архив и извлекил 3 исполняемых файла в выделенный каталог. Для разницы между тем, иди к https://docs.mitmproxy.org/stable/
Далее начните свой прокси без параметров на данный момент:
./mitmdump.
которые по умолчанию слушают 8080 Порт TCP
Начните свой браузер Chrome и сообщите ему использовать Mitmproxy. :
Гугл Хром
Гель до http://mitm.it и следуйте инструкциям. Для Linux я просто нажал Другое и сертификат CA, сгенерированный MITMPROXY, когда он сначала загружен:
mitmproxy-ca-cert.pem
Теперь введите Chrome://Настройки/Сертификаты нажмите на Органы власти , Импорт и выберите файл CA, который вы загрузите. Сертификат CA теперь установлен.
Перезагрузите Chrome с той же аргументами командной строки и Voilà!
Примечание. Я не пытался установить файл CA для других браузеров, но кажется немного сложнее.
Подделка данных
Аддоны являются простыми сценариями Python, которые просто получают или даже измените трафик HTTPS. Список Addon образцов расположен здесь: https://docs.mitmproxy.org/stable/addons-examples/
Этот пример аддона используется для блокировки ресурсов в зависимости от списка Regex URL. Это может быть улучшено наверняка:
""" Block URLs matching a regex, by just returning an HTTP 404 code. As addons can be called with an argument, the file containing the URLs is hardcoded, but could be extracted from an environment variable for example. Unfortunately in Python, contrary to Rust, you can't define a regex set and try to match any regex for a string. """ import re from mitmproxy import http from mitmproxy import ctx class BlockResource: def __init__(self): # define a new list for holding all compiled regexes. Compilation is done once when the addon # is loaded self.urls = [] # read the configuration file having all string regexes for re_url in open('urls.txt'): self.urls.append(re.compile(re_url.strip())) # log how many URLS we have read ctx.log.info(f"{len(self.urls)} urls read") def response(self, flow): # test if the request URL is matching any of the regexes if any(re.search(url, flow.request.url) for url in self.urls): ctx.log.info(f"found match for {flow.request.url}") flow.response = http.HTTPResponse.make(404) addons = [ BlockResource() ]
И образец для URLS.TXT :
scorecardresearch\.com geo\.yahoo\.com adversting\. ads\. \.taboola\. \.doubleclick\. \.xiti\. criteo \.pubmatic\. \.chartbeat\.net \.twimg\.com \.keywee\.co \.\w+adserver\.com outbrain \.bouncex\.
Теперь просто начните Mitmproxy с -s Параметр: ./mitmdump -s -s ./block-urls.py.
Наверняка, для многих URL Regexes, это может быть подаптимальным, потому что Python должен попытаться сопоставить все регулярные вещества до того, что соответствует.
Бедес к Mitmproxy Команда для этого удивительного куска кода!
Надеюсь это поможет!
Фото Blaz Erzetic на Unsplash
Оригинал: “https://dev.to/dandyvica/use-mitmproxy-as-a-personal-firewall-4m6h”