言語ごとに別の Web サイトを取得する必要があるカスタム スクレーパーを使用します (これはアーキテクチャの制限です)。site1.co.uk、site1.es、site1.de など。
しかし、site2.com/en、site2.com/de、site2.com/es などのように、URL で区切られた多くの言語で Web サイトを解析する必要があります。
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'))
しかし、ターゲット ホストは、Web サーバーからの応答である 301 リダイレクトを生成します - 「ページはここに移動されました」と site2.com/en へのリンク
URL の書き換え、つまり site2.com/en --> site2.com/de で遊んだときに機能しました。しかし、異なるホスト (正確にはサブドメインとルート ドメイン) では機能しません。
上記の handle_request メソッドの Host ヘッダーを置き換えようとしました。
for key in r.headers.keys():
if key.lower() == 'host':
r.headers[key] = ['site2.com']
また、リファラーを置き換えようとしましたが、すべて役に立ちませんでした。
サブドメインからメイン ドメインへのリクエストを最終的にスプーフィングするにはどうすればよいですか? HTTP(s) クライアントの警告が生成された場合は、実際のブラウザではなく、スクレーパー (および警告をオフにすることができる) に必要なので問題ありません。
ありがとう!