Я работаю над сценарием перенаправления для mitmproxy, работающего на Raspberry Pi. Я просмотрел сообщение здесь, и это не сработало. . Случилось так, что запрос все еще проходил по исходному URL-адресу хоста. После некоторых изменений он попытался перенаправить на новый сайт, но коды состояния не отражали этого, и он по-прежнему загружал ресурсы исходного сайта. Сделайте путь пустой строкой, исправив это временно (он больше не вызывал ресурсы, добавляя их к новому URL-адресу). Кроме того, поскольку исходный сценарий не работал, я попытался внести изменения, чтобы отразить, как работает ручное перенаправление, добавив «Местоположение» в заголовки ответа.
import mitmproxy
from mitmproxy.models import HTTPResponse
from netlib.http import Headers
def request(flow):
if flow.request.pretty_host.endswith("sojourncollege.com"):
mitmproxy.ctx.log( flow.request.path )
method = flow.request.path.split('/')[3].split('?')[0]
flow.request.host = "reddit.com"
flow.request.port = 80
flow.request.scheme = 'http'
flow.request.path = ''
if method == 'getjson':
flow.request.path=flow.request.path.replace(method,"getxml")
flow.request.headers["Host"] = "reddit.com"
flow.response.status_code = 302
flow.response.headers.append("Location")
mitmproxy.ctx.log(flow.response.headers)
flow.response.headers["Location"] = "reddit.com"
То, что происходит сейчас, повторяется. 301 Получите запросы на http://reddit.com и сообщение [no content]. Если я загружу вкладку сети в Chrome, чтобы просмотреть запрос, который он пытается получить, "http://wwww.reddit.comhttp/1.1", и я понятия не имею, почему это так.
Это то, что, кажется, работает для других, я понятия не имею, почему это не на пи.