Remove It Permanently(RIP)を使った広告ブロック
- Adblock Plus でも Proxy 使ったフィルタリングやブロックリストでさえも消すのが難しい広告がある
- 例えば...ただの文字列リンクがそうだ(しかもタグの id 属性 や class 属性 がまったくない...)
今回のテーマ:先日紹介した XPath を使って広告を消してみよう
消しにくい広告の例として「はてなアンテナ」画面
Before | After |
---|---|
- この広告の特徴
- id属性 class 属性等の余分な属性がない
- リンクの文字列に [PR] って文字列が含まれている程度
最近このように Adblock Plus 対策なのか目印となる属性が設定されていないサイトが多い
これでも消せるのが XPath 指定のできる RIP
Adblock Plus と RIP の違い
ブロックした広告の内部処理 | ブロックしたい場所の指定方法 | |
---|---|---|
Adblock Plus | ダウンロードしない ⇒ アクセス履歴が残らない |
タグ属性(id, class, rel, etc)を使った独自記法 CSSセレクタ互換の記法(上級者向け) あまり役に立たないURL記法 |
RIP | 表示されなくなる(display: none)だけでダウンロードはされる ⇒ アクセス履歴は残る |
XPath |
やや Adblock Plus が有利
まずは Remove It Permanently(RIP) のインストール
RIPの設定
設定例の説明
XPath | 解説 |
---|---|
//img[@alt="PR"]/.. | alt属性が"PR"のimgタグの親タグ |
//*[text()="PR"]/../.. | "PR"というテキストノードの親ノードの親ノード |
//*[contains(text(), "[PR]")]/.. | "[PR]"という文字列を含むテキストノードを持つノードの親ノード |
ここで言うノードとはエレメントと同じ意味
補足
- スクリーンショットのように対象サイトをすべて(*)にしたルールは操作性の都合上よくない。やってみればわかるが、ルールが追加しにくくなる
具体例1
- Mozilla Re-Mix (Firefox の addon などを紹介)
before | After |
---|---|
- 以下をテキストファイルに保存して設定を import することができます
<Config version="1.0"> <Page name="Mozilla Re-Mix" url="http://mozilla-remix.seesaa.net/*" enabled="true"> <XPath comment="">id('content')/br</XPath> </Page> </Config>
意味は...
"content"という id のついたタグの下にある br タグを消せ
具体例2
- 湘南番外地 (神奈川のグルメ Blog)
before | After |
---|---|
<Config version="1.0"> <Page name="湘南番外地" url="http://blog.livedoor.jp/nosvamos/*" enabled="true"> <XPath comment="Annoying AD">//div[@class="blogbody"][1]</XPath> <XPath comment="Annoying AD">//h2[@class="date"][1]</XPath> </Page> </Config>
意味は...
- class 属性が "blogbody" で1つ目にマッチした div タグを消せ
- class 属性が "date" で1つ目にマッチした h2 タグを消せ
具体例3
- IT用語辞典 e-Words(にしてもトップページの広告の山はなんなんだ)
普段、google から見に来るのでトップページの広告ブロックは割愛(放置とも言う...orz)
- 個別用語解説ページ用
before | After |
---|---|
<Config version="1.0"> <Page name="e-words.jp" url="http://e-words.jp/w/*.html" enabled="true"> <XPath comment="">//*[text()="Ads by ListingPlus"]/..</XPath> <XPath comment="">(//tr/td/table)[last()]</XPath> </Page> </Config>
意味は...
- "Ads by ListingPlus"というテキストを含むタグの親タグを消せ
- tr -> td -> table という階層にマッチするタグのうち最後を消せ
- トップページ用
before | After |
---|---|
<Config version="1.0"> <Page name="e-Words トップページ" url="http://e-words.jp/" enabled="true"> <XPath comment="">//*[contains(text(), "エンジニアキャリア情報")]</XPath> <XPath comment="">//*[contains(text(), "エンジニアキャリア情報")]/following-sibling::*[1]</XPath> <XPath comment="">//*[contains(text(), "IT求人検索") or contains(text(), "昨日のITニュース")]</XPath> <XPath comment="">//*[contains(text(), "IT求人検索") or contains(text(), "昨日のITニュース")]/following-sibling::*[1]</XPath> <XPath comment="">//*[contains(text(), "推薦書籍売上ランキング")]/..</XPath> <XPath comment="">//*[contains(text(), "推薦書籍売上ランキング")]/../following-sibling::*</XPath> </Page> </Config>
そろそろ面倒になってきたのであとは設定だけ
<Config version="1.0"> <Page name="CNET Japan" url="http://japan.cnet.com/*.htm" enabled="true"> <XPath comment="">//*[contains(@class, "ad_")]</XPath> <XPath comment="">//*[contains(@class, "block_large_top")]</XPath> </Page> </Config>
<Config version="1.0"> <Page name="価格.com" url="http://*kakaku.com/*" enabled="true"> <XPath comment="">//*[contains(text(), "広告")]</XPath> <XPath comment="">//*[text()="[PR]" or text()="PR" or text()="-PR-"]/..</XPath> </Page> </Config>
- Yahoo Japan
<Config version="1.0"> <Page name="Yahoo!" url="http://*.yahoo.co.jp/*" enabled="true"> <XPath comment="">//*[text()="[PR]" or text()="PR"]/..</XPath> </Page> </Config>
- TechCrunch 日本語版
<Config version="1.0"> <Page name="TechCrunch Japanese" url="http://jp.techcrunch.com/*" enabled="true"> <XPath comment="">//div[@class="entry"]/div[text()="PR" or text()="Ads by Overture"]</XPath> </Page> </Config>
- 連邦
<Config version="1.0"> <Page name="連邦" url="http://renpou.com/*/index.html" enabled="true"> <XPath comment="">/html/body/div</XPath> </Page> </Config>
ℵ ニンニン ℵ