Resonite日記 SignalRのやりとりをHTTP Proxyでキャプチャする

eai
·
公開:2023/12/6

前述の通り、素朴なHTTP通信はHTTP Proxyでキャプチャできるが、SignalRでのやり取りはWebSocketなのでHTTP Proxyではキャプチャできない。しかしデコンパイルして調べるのはあまり楽しくないのでなんとか通信を見てどのようなメッセージをやり取りしているのか知りたい。

SignalRは基本的にWebSocketで接続するが、それが利用できない場合のフォールバックも用意している。これで繋ぐようにしてもらえばHTTP Proxyで見れるのでは?

では、どのようにフォールバックを選択させるのかというと、このネゴシエートのレスポンスを書き換えてWebSocketが使えることを教えなければいいんですね。具体的にはRewrite機能を使う。

Charles使いの方はこれをimportすればいいです。

レスポンスの中の配列に含まれているWebSocketで接続できるという情報をまるまる空で置換してしまう。

するとこのようなレスポンスになり

SignalRがServer-Sent Eventsで繋ぐようになったのでやりとりが見れるようになった。やったね。

この結果を元にdnSpyで検索したところIHubナンタラがメッセージのキー?の一覧を持っていることがわかった

そしてDiscordで検索してみたらAPI Discussionの一番上に書いてあった

まあ調べ方を知れただけ儲けものということで。