Open5
Requestlyのchrome拡張のコードを読む
これを読んでいく
マニフェスト。v3に対応している。
- 任意のサイトで、content scriptsとして
client.cs.js
が実行される - service workerとして、
serviceWorker.js
が実行される。ここでリクエスト書き換えをやっていると思われる。 - declarative_net_requestに、delay_rulesというものが登録されている。何の目的かは謎
- permissionsに、webRequest、declarativeNetRequest、declarativeNetRequestFeedbackというものが指定されている。これにより、ホスト権限なしで、リクエストの書き換えなどができるようになる
多分service workerが処理の肝なのでここを見ていく。
下記で初期化される。
実際に、リクエスト書き換えをやっている箇所は下記のあたり。
chrome拡張の、webRequest
というAPIを使って、ページからのリクエスト送信をlistenし、レスポンスの書き換えを行なっている。
ただ、Web Request APIは、Declarative Net Requestへの移行が推奨されている。なので、後々使えなくなる可能性がありそう。
Requestlyは、任意のwebリクエストの書き換えを実現しようとしているためwebRequestを使っているが、事前に書き換えるべきルールが拡張のship時に決まっているケースであれば、declarative net requestでやっていくのが良さそう。