数学的にどうなのさ?

大学時代にちょっと長く数学を勉強した人の雑記。数学のこと(主に統計)や趣味、メモなどが多くなります

Pythonを使ってChromeのHarファイルを取得する

概要

最近仕事でAPIを触ることが多くなった.目的はデータを集めてそれを使って分析をすること.
今まではAPIって触ったことがなく,よくわからんものだったがなんとなくイメージがつかめてきた.
そこで改めて艦これのAPIについて前に調べて挫折したものを調べ始めた.さすがにサーバ相手にリクエストを送ると自分のアカウントがBANされる可能性があるのでやめておくが,Chromeの開発者ツールを使うとレスポンスでどんなJsonが返ってきているのかはわかる.
そこでこの部分をローカルに出力することができれば調べる足掛かりになる.ということでどうすればいいのかを調べてみた.

ブラウザの開発者ツールを外部に出力できるのか?

結論から言えば可能で,艦これの専用ブラウザはこれを利用して様々なマスクデータを含む情報を表示している.
いろいろと調べた感じだとNekoxyが人気のようです.おそらくC#から使うことができるからでしょう.
私はC#には明るくなく(とはいえ仕事で数日相手にしなくてはいけない時期が最近ありましたが…),今回はpythonから行うことを考えてみる.ちなみにNekoxyはPythonから使う方法がわからなかった.なので別の方法を検討してみる.環境は以下の通り.

必要なパッケージのインストール

必要になるのは以下のパッケージ

seleniumはcondaでインストールできるが,browsermobproxyはpipでしかインストールできない模様.不安ならGithubからやってしまってもOK.

### browsermobproxyのインストール
残念ながらパッケージだけではやりたいことはできない.以下からbrowsermobproxyをダウンロードして任意の場所に回答しておく必要がある.

bmp.lightbody.net

パッケージのbrowsermobproxyはpythonからbrowsermobproxyを使うためのパッケージ.

Javaのインストール

未確認だがbrowsermobproxyはJavaがないと動かないらしい.なのでJavaをインストールしておく.Javaのインストールについては探せばインストール解説の記事があるのでここでは省略.

コーディング

サンプルは以下の記事から拝借しました.なおpython関係を立ち上げる時は管理者権限が必要だった.(ここに気づかずに何日か無駄にしました…)

www.it-swarm.dev

ちょこちょこ自分の環境に合わせてコードを書き直してはいますが,アルゴリズム自体は書き換える必要はなく動いた.レスポンスがまとめられたファイルharは以下のような感じ.

{
    "log": {
        "version": "1.2",
        "creator": {
            "name": "BrowserMob Proxy",
            "version": "2.1.4",
            "comment": ""
        },
        "pages": [
            {
                "id": "google",
                "startedDateTime": "2020-08-26T21:28:09.385+09:00",
                "title": "google",
                "pageTimings": {
                    "comment": ""
                },
                "comment": ""
            }
        ],
(省略)

まとめ

とりあえずharファイルを保存することができた.あとはjsonを見る要領で中がどんなふうになっているかは調べることができる.専ブラに近いことはもしかしたらできるかも?と期待.

ちなみにC#でNekoxyが使えるならIronPythonでよくね?と思ってる人もいるかもしれないがそれは奥の手.