以下の広告を削除するフィルタを考えます。
Webページサンプル今回は環境によって、見える広告が違うはずです。
具体的には、JavaScriptを有効にしている人は、画像とテキストリンクの広告が表示されます。
JavaScriptを無効にしている人は、テキストリンクのみが表示されます。
さっそく、htmlソースを見てみましょう。
いろんな探し方がありますので、以下から好きな方法を選んでください。
<script を検索ワードにして検索前者は簡単なので、初心者にお勧めできます。
後者は、1ページに複数のscript要素がある場合においては、慣れが必要になります。
(今回はscript要素が1つなので簡単ですが、2つ以上のscript要素がある場合は周辺のタグから、どのscript要素が目的のものかを見極めなければなりません。)
<scripttype='text/javascript'src='../sample_ad/ad.js'charset='utf-8'></script><noscript><p><ahref='http://sample.adserver.co.jp/'>[PR] 1000円からご希望のフィルタをお作りします!</a></p><p><ahref='http://test.adserver.co.jp/'>[PR] 2000円からご希望のフィルタをお作りします!</a></p></noscript>
script要素は「開始タグと終了タグの間にスクリプトを記述する方法」と「外部スクリプトファイルを使う方法」の2通りの使い方があります。
今回は外部スクリプトファイルの手法を使用しているようです。
script要素のsrc属性値にある../sample_ad/ad.jsを開くと、広告を表示するためのスクリプトが書かれていることが分かります。
(JavaScript構文については解説すると長くなるので、JavaScriptの説明は省略します。)
noscript要素は子要素を「スクリプト未対応ブラウザ」、もしくは、「スクリプトを無効化した環境のブラウザ」で表示します。
noscript要素はscript要素とセットで使われることが多いので、どちらかの要素を見つけたら、もう一方の要素を探す癖を付けておくと良いでしょう。
さて、今回の「ユニークな文字列」はscript要素です。
script要素を$NESTで制限します。
$NEST(<script\s[^>]++src=$AV(../sample_ad/ad.js),</script>)
$NEST(<noscript>,</noscript>)
script要素の後ろの改行を半角スペースで消費し、$NESTでnoscript要素を消費します。
script要素の後にnoscript要素が来るのは、典型的なJavaScriptの書き方です。
ですので、「script要素 → noscript要素」の順にマッチさせる手順は覚えておいて損はないでしょう。
[Patterns]
Name = "Kill script ad"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 512
Match = "$NEST(<script\s[^>]++src=$AV(../sample_ad/ad.js),</script>)"
" $NEST(<noscript>,</noscript>)"
Replace = "\r\n<script type="comment"> Killed script ad </script>\r\n"
それでは、最終チェックです。
テストウインドウにてチェックした後に、このページの再読み込みによるテストを行って下さい。