火狐星云
小狐狸
小狐狸
  • UID30972
  • 注册日期2009-11-05
  • 最后登录2014-04-13
  • 发帖数79
  • 经验30枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
  • 社区居民
阅读:2898回复:6

ABP规则 管线符号(||) 不明

楼主#
更多 发布于:2011-07-09 21:47
看了ABP规则教学,有不明处。



关于两根管线符(||)

一根管线符(|)我已明白。但是两根有什么不同?

想阻挡 http://example.com/banner.gif
          https://example.com/banner.gif
          http://www.example.com/banner.gif

规则     ||example.com/banner.gif

将会阻挡以上三地址

这样看来,(||)相当于通配符*(星号),代表了 规则当中 example之前的任意字符(特殊符号、字母)


但是该规则并不会阻挡

 1.http://badexample.com/banner.gif
 2.http://gooddomain.example/analyze?http: ... banner.gif

按推论,第一条规则 example之前, http://bad应当符合“通配符”(特殊符号、字母),但是该广告并未过滤。

(||)怎么运用为好,请举例
alanfly
千年狐狸
千年狐狸
  • UID31035
  • 注册日期2009-11-10
  • 最后登录2024-05-16
  • 发帖数2767
  • 经验578枚
  • 威望1点
  • 贡献值128点
  • 好评度100点
  • 社区居民
  • 最爱沙发
  • 忠实会员
1楼#
发布于:2011-07-09 21:47
||example.com就是所有域名是example.com的地址,不是通配符;
例如www.example.com、forum.example.com、example.com……
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
2楼#
发布于:2011-07-09 21:47
AP和ABP规则写法一样,你可以看看
https://autoproxy.org/zh-CN/Rules


目前在 gfwList 中,有如下的规则格式:
example.com

匹配:http://www.example.com/foo
匹配:http://www.google.com/search?q=www.example.com
不匹配:https://www.example.com/
用于表明字符串 example.com 为 URL 关键词。任何含关键词的 http 连接(不包括 https)皆会使用代理。
||example.com

匹配:http://example.com/foo
匹配:https://subdomain.example.com/bar
不匹配:http://www.google.com/search?q=example.com
匹配整个域名(含子域名)(不论是 http 还是 https),一般用于该站点的 IP 被封锁的情况。
|https://ssl.example.com

这种规则匹配的是所有以 https://ssl.example.com 开头的地址。一般用于某些 IP 的 HTTPS 访问被定点封锁的情况。
|http://example.com

这种规则匹配的是所有以 http://example.com 开头的地址。一般用于某些域名较短的网站,例如短网址服务,可以防止出现慢规则,也用于暂时应付 issue 117。
/^https?:\/\/[^\/]+example\.com/

这种规则匹配的是域名中含有 example.com 这个字符串的,是正则表达式,较不常见。一般用于该字符串被 DNS 污染的情况。
@@||example.com

这种规则的优先级最高,表示所有匹配 ||example.com 规则的网址均 禁止 代理。一般用于特殊情况,比如禁止对国内的网站误用代理。
!Foo bar

注释,以英文感叹号开头,解释说明,不起实际作用。

-いたんですか? -ええ、ずっと
火狐星云
小狐狸
小狐狸
  • UID30972
  • 注册日期2009-11-05
  • 最后登录2014-04-13
  • 发帖数79
  • 经验30枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
  • 社区居民
3楼#
发布于:2011-07-09 21:47
基础问题

题目

http://gooddomain.example/analyze?http: ... banner.gif

1.根据"域名"的定义,域名是指哪部分?

A. http://gooddomain.example/

B. http://gooddomain.example/analyze?

C. http://gooddomain.example/analyze?http: ... banner.gif

D. http://example.com/banner.gif


2.【analyze?http://example.com/banner.gif 】这一串字符怎么称呼?
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
4楼#
发布于:2011-07-09 21:47
这个最好还是网上学习一下域名的基本构成吧。
以本网站 <!-- w --><a class="postlink" href="http://www.firefox.net.cn">www.firefox.net.cn</a><!-- w -->来说,www 是网络名,firefox是域名主体,.net.cn是域名后缀。所以域名就是firefox.net.cn

你上面只有D里面的example.com 是域名。
Firefox More than meets your experience
fishcn
火狐狸
火狐狸
  • UID32344
  • 注册日期2010-03-21
  • 最后登录2012-09-21
  • 发帖数100
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2011-07-09 21:47
||表示开始,应该是指域名的开始。注意,在一个域名中,后缀加上之前的一个单词才是二级域名,其它的都是三级或四级乃至更多级域名。
<!-- w --><a class="postlink" href="http://www.example.com">www.example.com</a><!-- w --> 中, .com是顶级域名,example.com 是二级域名,加上前面的www是一个三级域名。|| 表示域名的开始,所以匹配了 example.com <!-- w --><a class="postlink" href="http://www.example.com">www.example.com</a><!-- w -->,但是不匹配www.subexample.com,因为它的二级域名是 subexample.com,不符合规则中的任何一个定义。

其实,在域名中,每个节只允许是英文数字和减号,意味着“||example.com”可以理解为:
([a-z0-9-\.]+\.)?example.com
这是一个正则表达式,解释一下,匹配如下内容:
1.域名完全符合 example.com 的请求
2.域名包含 .example.com 的请求。注意在 example.com 前面加入了一个点,这就限定了必须是 example.com 的子域名才能匹配,这也就是为什么 subexample.com 这个匹配不了的原因:匹配的时候前面要么没内容,要么前面的内容以.结尾。

常见的顶级域名包括 .com .org .net .net.cn .cn 等等。

一个完整的URL,例如:
http://www.google.com/analyze?http://ex ... banner.gif
其中,http://是协议,www.google.com 是域名,这是一个三级域名,analyze是路径,而 ?http://example.com/banner.gif 则是查询字符串。

至于如何使用,举个例子。比如现在我要拦截cnzz.com的站点统计脚本,假定cnzz.com的统计脚本路径如下格式:
http://s1.cnzz.com/stat.php?out=js
一般比较大型的站点,都会有负载均衡和CDN措施,会在不同的地点设置很多CDN服务器,当你请求的时候会就近路由你的请求到最近的镜像服务器以提高速度,cnzz就是这样的,它的服务器域名类似这样:
s?.cnzz.com,这是一个三级域名,?表示一个数字,服务器可能从 s1-s31或者更多。而在这些镜像服务器之下的文件路径其实是一样的,此时,便可以使用||来匹配它们:
||cnzz.com,这就匹配了所有二级域名是cnzz.com的请求,包括了所有的s1.cnzz.com到 s31.cnzz.com 的镜像服务器。

类似的镜像服务器有很多,比如QQ空间,你从网通的线路访问会使用很多 *.cnc.qzone.qq.com 这样的域名访问,从电信的线路则会有很多 *.cts.qzone.qq.com 的域名,此时||便能起上很大的用场。
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
6楼#
发布于:2011-07-09 21:47
楼上真用心,赞。
Firefox More than meets your experience
游客

返回顶部