応募トーク
これは応募されたトークです。聞きたいと思うトークをSNSで拡散しましょう。選考時に参考にさせていただきます。
talk
HTTPプロクシライブラリproxy2の設計と実装(ja)
スピーカー
inaz2
対象レベル:
中級
カテゴリ:
Useful libraries
説明
Pythonスクリプトで柔軟に拡張可能なHTTP(S)プロクシライブラリproxy2を紹介するとともに、PythonでHTTPプロクシを実装する際に考慮すべき点、HTTPS対応の詳細についてproxy2の実装を交えながら解説する。
目的
HTTPプロクシの仕組み、ソケットサーバに関する標準クラスの概要と使い方、SSL CA/サーバ証明書の生成とHTTPSサーバの実装方法について理解を深める。
概要
HTTP通信の中継を行うHTTPプロクシには、SquidやNginxのようなキャッシュ・ロードバランスを目的としたものと、Burp ProxyやProxomitronのようなデバッグ・コンテンツ書き換えを目的としたものがある。前者は大量のHTTPリクエストを効率的にさばくため、後者はサーバから送られてくるHTTPレスポンスの確認や通信ログの記録、アクセス制限などに用いられる。発表者は、このような多岐にわたるプロクシ機能の実装をPythonスクリプトの形で柔軟に行うことができるHTTP(S)プロクシライブラリ[proxy2](https://github.com/inaz2/proxy2)を開発した。このライブラリを用いることで、開発者は実現したい機能に注力してプロクシサーバを開発することができる。このセッションでは、
* HTTP(S)プロクシによって実現されるさまざまな機能の概要
* proxy2を利用したHTTP(S)プロクシの実装例
* ソケットサーバに関する標準モジュールの概要と使い方
* HTTPプロクシを実装する際に考慮すべき仕様
* HTTPS対応に必要なSSL CA/サーバ証明書の生成と利用方法
について、proxy2における実装を交えながら紹介する。なお、ここでのHTTPはHTTP/1.1を指すものとする。