シンプルでカスタマイズしやすいHTTPプロクシ "SimpleHTTPProxy" を作った
簡単にカスタマイズできるHTTPプロクシが欲しかったのだけど、Webを探してみてもちょうどよいものがなかったので作った。
ターミナルで、PythonのSimpleHTTPServerモジュールと同じように
$ python -m SimpleHTTPProxy
と叩くと、ローカルホストのtcp/8080に何もしないプロクシサーバが立ち上がる。 もちろん、マルチスレッドで動作。 標準モジュールのみで書かれているので、外部パッケージをインストールする必要もない。
これだけではたいしたことはないのだが、下のようにSimpleHTTPProxyHandlerを継承してハンドラをオーバーライドするだけで、プロクシの挙動を柔軟にカスタマイズすることができる。
#!/usr/bin/env python # RemoveIframeProxy.py from SimpleHTTPProxy import SimpleHTTPProxyHandler, test import re class ReplaceContentProxyHandler(SimpleHTTPProxyHandler): def response_handler(self, headers, body): content_type = headers.get('Content-Type', '') if content_type.startswith('text/html'): return re.sub(r'<iframe[\s\S]+?</iframe>', '<iframe removed>', body) if __name__ == '__main__': test(HandlerClass=ReplaceContentProxyHandler)
$ python -m RemoveIframeProxy
このプロクシは、HTMLコンテンツに含まれるiframe要素をすべて削除する。
リポジトリには他にもサンプルとして、image/*
タイプを持つ画像ファイルをローカル保存するプロクシや、Amazonの商品ページURLを強制リダイレクトで正規化するプロクシなどが用意してある。
自分でコードを書く必要はあるけど、自由度の高いProxomitronのような感じで便利に使えると思う。