cocolog:88550595
Firefox のブラウザ拡張(アドオン)である PP Interrupter を作って公開した。詐欺的な自動ダイレクトを識別するために、逆に普段から健全な自動リダイレクトをブロックする習慣をつけるという逆転の発想のアドオン。 (JRF 4142)
JRF 2017年12月 8日 (金)
サポート用のブログ内ページ:
《PP Interrupter: 健全なサイトをブロック!?》
http://jrf.cocolog-nifty.com/software/2017/12/post.html
JRF2017/12/81062
……。
PP Authorizer というアドオンを作っているとき([cocolog:88492515])に、発想が浮かんだ。PP Authorizer は Web サイトが認証の前にいったんストップすることを要求するが、現状ではそれに従うサイトはない。そこで、むりやりストップさせてはどうかと考えた。
JRF2017/12/81940
本当にやりたいのは詐欺的な自動ダイレクトをブロックすることである。しかし、それは難しい。AdBlock とかは、情報を広範に共有してそれを行っているようだが、認証に関しては自動リダイレクトはある程度必要なものでブロックを本来必要とせず、情報共有に意味を見出せない。
JRF2017/12/81240
しかし、ここで逆転の発想をする。詐欺的な自動ダイレクトを識別するために、逆に普段から健全な自動リダイレクトをブロックする習慣をつけるのだ。それを行うのが PP Interrupter ということになる。
JRF2017/12/84500
ただ、PP Interrupter はリダイレクトをブロックしてクリックして続行を促す…だけの単機能のシンプルな汎用アドオンなので、上記以外の使い方もできるかもしれないことは注意を促しておく。
JRF2017/12/82856
……。
当初は、自動リダイレクトのみを対象とした webReqest の blocking は面倒だろうと MDN のマニュアルを読んでいたが、確かにリダイレクトを対象としたブロックは難しいが、タブでのページの遷移のみを対象とすることはそれほど難しくないとわかってきた。
そこで、エイヤッとテストしてるつもりで作り上げてしまったのが本アドオンになる。webRequest の blocking で Promise (非同期プログラミング)が使えると聴いて、そのテストもかねて実装したら、実装できてしまった。
JRF2017/12/81997
最初は、アドオンに含まれたファイルをページとしてバッと表示して、そのときの URL にパラメータを付けてそのパラメータによって、真のリダイレクト先を示そう…とかなんとか考えていたのだが、GET 以外に POST を扱わねばならなそうなのが難しく、上で書いたように Promise を使うと、ページを表示してしまったときに Promise の効果が切れてしまうようなので諦めた。
かわりに notifications だけして、pageAction として実装した。
JRF2017/12/83271
PP Authorizer とあわせて一つのアドオンとすることもできたが、ちょっと考えて、PP Interrupter のほうがずっと汎用的だから分けたほうがよかろうと思って、二つの「姉妹品」のアドオンとした。将来的に一つのアドオンに統合することはあるのかな…、まぁ、今の段階では難しくないけど、どうなんだろう?
JRF2017/12/87401
……。
PP Authorizer のときと同じく、とにかくできちゃったので、まず登録。審査(おそらく機械によるもののみ)もあっさり通って公開となった。PP Authorizer のバージョンアップを何度かしていたので手続きには慣れたもの。
あとはヒイコラ言ってドキュメントを突貫で書き上げ、今、やっとひとことを書いているところ。
JRF2017/12/81567
もちろん、多くの人に使ってもらいたいけど、PP Authorizer に比べて汎用とはいえニッチであることには変わらないから、それは難しいのかな…。orz
JRF2017/12/83659
……。
追記。更新。
バージョン 0.4。
内部的なとても小さな変更。まず、外部アプリからのブロックしない許可に関する修正。バージョン 0.3 から引き続き細かいバグを取った。
JRF2017/12/157953
あと、Allowing Extensions から PP Authorizer を削除しても、Add from PP Authorizer ボタンで、リカバーできるようにした。これは実装すべきか迷ったんだけどね。ここについてはデフォルト値を回復できるようにしたほうがよかろう…と判断した。
JRF2017/12/156469
……。
追記。更新。
バージョン 0.5。
小さな変更。だが、ややクリティカルというか本質的なバグ。ブロック中に他への移動やタブの削除を行った場合のキャンセル処理をミスしていた。コピペによるミス。やや恥ずかしいミス。キャンセルできてなくても目立たないので、うまく動いていないことにこれまで気付かなかった。
JRF2017/12/168350
最近更新が続いていて申し訳ないので、本当は 1 週間ほど更新しない予定だったが、しかたなくバージョンアップした。
JRF2017/12/167626
……。
追記。更新。
バージョン 0.6。
軽微な変更。関数名に統一性をもたせるなどソースの整理をした。
次回、Google Chrome でも使えるようにすべきか、今、検討中。ある意味、古い規格に沿うことになるので、迷っている。
JRF2017/12/239756
……。
追記。更新。
バージョン 0.7。
Firefox for Android や Google Chrome に対応したりしようとして書き換え作業を行ったが、API や UI の違いにより結局、対応できなかった。それで、機能制限版の PP Interrupter Lite を作って、そちらで対応することにした。[cocolog:88646381] にそちらの情報を載せている。
JRF2017/12/270782
書き換え途中でミスに気付いて修正できたりしたのはメリットだが、書き換え自体が大きいので、別のミスが発生していると思われる。 それを今後取り除きたいが、アドオンを使用する機会がないのでミスに気付けるかどうか…。
JRF2017/12/278369
トラックバック
他サイトなどからこの記事に自薦された関連記事(トラックバック)の一覧です。
Mozilla Firefox と Google Chrome のブラウザ拡張(アドオン)である PP Interrupter Lite を作って公開した。前から作っている PP Interrupter (Original) ([cocolog:88550595])の機能制限版。 続きを読む
受信: 2017-12-29 18:12:42 (JST)
Android エミュレータを使うために Android Studio 3.0.1 をインストール。しかし、エミュレータを起動するまでにかなり手間どった。 続きを読む
受信: 2017-12-29 18:12:58 (JST)
Firefox のブラウザ拡張(アドオン)である PP Authorizer を作って公開した。匿名的ログインや匿名的支払いをサポートするためのアドオン。2,3 日で終った突貫工事で、完成度は高くないとは思うが…。... 続きを読む
受信: 2017-12-29 18:13:54 (JST)
ブラウザ拡張(アドオン)として Tweet Sig を作って公開した。三文判程度の認証に使うことを想定している。 続きを読む
受信: 2018-03-30 21:39:36 (JST)
アドオンのページ:
《PP Interrupter – Firefox 向けアドオン》
https://addons.mozilla.org/firefox/addon/pp-interrupter/
説明用ホームページ:
《PP Interrupter》
http://jrf.cocolog-nifty.com/archive/pp-interrupter/README_ja.html
JRF2017/12/80445