#mitmproxy
Вопрос:
Я пытаюсь разделить свой сетевой трафик на два потока с помощью Mitmproxy. Поэтому у меня есть один входящий прокси-сервер, который принимает трафик с моего iPhone, и я использую два дополнительных прокси-сервера, на которые перенаправляется трафик. Я начинаю три примера так:
mitmproxy —режим вверх по течению 127.0.0.1:8083 -с mitmRoot.py —ssl-небезопасно
mitmproxy —прослушивание-порт 8083 —ssl небезопасен
mitmproxy —прослушивание-порт 8082 —ssl-небезопасно
Я использую следующий, очень простой скрипт на Python для маршрутизации трафика:
class mitmRoot:
def request(self, flow: mitmproxy.http.HTTPFlow):
if "github.com" in str(flow.request.url):
flow.live.change_upstream_proxy_server(("localhost", 8082))
addons = [
mitmRoot()
]
Теперь все работает отлично, если я использую только один прокси-сервер без какого-либо восходящего прокси-сервера. Я установил сертификат на телефон и могу открыть любой веб-сайт в браузере
Однако, если я добавлю два вышестоящих прокси, я увижу, что начну видеть ошибки сертификации, в основном для материалов, связанных с iPhone:
clientdisconnect
clientconnect
Certificate verification error for gateway.icloud.com: self signed certificate in certificate chain (errno: 19, depth: 1)
Ignoring server verification error, continuing with connection
Client Handshake failed. The client may not trust the proxy's certificate for gateway.icloud.com.
Интересно, что я все еще могу устанавливать соединения с веб-сайтами, за исключением тех, где я переключаю вышестоящий сервер. Поэтому в этом примере я не могу открыть github.com.
Прокси-сервер ввода теперь выдает ошибки сертификата для github.com кроме того, в то время как вышестоящий прокси-сервер, который должен получать трафик (тот, что на порту 8082), вообще не видит никакого трафика, я также вижу некоторые сообщения clientconnect/ clientdisconnect в потоке:
https://github.com/
clientconnect
clientconnect
Certificate verification error for github.com: self signed certificate in certificate chain (errno: 19, depth: 1)
Ignoring server verification error, continuing with connection
Certificate verification error for keyvalueservice.icloud.com: self signed certificate in certificate chain (errno: 19, depth: 1)
Ignoring server verification error, continuing with connection
Client Handshake failed. The client may not trust the proxy's certificate for keyvalueservice.icloud.com
Я пробовал разные параметры конфигурации, например «—set add_upstream_certs_to_client=true», но до сих пор я не могу настроить это правильно.
Похоже, что есть какая-то проблема с конфигурацией, но я пока не понимаю, почему это происходит.
Спасибо Вам за вашу помощь!
Комментарии:
1. Собственные службы Apple часто используют закрепление сертификатов (особенно те, которые используют «самозаверяющие» сертификаты mitmproxy), поэтому, насколько мне известно, единственный способ разрешить такой трафик-обойти такие хосты с помощью этой
--ignore-hosts
опции.2. Это то, о чем я тоже думал, но тогда почему это работает с одним экземпляром прокси-сервера без подключенных вышестоящих прокси-серверов?