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), это нормально, так как нам нужно это для скребка (и предупреждений там можно отключить), а не для реального браузера.
Спасибо!