前、Chromeを使うなら、必ずServiceWorkersを無効化しようという記事を書いたのですが、あの方法はてんで全然ダメダメでした。
chrome://serviceworker-internalsには無用なServiceWorkerが増え続け、chrome://flags/からはServiceWorkerの削除設定が削除されました。
そんなわけで、今度こそServiceWorkerを決定的かつ完全に消し去りたいと思います。
といっても自力でどうこうしたわけではなく、全面的に他人の力を借りただけですが。
Reject Service Worker
Reject Service Workerをインストールする。
おわり。
かんたん!
作者はtoshiさんです。
ありがとうございます。
アドオンの技術的内容はServiceWorkerを無効化するという記事に書かれているのですが、ServiceWorkerを登録する関数を書き替えて登録できないようにしているみたいです。
なかなかのハック感。
既存のServiceWorkerを削除
Reject Service Worker
は、今後のServiceWorkerの新規登録こそ止めてくれますが、それまでに登録されてしまったServiceWorkerはそのままであり消去されません。
削除する方法はふたつ。
まずは、Reject Service Worker
が有効な状態で、ServiceWorkerが登録されたサイトを再度訪問すれば、そのタイミングで消えます。
もうひとつは、URLにchrome://serviceworker-internalsと入力し、ひたすらUnregister
を連打することです。
もしくはコメントで、一括削除する方法を @negabaro さんが紹介してくれていました。
$$('.unregister').forEach(b => b.click())
ホワイトリスト
ホワイトリストが用意されています。
このサイトだけはServiceWorkerを許可したい、といった場合は以下の手順で登録できます。
・許可したいサイト上で拡張機能からReject Service Worker
を選択する。
・するとAdd to Whitelist
というボタンが出るので選択する。
とても簡単ですね。
まあ、そもそもデフォルトがホワイトリストであるべきで、勝手にインストールしてくる現状が異常なわけですが。
ソースコードを確認
せっかくServiceWorkerを消し去ることに成功したとはいえ、実はアドオンそものがマルウェアでしたみたいなことになったら台無しですね。
そんなわけでReject Service Worker
が安全かを、実際にソースコードを見て確認してみましょう。
アドオンの位置は%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions\falajmifjcihbmlokgomiklbfmgmnopd
です。
Default
はプロファイル名なので、環境によって異なる可能性があります。
幾つかファイルがありますが、中身はただのJavaScriptなので普通に読めます。
ソースコードはコメントを用意してくれているのでとても読みやすいです。
ソースコードを見るかぎりでは、何か怪しいことをやっていたり、外部と通信しているような素振りは全くありませんでした。
そもそも作者自身がアドオンのソースコードを確認する方法を提供していますからね。
これで変なことをやっていたら自爆でしかない。
ということで、このアドオンは所有者が変わらないかぎりきっと安全であり続けるでしょう。
まとめ
Reject Service Worker
導入前後で、インターネット体験には何一つ変化がありません。