iOSのAdBlockが度々無効になる件

このところiPadで使用しているAdBlockが度々無効になることに苛ついてました。勝手に×マークになっていたり、チェックマークになっていても動作としては無効になっていたり、症状は様々です。アプリをアップデートしたことによるバグだと思っていましたが、なかなか直らずバグフィックスがないので色々調べてみたところ、AdBlock側が原因ではなくApple側が原因で、規制が入ったようですね。



Appleは突然こういうことがあるからなぁ…。。そこで対策を色々考え試みてみました。


まずレビューにアプリを再インストールすると直ったといった情報があったので試みてみたものの、改善せず。次に某掲示板にある方法でダウングレードをしようと思ったものの、手順が悪かったのか古いバージョンが落とせず。


結果的に落ち着いたのは嘗て使っていたWeblock、というかダミープロキシです。ダミープロキシはiOSのあるバージョンから途中で読み込みが止まる不具合が起こるようになって、AdBlockを使うようになりました。


記述を今のWeblockで使われてるjsに合わせたら動くかなと思ってオリジナルのjsをダウンロードしてみました。記述は複雑になっており、ここから改変するのは面倒そうだなと断念しかかってましたが、ブロック先のIPアドレス・ポートが以前とは変わっていることに気付きました。試しに元々使ってたjsのブロック先だけ今のものに書き換えると、途中で読み込みが止まることなく不具合が起こる前のように動作しました。


昔は「8.8.8.8:53」となってましたが、今は「216.58.209.78:80」となっています。ポートはDNSからHTTPへ変わっており、それでは「216.58.209.78」は何なのかと調べてみると、詳しくは分かりませんがGoogleのものであることが分かりました。


多分iOSのアップデートで、HTTPリクエストをDNSサーバーに投げるのがダメになってしまったんでしょうね。ポートが閉じていることがマズイのでしょうか。Weblockは広告のHTTPリクエストをDNSサーバーに投げても当然DNSサーバーはそのような要求に応えることが出来ない、といったロジックで広告をブロックしていましたが、iOSのアップデートでそれではダメになったので、ブロック先をHTTPリクエストをやり取りするWEBサーバーに変更したのかもしれません。


WEBサーバーに変えても、広告のあるWEBサーバーではなく無関係のWEBサーバーであるため、ブロックが出来るということでしょうね。試しにIPアドレスを自分の運営するサイトのIPアドレスにして試してみましたが、動作は同じでした。自分の運営するサイトには広告のデータはないので、当たり前と言えば当たり前です。


ということで、とりあえず今後は通信系のブロックはダミープロキシに出戻り、表示の要素系のブロックは1Blockerといった感じで使っていきたいと思います。