AdBlock系のアドオンでブロックされるサービスと対策
Gigazineが自爆テロなのか広告ブロックサービスを紹介していたのでその件で。
某運用サイト(PC)で試した結果、ブロックされたもの
試したのはµBlock。
ChromeではFailed to load resource: net::ERR_BLOCKED_BY_CLIENT
とコンソールにエラーがでます。
広告
忍者AdMax
WordPress AdRotate
RSSブログパーツ
忍者レコメンド
アクセスランキング
i2i アクセスランキング
ACR WEB アクセスランキング
アクセス解析
Google Analytics
Yahoo!アクセス解析
なんか、広告はともかく、アクセスランキングやアクセス解析もブロックされているんですけど……
AdBlock系ってそういうものなの?
あと、忍者レコメンドは誤爆じゃないのかこれ?
初期のブロックリストを調べる
設定がどうなっているのか覗いてみる。
以下、Chrome拡張内のURLとGitHubリポジトリのリンクを張っておきます。
ネットワークフィルタ+コスメチックフィルタ
µBlock filters
- chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/asset-viewer.html?url=assets/ublock/filters.txt
- https://github.com/gorhill/uBlock/blob/master/assets/ublock/filters.txt
µBlock filters
- chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/asset-viewer.html?url=assets/ublock/privacy.txt
- https://github.com/gorhill/uBlock/blob/master/assets/ublock/privacy.txt
広告
EasyList (adblockplus.org)
- chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/asset-viewer.html?url=assets/thirdparties/easylist-downloads.adblockplus.org/easylist.txt
- https://github.com/gorhill/uBlock/blob/master/assets/thirdparties/easylist-downloads.adblockplus.org/easylist.txt
Peter Lowe’s Ad server list (yoyo.org)
- chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/asset-viewer.html?url=assets/thirdparties/pgl.yoyo.org/as/serverlist
- https://github.com/gorhill/uBlock/blob/master/assets/thirdparties/pgl.yoyo.org/as/serverlist
プライバシー
EasyPrivacy (adblockplus.org)
- chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/asset-viewer.html?url=assets/thirdparties/easylist-downloads.adblockplus.org/easyprivacy.txt
- https://github.com/gorhill/uBlock/blob/master/assets/thirdparties/easylist-downloads.adblockplus.org/easyprivacy.txt
ウイルス
Malware Domain List (malwaredomainlist.com)
- chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/asset-viewer.html?url=assets/thirdparties/www.malwaredomainlist.com/hostslist/hosts.txt
- https://github.com/gorhill/uBlock/blob/master/assets/thirdparties/www.malwaredomainlist.com/hostslist/hosts.txt
Malware domains
- chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/asset-viewer.html?url=assets/thirdparties/mirror1.malwaredomains.com/files/justdomains
- https://github.com/gorhill/uBlock/blob/master/assets/thirdparties/mirror1.malwaredomains.com/files/justdomains
Malware domains (long-lived)
- chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/asset-viewer.html?url=assets/thirdparties/mirror1.malwaredomains.com/files/immortal_domains.txt
- https://github.com/gorhill/uBlock/blob/master/assets/thirdparties/mirror1.malwaredomains.com/files/immortal_domains.txt
どこでブロックされているか
EasyList (adblockplus.org)
- ||i2i.jp^$third-party (i2i全サービス)
- ||ziyu.net^$third-party (ACR WEB全サービス)
- ||yjtag.jp^$third-party (Yahoo!アクセス解析)
- ||shinobi.jp^$third-party (忍者レコメンド)
忍者レコメンドはChromeに入っているVersion: 201502110300
(2015/02/11版?)から。
GitHubのmasterはVersion: 201502082240
(2015/02/08版?)で||adm.shinobi.jp^
の記述しかないのでブロックされない。
Peter Lowe’s Ad server list (yoyo.org)
- 127.0.0.1 google-analytics.com (Google Analytics)
EasyPrivacy (adblockplus.org)
- ||i2i.jp/bin/ (i2i全サービス)
- ||ziyu.net^$third-party (ACR WEB全サービス)
- ||yjtag.jp^$third-party (Yahoo!アクセス解析)
- ||google-analytics.com/analytics.js (Google Analytics)
意外と困るアレですね
思ったより困ったものだな、AdBlock系は。
困る点。
1. 広告が出ない
まあ、そういう目的のサービスなんですけど。
固定費のサーバーならともかく、 CDN使っているとかAWSみたいなトラフィック課金で運用してたら広告出ないとかさすがに殺意沸きますね。
広告掲載を条件に画像をCDN配信してくれるFC2ブログとかね。
2. アクセス解析ができない
しかもプライバシーフィルターの方じゃなく、広告フィルターの方でもブロックされてるのな。
アイヤー、ナンデー!
3. RSSブログパーツが出ない(一部かな?)
これに関してはもうなぜなのか……
サイト運営者として考えておきたいこと(メモ)
ここまで調べてだいぶ疲弊したので以下はメモで未検証です。
コード片が動かなくても勘弁な。
まず、検知できるか?
ドメイン一致だけでなくURLパラメーター一致のフィルターがあるので、 このフィルター宛にJavaScriptで空リクエストを送って200 OKが返るかどうかでチェックできそう。
フィルターリストの中で、例えば、
/125x125_banner.
というのがあるので、例えば125x125_banner.txt
という空ファイルを置いて、そこにアクセスさせれば把握できる。
$.ajax({ url: '/125x125_banner.txt', success: function (data, status, xhr) { console.log('success status', xhr.status); }, error: function (xhr, status, error) { console.log('error', xhr.status, status, error); // ここに来たらブロックされている // クライアント側ブロックだとstatus, errorが常に空になる(仕様だった気がする) } });
広告ブロックユーザーをサーバーログに残したい場合は、 ブロック判定後にログ記録用のリクエスト(こちらはフィルターに引っかからないURLで)を送れば取れる。
実際、どの程度の割合で使っているんですかね。
問題に関する個別の対応
広告ブロックユーザーを把握をして何かしたいとなった場合にどうするか。
1. 広告が出ない
基本的には純広告とアフィリエイト広告(自前でaタグのみで掲載しているもの)以外で対応するのは難しいのでは。逆にこれらはブロックするのも難しいので、広告ラインナップとして用意しておくと完全なタダ乗りは防げるかも。
サイトが大規模なら機会損失も相当なので、上記のブロック判定後にこれらの広告に差し替えるというのも効果が高いかも?
なお、「広告が出ない場合にはサイトコンテンツ自体を出さなければいい」という発想も出てくると思うけど、それにはこんな機能が。
なのでJavaScriptだけで対応するのはツラい。
サーバーサイドで何らかの対処を行いたい場合には、 検知方法で書いた空リクエストの結果をCookieにフラグとして書いておけば次のリクエストから動作を調整できる。
2. アクセス解析ができない
これは諦めて自前実装してアクセス解析するしかない。
クライアント情報を取得するにはJavaScriptでリクエストを送る必要があり、 大手サイトを運用しているなら誰かがフィルターを追加する可能性もあるけど、 所詮はリスト方式でフィルターを作っているので一致させないURLにすれば問題ない。 URLを乱数やHashとか使って毎日URLが変わるようにしたら対応しようがないのでは。
まあ、そこまでやる必要はないと思うけど。
3. RSSブログパーツが出ない(一部かな?)
こちらも諦めて別サービスを使うべきですね。