MITMProxy: умная замена URL

Мы используем пользовательский скребок, который требует отдельного веб-сайта для языка (это ограничение архитектуры). Как site1.co.uk, site1.es, site1.de и т. Д.

Но нам нужно проанализировать веб-сайт на многих языках, разделенных URL-адресами, например site2.com/en, site2.com/de, site2.com/es и т.

Я думал о MITMProxy: я мог перенаправить все запросы следующим образом:

en.site2.com/* --> site2.com/en
de.site2.com/* --> site2.com/de
...

Я написал небольшой скрипт, который просто берет URL-адреса и переписывает их:

class MyMaster(flow.FlowMaster):

  def handle_request(self, r):
    url = r.get_url()

    # replace URLs
    if 'blabla' in url:
      r.set_url(url.replace('something', 'another'))

Но целевой хост генерирует перенаправление 301 с ответом от веб-сервера - «страница была перемещена сюда» и ссылка на site2.com/en

Это работало, когда я играл с переписыванием URL, то есть site2.com/en-> site2.com/de. Но для разных хостов (поддомен и корневой домен, если быть точным) это не работает.

Я попытался заменить заголовок Host в методе handle_request сверху:

for key in r.headers.keys():
        if key.lower() == 'host':
            r.headers[key] = ['site2.com']

Также я попытался заменить Referrer - все это не помогло.

Как я могу наконец подделать этот запрос от субдомена к основному домену? Если он генерирует предупреждение клиента HTTP (s), это нормально, так как нам нужно это для скребка (и предупреждений там можно отключить), а не для реального браузера.

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос