金曜落としてごめんなさい
東海道らぐLT @ OSC 2018 Tokyo/Spring
はしもとまさ
自己紹介
はしもとまさ(もしくは鹿)
●
東海道らぐ@関東案内人
次回横浜オフは 3/24 ダヨ!
●
たま〜にちびぎーこ保護者会
(別名:日本openSUSEユーザ会)
●
おーぷん万葉で自然言語処理について学んでいたり…?
ところで・・・
土曜日のみ出展?
(急遽変更!??)
かな変換システム「Genji」の展示?
(今気づいたw)
早い話が・・・
相変わらず
仕事炎上中だった…
…と愚痴ってても仕方ないので、、、
本日のお題は
BrowserMob-Proxy のお話
Browsermob-Proxy とは
●
HTTPの通信ログであるHARファイルを吐かせるプロキシ
●
Selenium とも連携可能でテスト自動化にも使用可能
●
元々はJavaで動いている
けど、REST API を使用した Python ラッパー等もある
●
Apache License 2.0 な OSS
…それにしてもネットの情報は案外英語ばかりですね…
ところで HAR ってなに?
●
JSONで書かれた、HTTP 通信ログ
●
ステータスコードをみたりとか時間計測もできたり
●
HAR を取得するくらいならブラウザからでもできるよ〜
Firefox なら
「開発ツールを表示」して
「ネットワーク」を
選択した状態で右クリック
⇛「HAR形式ですべて保存」
を選択
BrowserMob-Proxy はこんなふうに動く
ブラウザー
BrowserMob-Proxy
HARファイル
Webサーバー
まぁプロキシですよね…
Python ではこんな感じでかける
from browsermobproxy import Server
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har("google")
driver.get("http://www.google.co.uk")
proxy.har # returns a HAR JSON blob
server.stop()
driver.quit()
1. プロキシサーバー起動
2. Selenium へプロキシ登録
3. HAR 取得
4. プロキシサーバー停止
どうでしょ?
意外に簡単そうでしょ?
…だがしかし!!
落とし穴あり!!!
落とし穴 ①
通信ログちゃんと見たければ
「captureHeaders = True」にすべし!!!
proxy.new_har("google", options={'captureHeaders': True})
HTTPヘッダーみなけりゃわからないこと多いですし…
落とし穴 ②
SSL通信を見たい場合は
ブラウザに BrowserMob-Proxy の証明書を登録すべし
ssl-support/ca-certifcate-rsa.cer を
ブラウザへ登録しましょう!!!
GoogleChrome だけかも・・・?
(他のブラウザは必要か否か未確認です。。。)
BrowserMob-Proxy に同梱されてます
落とし穴 ③
最後の最後にしてしょーもないお話…
「server.stop()」としているはずなのに
実はその後もプロセスが生きている!???
…少なくとも私の環境では毎回生きてた(笑)
ps 叩いて、生きてたら殺してあげましょう〜!
いじょ。
BrowserMob-Proxy の説明終わりっ!!

BrowserMob-Proxyのお話