Googleの圧縮プロキシをChrome以外でも使う方法

福田です。Google Chromeに搭載されている圧縮プロキシについて、Compression Proxy拡張などをベースに色々調べて見たところ、いくつかの条件を満たせばすぐに使えるようになることがわかりました。そう、「いくつかの条件」を満たせば。

Sponsored link

雷

まず条件をまとめる

  • HTTPプロキシが設定できる
  • 通信にいちいちヘッダをインジェクションできる

これだけです。でも実のところ言うと、二つ目は厳しいかと思います。

ヘッダの仕様

差し込む作業に難があるものの、ヘッダー挿入は非常に簡単です。
Chrome-Proxyという名前のヘッダを各通信に差し込みます。そのヘッダの内容は次の通りです(例です)、「ps=1478298178-0-0-0, sid=d50f5a5281810bf7b84a156a5b142133, b=2840, p=71, c=win」
具体的に解説します。
psから始まるセクションは最初のハイフンまでがUNIX秒、それ以後がランダムな数字です。適当に0でもオッケーっぽいです。


UNIX秒はBashが使える環境であれば

date +%s

で求められます。

そして、sidはMD5でハッシュ化されています。中身は次の通り(例です)「1478298178ac4500dd3b7579186c1b0620614fdb1f7d61f9441478298178」という内容です。
分解すると、(UNIX秒)ac4500dd3b7579186c1b0620614fdb1f7d61f944(UNIX秒)という形になっています。ac~944の部分は認証キーで、固定のようです。

そしてbはビルド番号を意味していて、Chrome 54.0.2840.71であれば二つ目の点以降、三つ目の点までの数字のことになります。
pはパッチ番号(リビジョン?)を意味していて、先ほどのバージョンであれば三つ目の点以降最後までの数字になります。
cは動作しているOSを表しますが、これは嘘書いていても大丈夫なようです。ですからwinを選択します。

これらを全て表すと、先ほどの内容になります。
Bashでヘッダーを適宜生成するのであれば、次の通りのコマンドを打ち込んでください。各バージョンは適宜お確かめの上、BLDとPCH変数を書き換えてください。

BLD=2840 ; PCH=71 ; UEP=`date +%s` ; echo "Chrome-Proxy: ps-${UEP}-0-0-0, sid=`echo ${UEP}ac4500dd3b7579186c1b0620614fdb1f7d61f944${UEP} | md5`, b=${BLD}, p=${PCH}, c=win"

たったこれだけです。あとはヘッダを挿入するだけです。ただ、リアルタイムにヘッダを作りつつリクエストを送るのは難しい上、Google社との提携関係は一切なく、なおかつ無保証の方法なのでここにはあえて書きません。ちなみにData Compression Proxy拡張ではリアルタイム差し込みはChromeの組み込み関数を使って実行しているようです(chrome.declarativeWebRequest)。

HTTPプロキシのURLは?

HTTPプロキシのURLは「proxy.googlezip.net:443」(つまりホスト名はproxy.googlezip.netでポートが443です)か、「compress.googlezip.net:80」で受け付けているようです。これをシステムの設定などに入れ、ヘッダを挿入することで使えるようになります。ただし、前者の方はHTTPSで受け付けるProxy(ただし転送できるのはHTTP通信のみ)なのでそれに対応したシステムが必要になります。ですので、実際やるとしたら後者の方がいくばくか現実的でしょう。

まとめ

  • compress.googlezip.net:80をHTTPプロキシとして設定
  • 各HTTP通信のヘッダにはChrome-Proxyというものを差し込む

実際の節約量は私の環境下では30%ぐらいになり、かなり効果的です。通信の高速化もできることですし、是非お試しくださいませ。

Sponsored link

Sponsored link

Leave a Reply