http://sound.jp/antilink_testpage/cut_jscript_includingEval.html
このページは、
「プロセルピナ」AntiAd機能をテストするための
テストページ です。


 eval関数チェッカー



全てのJavaScriptが削除されている場合は、ここに「JavaScriptが有効です」と表示されません。


全てのJavaScriptが削除されている場合は、ここに「JavaScriptが有効です」と表示されません。


 
追加すると安全化が図れるコマンド

以下のAntiAdコマンドAntiAd共通フィルタ にコピー&ペーストで追加してください。
(詳細は後続の解説をお読みください)

『プロセルピナ』version1.07.09以降での設定

AntiAd共通フィルタに追加するコマンド (4行)

上記のコマンドの追加方法:
View部メインフォームのメニューから
PrivateProxyAntiAd (Web広告削除)Edit (AntiAdリスト編集)


 
eval関数を含むJavaScriptを削除する方法

JavaScriptの eval関数 は便利ですが、それだけにユーザーが歓迎しない動きをすることがあります。
Webブラウザの設定で JavaScriptそのものを停止するとページ閲覧に不具合が出てしまうサイトでも、 eval関数 部分のみを削除することにより安全化を図りつつアクセスすることができます。

ホストが .jp のサイトのhtmlページから eval関数を含むJavaScript部分を削除するには
AntiAd共通フィルタ

  !SCR .jp eval(

の1行を追加します。(!SCRコマンド)
文字列 eval( を含まないJavaScriptは削除されません。
このページは、 sound.jp にありますので、この1行の追加で、上記のチェック
SCRIPT USING NOW!
と表示されなくなります。

eval関数の削除を .jp に限定せずに、全てのサイトを対象にするには、

  !SCR * eval(
と表記します (*記号 によるホスト指定が有効なのは『プロセルピナ』version1.07.06以降です)。

全てのサイトからeval関数を除外すると、弊害が出ることがあります。
たとえば、Gmailやgoogleマップ、ニコニコ動画では eval関数が削除されてしまうと正しく動作しません (Gmailの軽量モードは正しく動作します)。
その場合には、 『プロセルピナ』version1.07.09以降でサポートされた 「例外つき全ホスト指定」を使用します。
この指定は、除外したいサイトの先頭に  ! 記号 を付与します。たとえば、 Gmail(mail.google.com) をeval関数削除から除外する(=Gmailに限ってeval関数を許容する) には、

  !SCR  !mail.google.com  eval(

と記述します。

除外したいサイトが複数ある場合は、  ; 記号 で区切って記述します。たとえば、 Gmail(mail.google.com)Googleマップ(maps.google.co.jp) をeval関数削除から除外するには、

  !SCR  !mail.google.com;maps.google.co.jp  eval(

と記述します。   各ホスト名の先頭に!記号をつけるのではないことに注意してください。 上記のように、ホスト指定部全体の先頭に  ! 記号 を付与します。
googleには他にもJavaScriptを多用した高度なページを提供するサイトがあります。 google.co.jp と google.com に関連するサイトをまとめて除外するには、ホスト指定をドットの部分から開始して(終端一致指定)、

  !SCR  !.google.com;.google.co.jp  eval(

と記述します。

上記により、 google関連 (mail.google.com, maps.google.co.jp, www.google.co.jp など) と ニコニコ動画(www.nicovideo.jp) をeval関数削除から除外するには、

  !SCR  !.google.com;.google.co.jp;.nicovideo.jp  eval(

と記述します。

!SCRコマンドは、 開始タグから終了タグまでの間を削除します。
次のようなコードの場合に、
  <script>aabbcc</script><script>xxx=eval();yyy=1;</script><script>aabbcc</script>
eval( を指定してスクリプトを削除すると、
  <script>aabbcc</script><script>aabbcc</script>
になります。
eval()関数の部分のみを削除するわけではないので、 前後で矛盾が生じてページ全体のスクリプトが停止してしまうことはありません。


 
特定の国に置かれたJavaScriptを停止する

危険の多い中国サイトの場合には、より安全にするためにJavaScript全体を停止するのも1つの方法です。
たとえば、 <script というタグ開始部分を、 <stop!!ChinaScript! に置換する場合は、SwapAll_igCコマンド

  SwapAll_igC .cn /,,,<script♐»»<stop!!ChinaScript!

という行を追加します。(♐»»の部分は3文字です)
ターゲットホスト.cn を指定しているので、 中国サイト以外のhtmlページのscriptタグを書き換えてしまうことはありません。
SwapAll_igCコマンドは、大文字小文字を無視して置換するので、
  <SCrIpT src=" ...
といった記述でも置換されます。


 
特定の国に置かれたjsファイルの読み込みを停止する

.jpのホストからhtmlページを取得する場合でも、そのページが .cnのホストからスクリプトを取得しようとする場合 があります。たとえば、
  <script src="http://example.cn/aaa.js"></script>
のような記述で、 src=を指定したscriptタグ を使用している場合です。
これを !SCRコマンド で、
  !SCR * .cn/
と記述して削除することはできません !SCRコマンド は、開始タグ(上の例では <script src="http://example.cn/aaa.js">) と、終了タグ(</script>) のにキーワードが含まれるかどうかで判定します。
  <script src="http://example.cn/aaa.js"></script>
の場合では、そもそも間には何も含まれていませんので、削除されません。
このような場合は、!SCRTAGコマンド を使用します。
  !SCRTAG * .cn/
!SCRTAGコマンドは、開始タグ内に含まれるかどうかで削除するかどうかを判定します。

ウィルスがページを改竄してJavaScriptを埋め込むとき、実行させたいJavaScript全てを埋め込むのではなく、 <script src="http://... ...></script> の形で埋め込み、ブラウザに外部に置いたJavaScript(jsファイル)を読み込ませようとすることが殆どです。
これにより最小の改竄でユーザーに大きな被害を与えることができるためです。
悪意のあるjsファイルは 中国(.cn)、ロシア(.ru) にある攻撃サイトに置かれることが多くなっています。 .cnだけでなく、.ruからの読み込みも停止させるとよいでしょう。この場合は次の2行になります。
  !SCRTAG * .cn/
  !SCRTAG * .ru/


 
特定の国のアクセスを完全に停止する

単に中国サイトへのアクセス全てを禁止したい場合には、 *コマンド
  * .cn/
と表記するだけですが、これは 「URLの一部に .cn/ が含まれるとアクセス禁止にする」 という部分一致ブロックによる処理になりますので、弊害があるかもしれません。
たとえば、
  http://example.co.jp/user.cn/index.html
といったページはブロックされます。


 
jsファイル中のeval関数を停止する

!SCRコマンド は、 HTMLファイル(text/html) を対象とするコマンドです。
読み込んだ jsファイル(application/x-javascript, etc) の中でeval関数を使用していた場合は、上記の
  !SCR * eval(
では無効化できません。
この場合は SwapAll_igCコマンド による無効化を考えます。このコマンドはHtml以外のテキストページも対象とします。
単純に、

  SwapAll_igC * /,,,eval(♐»»e-v-a-l(

と記述した場合は、JavaScriptと関係のない部分まで全て置換されてしまうので (たとえばこのページで説明のために記述している eval( という文字列)、 text/html のページは置換から除外するように ¶¶¶記号!text/html で指定します。

  SwapAll_igC * /,,,eval(♐»»e-v-a-l(¶¶¶!text/html

この例では、jsファイルなどに含まれる文字列 eval( は全て e-v-a-l( に置換されます。

上記「eval関数を含むJavaScriptを削除する方法」 のホスト指定の例で説明したように、特定サイトをこの置換ルールから除外するには、  * 記号 ではなく、次のように除外したいホスト名を列記します。

  SwapAll_igC !.google.com;.google.co.jp;.nicovideo.jp /,,,eval(♐»»e-v-a-l(¶¶¶!text/html




[Back]



[HOME]
DOWNLOAD MIRROR