プロセルピナ
Top Internet
Mail
Private
Proxy
Capture
Device
Download Config
and
Words
Online
Help
Online
Home
[BACK]
Top > PrivateProxy > AntiAd > AntiAdFilter > Format > URLブロック系 > Referer

 
■ AntiAdフィルタコマンド書式 (URLアクセスブロック系)

  Referer指定の併用
AntiAd Filter


URLアクセスブロック系」のAntiAdフィルタコマンドは、 主に「共通フィルタ」で使用されます。
どのURLがブロックされたかは、 Httpアクセス禁止ログ で記録し参照することができます。

 

Referer指定の併用


httpリクエストのrefererヘッダに設定されているreferer-URLのうち、ホスト名の部分 (referer-URLが http://example.com/index.html ならば example.com の部分) を、 アクセス禁止の判定材料に使用することができます。
(プロセルピナ version 1.17.22 以降)

とあるサイトを参照したとき、 SNSのアプレット・ウィジェットのリンクが雑多に貼られていて鬱陶しい場合に、 それらをまとめてカットすることができます。
「サイトAのページにあるtwitterウィジェットは便利だが、サイトBのページにあるtwitterウィジェットは煩わしいので消したい」 といった場合、サイトBを指定して消すことができます。

例えば、サイト www.example.com のページからリンクされているtwitterへのアクセスを禁止したい場合は、 次のような書式になります。

* twitter.com/;ref=www.example.com


このように、;ref= の後ろにrefererヘッダで指定されているホスト名を指定します。

次の例では、Refererヘッダに 「.example.com」パターン に一致するサイトのURL(www.example.com や img.example.com など) が設定されている場合に、 twitter.com/ の文字列を含むURLへのアクセスを禁止します(部分一致によるブロック)。
他のサイトからのtwitter.comへのリンクや、twitter.comに直接アクセスすることは禁止されません。

* twitter.com/;ref=$.example.com


この例では ref= で指定されるホスト名先頭に  $ (半角$記号) が指定されているので、 .example.com は ホスト名に対する後方一致 で判定されます。 例えばRefererヘッダに、
  http://www.example.com/index.html
  http://img.example.com/hoge.html
  http://cache.img.example.com/index.html
のようなURLが設定されていると、 twitter.com/ を含むURLへのアクセスが禁止されます。 Refererが次のような場合では禁止されません。
  http://example.com/index.html   (先頭の . が一致しない)
  http://www.example.com.ua/index.html   (後方一致になっていない)

ref= で指定するホスト名が . (ドット記号) で開始される場合のみ、先頭の  $ (半角$記号) を省略できます。次の2行は同じ意味になります。

* twitter.com/;ref=$.example.com
* twitter.com/;ref=.example.com



ref= で指定されるホスト名先頭に  ^ (半角^記号) が指定されている場合は、前方一致です。

* twitter.com/;ref=^www.example.


この場合はreferヘッダに、
  http://www.example.com/index.html
  http://www.example.jp/index.html
のような設定がされていると、twitter.com/ を含むURLへのアクセスが禁止されます。 referが次のような場合では禁止されません。
  http://img.www.example.com/index.html   (先頭一致になっていない)


ref= で指定されるホスト名先頭に  * (半角アスタリスク) が指定されている場合は、部分一致です。

* twitter.com/;ref=*.example.


この例ではreferヘッダに、
  http://www.example.com/index.html
  http://img.example.jp/index.html
のような設定がされていると、twitter.com へのアクセスが禁止されます。 referが次のような場合では禁止されません。
  http://example.com/index.html   (先頭の . が一致しない)
  http://example.jp/www.example.com/index.html   (ホスト名と一致しているわけではない)


ref= で指定されるホスト名先頭に 判定モードを指定する記号が指定されていない場合は完全一致で判定されます。

* twitter.com/;ref=www.example.com


この例ではreferヘッダに、
  http://www.example.com/index.html
のような設定がされていると、twitter.com へのアクセスが禁止されます。 referが次のような場合では禁止されません。
  http://example.com/index.html   (一致しない)
  http://img.www.example.com/index.html   (一致しない)

『プロセルピナ』version1.17.56以降の場合、 Referer指定は  | 記号 (半角縦棒) を使って、複数指定できます。
例えば、Refererヘッダに www.example.com と www.example.jp があるときに、twitter.com のアクセスを禁止したい場合は、

* twitter.com/;ref=www.example.com|www.example.jp


と記述します。

 

指定したReferer以外ならアクセスを禁止する   (プロセルピナ version 1.17.56以降)


;ref!= の指定を使うと、;ref= の指定とは逆に、 指定したホストがRefererに含まれない場合にアクセスを禁止します。

例えば、Refererに hoge.example.jp のホストを含むURLが指定されているときのみ twitter.comにアクセスできるようにするには、

* twitter.com/;ref!=hoge.example.jp


と記述します。
この場合、hoge.example.jpのサイトのページからリンクされていない場合はアクセスできなくなりますので、 URL直打ち(Webブラウザのブックマークから開くときなど)でも アクセスできません。

Refererヘッダが無い場合を指定するには NO_REF と記述します。
Refererヘッダが無い場合のみアクセスを許容する場合は、

* twitter.com/;ref!=NO_REF


と記述します。

Refererに hoge.example.jp のホストを含むURLが指定されているときと、 Refererヘッダが無い(URL直打ちなど)の場合のみtwitter.comにアクセスできるようにするには、

* twitter.com/;ref!=hoge.example.jp|NO_REF


と記述します。
このように、;ref!= で指定するホストは、  | 記号 (半角縦棒) を使って 複数指定することができます。

 

リファラ指定ブロック記述での注意点


「example.comまたはexample.jpからリンクされているtwitterはブロックする」というフィルタ記述、
  * twitter.com/;ref=example.com|example.jp
は、次の2行を記述したときと同じです。
  * twitter.com/;ref=example.com
  * twitter.com/;ref=example.jp
フィルタ処理では、1行目でブロック判定されないときは2行目でのチェックに移ります。

一方、 「example.comまたはexample.jpからリンクされているときのみtwitterをブロックしない」 を意味するフィルタ、
  * twitter.com/;ref!=example.com|example.jp
は、
  * twitter.com/;ref!=example.com
  * twitter.com/;ref!=example.jp
の記述と同じではありません。下の記述では、refererのURLのホストがexample.jpであっても 1行目の判定(example.comでなければブロック)でアクセスが禁止されて、フィルタ判定が終了してしまいます。

一般的に、 ;ref=の、リファラ指定ブロックのフィルタを記述する場合、ブロックされる側のフィルタファイルに記述します。
  * twitter.com/;ref=example.com
は、example.comのフィルタファイル example.com.txt に記述し、
  * twitter.com/;ref=example.jp
は、example.jpのフィルタファイル example.jp.txt に記述します。
example.com.txtが読み込まれるのは、example.comにアクセスしたときですが、ここでは
  * twitter.com/;ref=example.com
のフィルタだけを設定すれば十分です。 この時点では(あるかどうかもわからない)example.jpからのアクセスに対するフィルタは設定しなくてもよいでしょう。

一方、 ;ref!=の、例外リファラ指定ブロックのフィルタを記述する場合、 ターゲット側のフィルタファイルに記述した方がわかりやすくなります。
  * twitter.com/;ref!=example.com|example.jp
は、twitter.comのフィルタファイル twitter.com.txt に記述し、 example.com.txtやexample.jp.txtには記述しないようにします。
これは例外リファラ指定ブロックは分割して記述できないことと関連します。
例えば、example.comのアクセスで、
  * twitter.com/;ref!=example.com
を設定し、その後example.jpのアクセスで、
  * twitter.com/;ref!=example.jp
を読み込んだ場合、example.jpからのtwitterアクセスは 最初の判定(example.comからのアクセスではない) でブロックされてしまいます。
[BACK]
プロセルピナ