MediaWiki扩展:SpamBlacklist
天下维客,你可以修改的网络知识库
| MediaWiki扩展简明教程 | Inputbox帮助文档 | 使用Spam黑名单 | 内容折叠隐藏 | 动态文章列表 | 指定图片链接 |
| 代码高亮处理 | 预置初始编辑文本 | 页面访问限制 | 所见即所得编辑器 | QQ在线信息 | |
| 交流:扩展使用 | 投票与评分 | 内容随机展示 | wikitex | 改进设想 | ...更多 |
| 加入google地图和51地图标注功能 | Ajax五颗星评分插件 |
SpamBlacklist是一个mediawiki扩展程序,用于防范在wiki文章内反复粘贴广告网址(即spam行为)。当有人试图保存页面时,本扩展将对“http://...”形式的外部链接进行检查,若链接中包含限制信息则拒绝保存页面并进行提示。
本扩展程序所使用的网址黑名单中可包含非常大量的网址。使用本扩展可以大大提高mediawiki对spam行为的控制能力。(然而,本扩展属于需要人工及时发现新的spam网址并加入黑名单,不能自动对新出现的网址进行事先防范)。
使用本扩展主要包括3个步骤:
- 下载并安装mediawiki的SpamBlacklist扩展程序
- 对SpamBlacklist进行配置
- 建立自己的网址黑名单和白名单
目录 |
安装SpamBlacklist
本程序适用于mediawiki 1.6及更高版本(详见软件包所附的README文件)。请按下述方法为mediawiki增加本功能
SpamBlacklist下载
首先,下载SpamBlacklist文件并上传到你的Mediawiki系统extensions/SpamBlacklist目录下(需要手动建立这个目录)。在SpamBlacklist目录下至少包括两个文件:
- SpamBlacklist.php
- SpamBlacklist_body.php
有时 如果安装后出现页面空白的情况,请下载所有相关文件,并上传即可。
下载资源:
- SpamBlacklist源代码:为方便起见,天下维客转贴了这份程序。
- SpamBlacklist最新版本:此处为SourceForge站上的程序发布窗口
- SpamBlacklist历史版本:如果需要早期SpamBlacklist以支持低版本mediawiki,请到这里寻找。从程序的完备性考虑,建议使用2006年之后的版本。
将SpamBlacklist加入系统
之后,在LocalSettings.php的后部增加下面一行:(如有疑问请参见LocalSettings的修改方法)
require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" );
无需其他操作,过滤器即可工作。($IP为localsettings中的一个变量,不必理会)
SpamBlacklist的网址黑名单操作
经过上述操作,SpamBlacklist插件已经可以工作。为了更方便使用和维护,本插件提供了三种黑名单的指定方式,可根据需要自行设置。
默认情况下,元维基的Blacklist页面(spam黑名单)将被下载并作为内容检查的依据。
出于方便管理和运行效率的考虑,天下维客站长建议大家:采用mediawiki站内文章方式建立黑名单。
恶意网址列表的指定方式
网址黑名单通过$wgSpamBlacklistFiles变量来指定。这是一个数组,取值可以是以下内容之一:URL(外站黑名单的网址) 或 文件名(服务器文件) 或 数据库位置(wiki页面)指定。分述如下:
- 方式一:网址方式指定外部网站Spam黑名单
- 外部公有资源,可分享其他网站的防范Spam的大量成果。这些资源将被10-15分钟抓取一次,作为最新的防范依据。本文后面的参考资料中给出了部分资源。
- 资源的更新通过插件中名为update的cron(定时自动执行)脚本来完成。如果你使用了memcached,则必须删除spam_blacklist_regexes key (比如,可以使用maintenance/mcc.php来完成)。
- 方式二:本站wiki页面方式
- 站内管理比较灵活,方便多个管理员同时维护。其指定格式为:"DB: <数据库名称> <文章名称>"。其中,<数据库名称>要与LocalSettings.php中的$wgDBname变量值完全一致。(数据库名称已经记录在LocalSettings.php中的$wgDBname变量中,可自行查找)
- 还有,你需要在wiki中建立用<文章名称>作为标题的页面,并编辑保存过滤规则文本。强烈建议保护该页面,以防止该列表被蓄意破坏。 (否则,在技术上有潜在危险,如:①通过输入一个匹配所有字串的表达式而导致网站无法编辑;②正则表达式片段还可能导致PCRE的Segmentation fault攻击手段)
- 方式三:放置在服务器上的黑名单文件
- 效率最高,但不方便维护
你可以选择其中一种或几种方式,指定多个方式时过滤规则会综合起来起作用。最常见的是单独采用使用站内wiki页面。
注意:一旦在LocalSettings.php指定了$wpSpamBlacklistFiles数组的内容,将不再执行默认获取元维基网址黑名单的动作(因为默认设置被覆盖)。因此,需要的话请在自己的设置中写上元维基的Blacklist页面(spam黑名单)资源。
示例:
require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" ); $wgSpamBlacklistFiles = array( "DB: wikidb allwiki:spam_blacklist", #站内页面指定 "$IP/extensions/SpamBlacklist/my_blacklist_file", #文件指定 "http://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1" #外部网址指定 );
在上面的例子中,网址黑名单将同时使用三个来源。一、名为allwiki:spam_blacklist的wiki页面被调用;二、网站服务器SpamBlacklist目录下一个名为my_blacklist_file的文件被调用;三、元维基的黑名单列表被调用。
再给出一个实例(www.allwiki.com的实际代码段):
require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" ); $wgSpamBlacklistFiles = array( "DB: **** allwiki:spam_blacklist", #站内页面指定。****为数据库名称,这里加了马赛克 );
黑名单的文本格式
请参考天下维客的黑名单列表。
简而言之:
正则表达式的形式如下:
!http://[a-z0-9\-.]*(line 1|line 2|line 3|....)!Si
关于正则表达式的部分说明:
- 不需要在网址名称之前增加写上www,扩展能够匹配所有的子域名字串
- 注意不要让匹配模式字串跑飞,例如包含".*"的字串
- 模式匹配符"^"和"$"并不是指网址的开始和结尾,而是指文章的开始/结尾。
实例:
#下面一行禁止网址中含有指定字串,域名、子目录名、文件名都将被检查。 huoluodai #下面一行禁止指定域名“dinmo.cn”,注意“\.”的用法。不必包含“http://”和“www.”字样 dinmo\.cn
网址白名单(Whitelist)
使用其他网站的黑名单时,有时需要放开其中某些不适切的封锁。因此,本扩展维护了一个白名单来完成这个目的。白名单通过对MediaWiki:Spam-whitelist信息的编辑来维护(在搜索框中输入“MediaWiki:Spam-whitelist”并回车即可编辑本页面。需要管理员权限。另外参见Special:Allmessages页面)。
如无需求,可忽略本操作。
性能、稳定性、版权等
这个扩展使用了一个小的"loader"文件,以避免每次页面浏览时加载所有代码。这意味着页面浏览性能不收任何影响,即便没有运行Turck MMCache之类的缓冲也没关系(当然,mediawiki系统强烈建议使用缓冲机制以提高效率)。
至于正则表达式的匹配,则会在页面保存时增加些微开销(经验数值在100ms量级)。但是,从磁盘/数据库加载spam文件,构建正则表达式,会有比较显著的开销,这根硬件环境也有关。如果打开这个扩展后显著降低了保存性能,请尝试安装MemCached或其他数据缓存措施,这样SpamBlacklist扩展将会缓存构建好的正则表达式。
Spamblacklist从2004年12月就开始在Wikimedia网站上运作,至今已有大量网站采用它,因此稳定性不存在什么问题。但同时,本设计极为简单,只对输入内容做了非常有限的规范性验证,因此,正则表达式错误或非标准设置可能导致不可预料的运行结果。
本扩展及文档由Tim Starling撰写,版权不详。参见程序文件的内部说明。
参考资料
- 可供利用的网址黑名单资源
- Meta-wiki Blacklist 元维基上维护的黑名单,被广泛采用(同时也很保守,以避免引起不适当的保护)。内容较长
- chongqed.org Blacklist 著名antispam网站 chongqed.org 维护的黑名单
- Wikia Blacklist 免费wiki hosting网站wikia.com所维护的黑名单
- WRT-Wiki Blacklist -- 一个小型黑名单,特点不详
- wiki spam相关网址
- ★★★★★ 天下维客的SpamBlacklist中文说明 本文
- ★★★★☆ Mediawiki的反spam特性 来自元维基(英文)
- ★★★★★ Mediawiki阻止Spam的方法 非常详实,包括多种方法(英文)
- SpamBlacklist的最新版README文件
- 元维基上spam名字空间下的所有文章列表
| MediaWiki扩展简明教程 | Inputbox帮助文档 | 使用Spam黑名单 | 内容折叠隐藏 | 动态文章列表 | 指定图片链接 |
| 代码高亮处理 | 预置初始编辑文本 | 页面访问限制 | 所见即所得编辑器 | QQ在线信息 | |
| 交流:扩展使用 | 投票与评分 | 内容随机展示 | wikitex | 改进设想 | ...更多 |
| 加入google地图和51地图标注功能 | Ajax五颗星评分插件 |



