傲游浏览器提供了强大的自定义过滤规则系统.
自定义规则分为 2 种类型:
文本(TEXT)类型: 对页面的源代码进行处理. 注: 并非内存中处理後的代码.
网址(URL)类型: 对符合条件的网址进行处理.
每种类型有其对应的属性. 简称: TXT, URL
在 设置中心->过滤包管理器 中可新建, 编辑过滤包.
使用 过滤包管理器 中可直接导出过滤包为 M2F 文件. 也可将文件压缩为 ZIP 格式, 并改後缀为 M2F 再发布
请在编辑过滤中对话框->属性对话框中设定过滤包信息, 描述栏可使用 HTML.
[编辑] 文本类型过滤规则的属性
name=Filter Name
过滤规则名称 (必须)
author=author name
制作者名称 (可选)
type=text
规则所属类型 (必须)
enable=1
该规则是否启用. 可取值: 1 (启用), 0 (禁用). 缺省值为 0. (必须)
action=3
处理方式 0 或 3 (必须)
0=无操作, 默认值
3=用 replace 的内容替换 match 所匹配的字符串
同样适用文件头和文件尾匹配宏函数 $FILESTART() 和 $FILEEND()
priority=0
该规则的优先级, 大于零的整数(0~999), 数值越大优先级越高.
相同优先级按上下顺序处理, 仅限于本过滤包中.
不同过滤包按Filters.ini 中上下顺序处理. (必须)
match=<!-- DoubleClick Ad Tag -->.*?<!-- End DoubleClick Ad Tag -->
匹配字符串 (支持正则表达式) (必须)
可使用宏函数 $FILESTART() 和 $FILEEND()
match_count=1
每个页面的匹配次数限制, 正整数. (可选)
replace=<!--removed ads-->
用于替换的字符串 (支持正则表达式的替换标记) (必须)
可使用宏函数$MAXPATH() $MAXFILECONTENT(filepath)
match_url=[\./]sina\.com.cn
网址匹配字符串 (支持正则表达式) (可选)
exclude_url=maxthon\.(?:com|cn)
网址例外字符串, 匹配该串的网址不过滤 (支持正则表达式) (可选)
bound=<script.*?</script>
限定 match 属性匹配范围的预匹配规则
(支持正则表达式, 支持宏函数 $TAG(tagName) (可选)
max_bound_size=1024
最大的匹配范围(最大值 4096 字节). 缺省值(0)为最大值. (可选)
exclude=FocusFlash
例外字符串, 符合该串的不过滤 (支持正则表达式) (可选)
[编辑] 网址类型过滤规则的属性
name=Filter Name
过滤规则名称 (必须)
author=author name
制作者名称 (可选)
type=url
规则所属类型 (必须)
enable=1
该规则是否启用. 可取值: 1 (启用), 0 (禁用). 缺省值为 0. (必须)
action=3
处理方式 0, 1, 2 或 3 (必须)
0=无操作, 默认值
1=关闭当前连接
2=返回 return 属性的内容, 关闭当前连接
3=用 replace 的内容替换 match_url 所匹配的字符串
priority=0
该规则的优先级, 大于零的整数(0~999), 数值越大优先级越高.
相同优先级按上下顺序处理, 仅限于本过滤包中.
不同过滤包按Filters.ini 中上下顺序处理. (必须)
replace=$1/search\?&q=cache:
用于替换的字符串 (支持正则表达式的替换标记) (可选)
可使用宏函数$MAXPATH()
return=<html><body>$1 is blocked</body></html>
返回给浏览器的内容 (仅当 actinon 为 2 时有效) (可选)
match_url=(http://72\.14\.235\.104)/search\?.*q=cache:
网址匹配字符串 (支持正则表达式) (必须)
exclude_url=/search\?&q=cache
网址例外字符串, 匹配该串的网址不过滤 (支持正则表达式) (可选)
[编辑] 宏函数
宏函数是傲游浏览器扩展的一套用于加强正则表达式处理能力的函数. 可用于支持正则表达式的属性中.
$FILESTART()
用于匹配文件头, 仅用于文本类型的过滤规则的 match 属性中.
此时 replace 中无需使用正则式.
$FILEEND()
用于匹配文件尾, 仅用于文本类型的过滤规则的 match 属性中.
此时 replace 中无需使用正则式.
$KEYWORDS(keywordListName)
将内容替换为括号内指定的关键字列表内容.
keywordListName 为该关键字列表的名称.
如: <keywords name="ad_list"><item>/ad\.</item><item>/gg/</item><item>/ggao/</item></keywords>,
$KEYWORDS(ad_list) 相当于 (?:/ad\.|/gg/|/ggao/)
$BASE64(string)
返回 Base64 解码後的 string 的内容
$STR(string)
用来表示前後带双引号(")或单引号(')或无引号的字符串 string.
一般用于匹配 HTML 标记的属性值.
如: $STR(item) 相当于: (?:"item"|'item'|item(?=[\s>'"])
$MAXPATH()
返回 Maxthon2 安装路径.
如: C:/Program Files/Maxthon2 (末尾不带"/").
仅用于replace 和 return 属性中.
$MAXFILECONTENT(filePath)
读取并返回 filePath 所指定位置的文件内容, 要求文件为 UTF-8 编码.
仅用于 replace 和 return 属性中.
读取的文件必须位于 Maxthon2 安装目录中, filePath 为其相对路径.
如: $MAXFILECONTENT(\Filter\a.js) 为
C:\Program Files\Maxthon2\Filter\a.js 中的内容. (a.js 中可使用$MAXPATH())
$TAG(tagName)
匹配带属性的 HTML 标记.
<tagName attr=”#”>...</tagName> 以及无关闭标记的 <tagName attr=”#”>.
仅用于 bound 属性. 仅匹配最内层标记.
[编辑] 正则表达式参考
傲游浏览器使用的正则表达式与 Perl 5 的正则表达式语法相同.
基本语法
.
匹配除换行符(\n)之外的任何单个字符. 要匹配包括 '\n' 在内的任何字符, 可以使用 [.\n] 模式.
注: Maxthon2过滤系统中匹配任意字符.
\
转义字符, 用于转义紧跟的字符. 详情请参考转义字符表.
[...]
定义一个字符类, 匹配方括号内的任意一个字符.
例: [abc] 可以匹配单个字符 a, b 或 c.
[^...]
定义一个非匹配字符类的开始处, 它表示否定该字符类, 即匹配不在方括号中出现的任何字符.
例: [^abc] 可以匹配 e, 7, z 等除 a, b 和 c 之外的字符.
^
如果 ^ 出现在正则表达式最前边, 它匹配输入字符串的开头.
例: ^[abc] 匹配输入字符串开头的 a, b 或 c , 如 about us, be it, can you?.
$
放在正则表达式的最後, 匹配输入字符串的末端.
例: [0-9]$ 匹配输入字符串末端的一个数字字符, 如 last 9, add 1.
|
"或"分隔符, 分隔多个表达式, 只须匹配其中一个.
例: th(is|at|ese|ose) 可以匹配 this, that, these 或 those.
-
在字符类中, 指定一个字符范围.
例: [0-9] 匹配 0 到 9 的数字.
?
匹配前面的子表达式零次或一次. ? 等价于 {0,1} .
例: do(es)? 可以匹配 do 或 does.
+
匹配前面的子表达式一次或多次. + 等价于 {1,} .
例: zo+ 能匹配 zo 以及 zoo 或者 zoooo, 但不能匹配 z .
*
匹配前面的子表达式零次或多次. * 等价于 {0,} .
例: zo* 能匹配 z 以及 zoo .
{n}
匹配前面的子表达式确定的 n 次. n 是一个非负整数.
例: o{2} 不能匹配 Bob 中的 o , 但是能匹配 food 中的 oo .
{n,}
匹配前面的子表达式至少 n 次. n 是一个非负整数. e{1,} 等价于 e+ , e{0,} 则等价于 e* .
例: e{2,} 不能匹配 Bed 中的 e , 但是能匹配 feel 和 feeeeel 中所有的 e .
{n,m}
匹配前面的子表达式最少 n 次且最多 m 次. n<=m, m 和 n 均为非负整数. 在逗号和两个数字之间不能有空格.
o{0,1} 等价于 o? .
例: o{1,3} 可以匹配 fooooood 中的前三个 o .
??, +?, *?, {n}?, {n,}?, {n,m}?
?, +, *, {n}, {n,}, {n,m} 的非贪婪匹配版本, 非贪婪匹配在匹配时会尽可能匹配较少的字符.
例: 输入字符串为 <abc><def>
使用非贪婪匹配 <.*?> 会匹配 <abc> .
使用贪婪匹配 <.*> 会匹配整个 <abc><def> .
(pattern)
表达式分组操作符. 用于分隔子表达式和返回部分匹配结果. 返回的结果可以在替换操作的时候用 $1 - $10 表示.
例: (\d+,)*\d+ 可以匹配逗号分隔的数字字符串, 如 41 或 1,23,456 .
(?:pattern)
非获取匹配分组, 匹配 pattern 但不返回匹配结果, 这样可以节省资源, 也不容易与获取匹配的结果混淆.
(?=pattern)
肯定正查(Positive Lookahead). 作用类似 $, 匹配任何後缀有符合 pattern 字符串的之前的位置,
这是一个非获取匹配.
例: Windows (?=95|98|NT|2000) 匹配 Windows 2000 中的 Windows, 而不匹配 Windows 3.1 中的 Windows.
最终返回的是 Windows 而不包含 pattern 匹配的 2000 部分.
(?<=pattern)
肯定反查(Positive Lookbehind). 作用类似 ^, 匹配任何前缀有符合 pattern 的字符串之後的位置,
这是一个非获取匹配.
例: (?<=Windows|MacOS|Linux|Unix) Now 匹配 Windows Now 中的 Now, 而不匹配 PalmOS Now 中的 Now.
最终返回的是 Now 而不包含 pattern 匹配的 Windows 部分.
(?!pattern)
否定正查(Negative Lookahead). 作用类似否定的 $, 匹配任何後缀不符合 pattern 字符串的之前的位置,
这是一个非获取匹配.
例: Windows(?!95|98|NT|2000) 匹配 Windows 3.1 中的 Windows, 但不匹配 Windows 2000 中的 Windows.
最终返回的是 Windows 而不包含 pattern 匹配的 3.1 部分.
(?<!pattern)
否定反查(Negative Lookbehind). 作用类似否定的 ^, 匹配任何前缀不符合 pattern 的字符串之後的位置,
这是一个非获取匹配.
例: (?<!Windows|MacOS|Linux|Unix) Now 匹配 PalmOS Now 中的 Now, 而不匹配 Windows Now 中的 Now.
最终返回的是 Now 而不包含 pattern 匹配的 PalmOS 部分.
(?#comment)
注释, 不作处理.
$n
表示前面用 () 捕获的第 n 个子表达式. n=1-9
例: $1 表示前面用 <a[^>]*?href=(".*?")[^>]*?> 捕获 <a href="http://forum.maxthon.com/">
得到的 "http://forum.maxthon.com/" 部分.
转义字符表
\w
表示任意字母和数字, 等价于 [a-zA-Z0-9]
\W
表示任意非字母和数字字符, 等价于[^a-zA-Z0-9]
\s
表示任何空白字符, 包括空格, 制表符, 换页符等等, 等价于 [ \f\n\r\t\v]
\S
表示任何非空白字符, 等价于 [^ \f\n\r\t\v]
\d
表示任意数字, 等价于 [0-9]
\D
表示任意非数字字符, 等价于 [^0-9]
\b
表示单词边界, 即字母和空格之间的位置. 也可能表示退格键.
\B
表示非单词边界
\1 - \10
表示前面用 () 包含的第 n 个子表达式.
例: <t(.*?)>caption<\/\1> 可以匹配 <title>caption</title>, 注意里面的 \1 .
\t
表示制表符
\n
表示换行符
\r
表示回车符
\x##
表示十六进制值为 ## 的字符, ## 必须为两个字符. 正则表达式中使用 ASCII 编码.
例: \x41 等价于 A , \x041 则等价于 \x04 後面带一个字符 1 .
\u####
表示十六进制值为 #### 的 Unicode 字符.
例: \u2103 等价于摄氏度符号 ℃ .