关于Firefox的技巧的文档:侧边栏视图、缩略图视图、简介:
特点:
Setting
Inject-替代脚本
Operator-操作符
Fields-匹配字段
默认设置:
简介:
Karma Blocker,简称KB,中文我觉得应该叫”基分”,作者也是Greasemonkey的作者
下载:/en-us/firefox/addon/karma-blocker/
简介:github/arantius/karma-blocker
语法:github/arantius/karma-blocker/wiki/Configuration
正则匹配 链接 无域名的链接国内对这个扩展的使用经验,最好先了解一下
如果你想迅速看到效果,试一下网上给的一个小规则,你很快就会看到大量脚本被拦截:# 这个是某人仿效ADP的规则,杀掉不少,记得配白名单
#拦截第三方脚本
[Group]
name="ADP $scipt,third-party"
match=all
score=12
rule=$thirdParty==true
rule=$type==script
#干掉所有第三方链接的框架
[Group]
match=all
score=100
rule=$thirdParty==true
rule=$origin.tag=='iframe'
#即ADP的$image,third-party
[Group]
match=all
score=100
rule=$thirdParty==true
rule=$type==image
#ADP的:$object,third-party
[Group]
match=all
score=100
rule=$thirdParty==true
rule=$type==object
特点:
●45K,超级精简,完全不会拖慢(可以查看一下评论)
●请求之前拦截,提前拦截对象,节省流量,无cookie
●评分基于对象的权值/评级/给分,类似于流行的垃圾邮件过滤机制,比如SpamAssasin,
●灵活强大的语法,不是仅仅局限于拦截URL
●全局函数注入:如果拦截了脚本,仍然能够调用它的函数,避免一切错误。这是通过使用一个同名的空函数来搞定的,类似于NS-NoScript的替代脚本操作机制:任何资源请求都要先经过KB的规则审核,通过后才发送,除了下面3种情况:
●禁用KB时,状态栏图标变灰,一切请求都允许
●非以下协议的请求都放行,
●3种核查方式,确保构成火狐自身的必须的资源请求不会拦截,比如图标、前进/后退按钮等等PS:点击状态栏图标,全局启用/禁用KB
语法:
,Settings,
,Inject,
,Group,
,Rules,
,Fields,
KB的操作语法INI文件的格式一样,分为几大分组,有4种有效的行描述:
●组头:例如[Settings], [Group]
●配置指令:总是一个名字,一个等号=,一个适当的权值,比如threshold=5
●注释:可以放在任何地方,一个#号开始,知道行尾,比如 # This default ruleset is intended to be demonstrative: making productive
●空行:
空白(换行、空格、tab键)可以放在任意描述符号中间,会被忽略掉;注释放哪儿都行,不仅是行开头位置这些组中可能用到的参数值有:
●数字:正整数、负整数、浮点数
●字符串:用单引号‘ ’或双引号””包括对任意字符值,不可以跨行
●布尔值:true,false
Setting
[Settings]组是对KB的全局设置
字段值描述
threshold数字拦截对象的总积分下限:每个分组一个权值,一个对象同时匹配的几个组的积分和大于等于threshold,就拦截掉
cutoff数字拦截/放行对象的单组积分上下限:threshold是对匹配完所有分组之后的对象积分总和的对比值,cutoff是单个分组匹配完的立即对比值,大于该值立即拦截,小于该值负数立即放行。超过该值上限或负下限都无须继续与其他组匹配;
collapse布尔该参数目的仅仅是拦截空的对象容器containers,即当一个对象被拦截时,同时拦截包含该对象的容器;该参数比较激进,默认false
Inject-替代脚本
[Inject]组负责替代被拦截的脚本函数,参考NS-NoScript的替代脚本;PS:替代脚本的使用方法,
function字符串该参数可能重复多行,每次引用一个函数,就会替代页面内的同名函数。使用该参数来避免因为拦截了脚本造成的"something is undefined"-有未声明的参数,错误消息。你可以使用"dotted object"-点对象函数,比如用foo.bar可创建带属性组bar(另一个函数)的函数foo
PS:"dotted object"格式我不明白,是不是类似于数组那种东西啊?了解网页设计的应该知道~
Group
[Group]组是主体部分,你可以定义多个组
字段(与下面的匹配字段不同)值描述
name字符串一个名字,用来显示在monitor窗口中
match any或者all any匹配任何一条,all匹配所有,默认any
score数字当匹配一个组时,该组的权值分数就加到该对象的总分中,默认1
rule如下比较复杂,故单独分块介绍,包括匹配字段-field、操作符-operator、给定值-value
PS:匹配字段表示被匹配的对象,操作符是匹配方式,给定值是进行匹配的值,比如
rule=$url.host$='.akamai',
字段$url.host表示请求的对象的URL中的域名,操作符$=表示“以..结尾”,整个规则的意思是:请求的对象的URL中的主域名部分是否是以.akamai结尾的?
Rules
规则是统一格式,但具体实现有很多方式:一个匹配字段、一个操作符、一个给定值(注:该值不是权值/积分,是需要匹配的对象) Operator-操作符
操作符名字符号描述
等于==匹配字段与给定值严格匹配不等于!=与上面相反
按regex匹配=~对匹配字段进行正则表达式regex匹配。regex用字符串表示。了解Javascirpt:的人应该明白该字符串直接传递给new RegExp()构建函数,不懂JS的人,你就简单理解为不必使用\来表示转义字符了。否则给定值就得是标准的正则表达式,才能与Mozilla的JS引擎兼容
不按regex匹配!~与上面的相反
始于^=虽然这样的给定值可以用=~操作符来表示,但是^=允许使用更加简明的文字表达,避免使用转移字符了止于$=配合^=操作符
小于<;匹配字段值小于给定值
大于>相反
PS:所有操作符都是不区分大小写的
Fields-匹配字段
与上面的group中的字段不是一个意思,表示的是判定值,与value-给定值对应
referrer-请求资源的站点,resource-被请求的资源,类似NS-NoScirpt的ABE中的请求站点和目标站点
字段值描述
$thirdParty布尔第三方,如果调用资源的主域名与被调用资源的不同,就属于$thirdParty,该匹配字段仅
有一个操作-等于,其他操作符对这类对象无效
$type script, image, stylesheet, object,
object_subrequest, subdocument,
ping, font, media
这些值基于Mozilla在nsIContentPolicy函数中定义的常量,大部分值都可以照字面意思理解
的,但是最好详细看下函数定义。该字段定义的对象仅适用于2种操作:等于、不等于
PS:这个函数定义我保存下来了,站点权限可能用到
$url字符串被请求的资源-resource的完整URL,不过也可以用$url.host, $url.path, $url.scheme格式表示该URL的相应域名、路径、协议
$origin字符串发起资源请求的-referrer的完整URL,L$origin.host, $origin.path, $origin.scheme格式类似上面的参数$origin.tag字符串HTML语言的标记符,比如img, style, script, object等,即加载资源的标记符$origin.tag.*字符串原始标记符的属性,比如$origin.tag.width or $origin.tag.height
默认设置:#默认的设置只是为了示范,让用户可以快速了解如何使用KB [Settings] threshold=12 #总积分下限,大于等于12分就拦截cutoff=12 #分组匹配时,某一项得分大于等于12分,立即拦截collapse=false #拦截对象的容器?默认no
# 替代脚本的名字[Inject] function='DM_tag' function='OA_show' function='_gat._getTracker' function='quantserve' function='s.t' function='setOmniturePageName' function='urchinTracker' # If any request that a Flash movie makes is blocked, the entire Flash # movie will remove itself from the page. So if we let the movie # through, we let all requests it makes go through, with this rule. # 若一个Flash电影被拦截,整个电影都被拦截掉,所以我们用这个规则让所有子请求通过[Group] name="Whitelist: flash sub-request" # 白名单: 放行子flash请求score=-13 # -13分全部都是放行的rule=$type=
=object_subrequest # eBay uses third-party iframes for auction descriptions now, to # prevent the XSS hole they left open for a long time. [Group] name="Whitelist: eBay" match=any score=-13 rule=$url.host=='cgi.ebay' rule=$url.host=='vi.ebaydesc' rule=$url.host=='srx.main.ebayrtm' [Group] name="Whitelist: HTTPS" score=-4 rule=$url.scheme=='https' [Group] name="Whitelist: CDNs" score=-4
rule=$url.host$='.akamai' rule=$url.host$='.asset-cache' rule=$url.host$='.cachefly' rule=$url.host$='.fsdn' rule=$url.host$='.ggpht' rule=$url.host$='.gstatic' rule=$url.host=~'cdn' [Group]
name="Whitelist: Keywords" score=-4
match=any
rule=$url=~'(\b|_)(downlo|uplo)ads?\d*(\b|_)' [Group]
name="(I)FRAMEs and Scripts" score=6
match=any
rule=$type==script rule=$type==subdocument [Group]
name="Feed Trackers" score=4
match=any
rule=$url.path=~'^/~.{1,2}/' rule=$url^='feeds.wordpress/1.0/' [Group]
name="Size: 0x0 & 1x1" score=4
match=any
rule=$origin.tag.size=='0x0' rule=$origin.tag.size=='1x1' # See: www.iab/iab_products_and_industry_services/1421/1443/1452 [Group]
name="Size: Standard Banner" score=4
match=any
rule=$origin.tag.size=='300x250' rule=$origin.tag.size=='468x60' rule=$origin.tag.size=='234x60' rule=$origin.tag.size=='88x31' rule=$origin.tag.size=='120x90' rule=$origin.tag.size=='120x60' rule=$origin.tag.size=='120x240' rule=$origin.tag.size=='125x125' rule=$origin.tag.size=='728x90' rule=$origin.tag.size=='160x600' rule=$origin.tag.size=='120x600' rule=$origin.tag.size=='300x600' [Group]
name="Third-party" score=4
rule=$thirdParty==true [Group]
name="Unsavory hosts"
match=any
rule=$url.host$='.addtoany' rule=$url.host$='.blogads' rule=$url.host$='.imrworldwide' rule=$url.host$='.kontera' rule=$url.host$='.scorecardresearch' rule=$url.host$='.statcounter' [Group]
name="Images" score=3
rule=$type==image [Group]
name="Extra-long URLs" score=2
rule=$url.path=~'.{175}' [Group]
name="Keywords (Full)" score=2
rule=$url=~'(\b|_)ad(frame|sense|server?|sonar)?s?\d*(\b|_)' rule=$url=~'(\b|_)banners?\d*(\b|_)' rule=$url=~'(\b|_)(analytic|quant|s_code|track|urchin|webtrend)(s|er|ing)?\d*(\b|_)' rule=$url.host=~'metrics' [Group]
name="Keywords (Partial)" score=2
rule=$url=~'(\b|_)ads?\d*|ads?\d*(\b|_)' rule=$url=~'(\b|_)track(s|er|ing)?\d*|track(s|er|ing)?\d*(\b|_)' [Group]
name="Long Querystring" score=2
match=all
rule=$url.path=~'\?(.*&){6,}' [Group]
name="Objects (Flash)" score=2
rule=$type==object [Group]
name="Querystring" score=1
rule=$url.path=~'\?'
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论