但是遇到比较长的 JS 内容,这样过滤明显加重了 Proxomitron 的负担,理论上也会拖慢网页加载速度。
所以使用帮助中技巧篇提到的“Quick and Dirty”这种摧残式的过滤手法是比较好的选择。
现在来看下磬灵风软论坛 BT 发布页的一段网页源代码:
Code: Select all
<script type="text/javascript">
var isAD = false;
var timeOutID = null;
function sAD()
{
rAD();
var popupAD = $("popupADDiv");
popupAD.style.display = "block";
popupAD.style.left = document.body.scrollLeft + (document.body.clientWidth - popupAD.clientWidth)/2;
var _w = window.pageXOffset || document.documentElement.scrollTop;
popupAD.style.top = _w + 120;
popupAD.focus();
mAD(50, 0, 1);
}
function hAD()
{
if (isAD)
{
var popupAD = $("popupADDiv");
popupAD.style.display = "none";
rAD();
isAD=false;
}
}
function mAD(interval, start, step)
{
var popupAD = $("popupADDiv");
var pBar = $("processBar");
pBar.innerHTML = "<table bgcolor='#6AAAE2' width='"+(popupAD.clientWidth*start/100)+"' height='10' border='0' cellpadding='0' cellspacing='0'>
<tr><td></td></tr></table>";
if (start < 100)
{
timeOutID = setTimeout("mAD("+interval+", "+(start+step)+", "+step+")", interval);
}
else
{
timeOutID = null;
}
}
function rAD()
{
if (timeOutID != null)
{
clearTimeout(timeOutID);
timeOutID = null;
}
}
</script>
统计下,有 1093 字节长……
显然又长又臭,但是直接整个替换似乎费时费力,但是同时,我们可以注意到网页源代码下面还有一段有关联:
Code: Select all
<div id="popupADDiv" onfocusout="hAD()" onmouseenter="isAD=false;this.focus()" onmouseleave="isAD=true">
<div><script type='text/javascript'>
cpro_client='bdwxl_8642ahm_cpr';
cpro_at='text_image';
cpro_161=4;
cpro_flush=4;
cpro_uap=1;
cpro_w=360;
cpro_h=300;
cpro_template='text_default_360_300';
cpro_cbd='#trans';
cpro_cbg='#trans';
cpro_ctitle='#0000ff';
cpro_cdesc='#444444';
cpro_curl='#008000';
cpro_cflush='#e10900';
</script>
<script language='JavaScript' type='text/javascript' src='http://cpro.baidu.com/cpro/ui/cp.js'></script>
</div>
<div id="processBar" style="background:#EEEEEE;"></div>
</div>
我们把这个标签单独列出来看下:
Code: Select all
<div id="popupADDiv" onfocusout="hAD()" onmouseenter="isAD=false;this.focus()" onmouseleave="isAD=true">
...
</div>
所以说这才是一个导火线……因此我们找到要摧残的对象后,就直接爽快地把这些 DIV 标签的属性清除就好了。
用下面一个网页过滤规则来做:
Code: Select all
[Patterns]
Name = "33_1000fr2_DIVruin"
Active = TRUE
URL = "bt.1000fr.com/"
Bounds = "<div\s*>"
Limit = 104
Match = "*id="popupADDiv"*"
Replace = "<div>"
这样就让 JS 弹窗脚本失效了,但是下面的那个百度文字广告也出来了,可以自己再过滤下。