Extension:TitleBlacklist(标题黑名单)
发行状态: 稳定版 |
|
|---|---|
| 实现 | 用户权限 , API |
| 描述 | 阻止建立符合正規表達式黑名單的頁面 |
| 作者 | Victor Vasiliev (VasilievVV 留言 ) |
| 最新版本 | 1.5.0 (持续更新) |
| 兼容性政策 | 快照跟随MediaWiki发布。 master分支不向后兼容。 |
| MediaWiki | 1.35+ |
| PHP | 7.0+ |
|
|
|
|
| 许可证 | GNU General Public License 2.0 or later |
| 下載 | |
| 前往translatewiki.net翻譯TitleBlacklist扩展 | |
| 問題 | 开启的任务 · 报告错误 |
标题黑名单扩展,可讓 wiki 管理員封鎖符合一個或多個正则表达式的頁面標題之建立、移動與上傳操作,同時亦可禁止建立符合該正規表達式之使用者名稱的帳戶。
安装
- 下载文件,并解压
TitleBlacklist文件夹到extensions/目录中。
开发者和代码贡献人员应改从Git安装此扩展,输入:cdextensions/ gitclonehttps://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist - 請新增下列代码到您的LocalSettings.php 文件的底部:
wfLoadExtension( 'TitleBlacklist' );
- 设置黑名單来源(见下文)
- Yes 完成 – 請导航至您的wiki上的
Special:Version,以验证此扩展已成功安装。
$wgGroupPermissions['sysop']['tboverride'] = false;。
配置
| Name | Default | Description |
|---|---|---|
$wgTitleBlacklistSources
|
[]
|
標題黑名單來源的陣列。
應該採用 array( 名稱 => 來源描述 ) 的格式。 |
$wgTitleBlacklistUsernameSources
|
'*'
|
設定可作為使用者名稱過濾器的來源。
「 |
$wgTitleBlacklistLogHits
|
false
|
如果為true,則在Special:Log/titleblacklist上記錄所有與黑名單匹配的本地帳戶建立嘗試。 請注意即使禁用此選項,具有titleblacklistlog權限的使用者群組仍可見到該日誌。
|
$wgTitleBlacklistCaching
|
[ "warningchance" => 100, "expiry" => 900, "warningexpiry" => 600 ] |
? |
$wgTitleBlacklistBlockAutoAccountCreation
|
true
|
也禁止與黑名單匹配的帳戶自動建立。 |
- 多个封鎖名單来源
標題封鎖名單可以從本地訊息以為的多個來源收集而來,要配置封鎖名單來源,請使用以下代碼:
wfLoadExtension( 'TitleBlacklist' ); $wgTitleBlacklistSources = [ [ 'type' => 'localpage', 'src' => 'MediaWiki:Titleblacklist' ], [ 'type' => 'url', 'src' => 'https://meta.wikimedia.org/w/index.php?title=Title_blacklist&action=raw' ], [ 'type' => 'file', 'src' => '/home/wikipedia/blacklists/titles', ] ];
参见T113864以获取详细信息
用法
封鎖名單
標題封鎖名單可在MediaWiki:Titleblacklist頁面找到。
該頁面由正規表達式組成,每個正規表達式單獨一行。 它们各自禁止创建标题与其匹配的页面。
每個entry還能包含一個或二個屬性。
属性列表必须包含在<>中,并使用|进行分隔。
可能的属性包括:
autoconfirmed– 允许自动确认用户 绕过限制casesensitive– 仅当字母大小写与entry完全匹配时才应用限制noedit– 同时禁止编辑已存在的匹配页面moveonly– 仅禁止将页面移动至匹配标题,允许普通页面创建newaccountonly– 仅禁止匹配账户创建,允许其他操作reupload– 允许上传与现有文件匹配的新版本errmsg=X– 当操作被阻止时,显示名为X的错误信息以替代标准提示
如果已安裝AntiSpoof 擴充功能,antispoof屬性可用於在根據規則檢查標題之前對標題進行規範化的處理。
例如:
Foo <autoconfirmed|noedit|errmsg=blacklisted-testpage> # 这个页面名称不被允许 [Bb]ar # 不应该有人创建关于它的条目 .*pandora.* # 这个单词不允许存在于页面名称的任何部分
这里所谓的正则表达式并非真正的正则表达式,而是嵌入固定模式中的子模式。例如上文的子模式Foo会生成类似/^Foo$/usi这样的正则表达式。
正则表达式中的下划线("_")将被扩展程序转换为空格,因为标题匹配的是其文本形式("页面标题"而非"页面_标题")。
白名单
MediaWiki:Titlewhitelist 处还设有一个白名单。
黑名单优先应用,随后再应用白名单。
与黑名单entry匹配的用户输入将被阻止,除非它与白名单中的entry相符。
要在白名单中使用,您无需在LocalSettings.php中进行任何配置。
上述黑名单中的部分可选属性同样适用于白名单,例如casesensitive。
自定义
- 警告消息
当创建页面的尝试因标题被列入黑名单而受阻时,系统会向用户显示警告信息。这一提示内容可通过以下在Mediawiki命名空间中定义的系统消息进行自定义:
- MediaWiki:Titleblacklist-forbidden-edit – 用于页面创建和编辑
- MediaWiki:Titleblacklist-forbidden-move – 用于页面移动,
- MediaWiki:Titleblacklist-forbidden-upload – 用于图片上传,
- MediaWiki:Titleblacklist-forbidden-new-account – 用于新账户。
自定义消息可通过errmsg属性进行定义。
範例:使用此扩展来限制新用户的创建
概念概览
新账户的用户名在此扩展中的处理方式与新条目不同。
此扩展会在用户于创建账户页面用户名栏输入的内容前自动添加"User:"(或其本地化等效词)。
因此,当此扩展程序根据您在MediaWiki:Titleblacklist或MediaWiki:Titlewhitelist中设置的正则表达式进行匹配时,它将匹配"用户:" + <用户输入>这一格式。
例如,假设你想将"jill"设为新用户的屏蔽词。 假设您有一个黑名单正则表达式"jill.* <newaccountonly>",而用户在创建账户页面输入的用户名是"jill"。 这将被"绕过",因为该扩展将进行的比较是在"jill.*"(正则表达式)与"User:jill"(构建的输入字符串)之间进行的。 二者不匹配,因此允许"jill"(这可能是您无意为之的)。 为实现预期的阻止效果,请在MediaWiki:Titleblacklist上使用如".*jill.* <newaccountonly>"或"User:jill.* <newaccountonly>"的正则表达式。
若欲阻止所有用户,仅允许符合正则表达式者,请在MediaWiki:Titleblacklist中阻止所有用户,并将允许的正则表达式写入MediaWiki:Titlewhitelist。
如何使用
若要在创建账户时强制所有用户名由两个单词组成,以空格分隔且每个单词首字母大写,请执行以下操作:
1. 安装TitleBlacklist.
2. 将以下内容添加至您的LocalSettings.php
wfLoadExtension( 'TitleBlacklist' ); $wgGroupPermissions['sysop']['tboverride'] = false; $wgTitleBlacklistSources = [ [ 'type' => 'localpage', 'src' => 'MediaWiki:Titleblacklist' ] ];
3. 在https://www.example.com/mywiki/MediaWiki:Titleblacklist中添加
# 阻止所有用户账户,仅允许与MediaWiki:Titlewhitelistregex匹配的账户。 .* <newaccountonly>
4. 在https://www.example.com/mywiki/MediaWiki:Titlewhitelist中添加
# 僅允許兩個名稱,其以空格做分隔、每個名稱首字母大寫,例如:「Fred Mew」可以、「Fred mew」不行、「Fredmew」不行。 # 取決於黑名單中的.* <newaccountonly> User:[A-Z][a-z]+\s[A-Z][a-z]+ <casesensitive>
5. 在https://www.example.com/mywiki/MediaWiki:Titleblacklist-forbidden-new-account edit中编辑
使用者名稱「2ドル」已被阻立建立。 它符合以下黑名單的entry:<code>1ドル</code>。 請使用真實姓名作為使用者名稱。使用者名稱需由兩個名字組成、中間以空格做分隔。每個名字的首字母皆須大寫。 例如: * "Mary Smith". 可以 * "MarySmith". 不行 * "Mary smith". 不行 * "marysmith". 不行
使用者名稱建立(及文章建立)的封鎖規則是由 MediaWiki:Titleblacklist 和 MediaWiki:Titlewhitelist 控制。 此訊息可在MediaWiki:Titleblacklist-forbidden-new-account之中自訂。
測試是否匹配
API模組 action=titleblacklist 可用於將標題與操作(例如編輯、建立、新帳戶)與黑名單進行比對測試。
擁有'tboverride'權限的使用者務必確認已有提供tbnooverride參數。
例如,如果黑名單包括有這個過濾器:
.*(.)1円{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # 不允許使用者名稱中有重複11個以上的字母
你可以使用類似以下的API請求:
| 结果 |
|---|
{ "titleblacklist":{ "result":"blacklisted", "reason":"<table class=\"plainlinks fmbox\nfmbox-system \" style=\"\" role=\"presentation\" dir=\"ltr\">\n<tr>\n<td class=\"mbox-image\">\n [[File:Imbox notice.png|40x40px|link=|alt=]]</td>\n<td class=\"mbox-text\" style=\"\"> The user name \"AAAAAAAAAAA\" [[Mediawiki talk:Titleblacklist|has been blocklisted]] from creation.</td>\n\n</tr>\n</table>", "message":"titleblacklist-forbidden-new-account-invalid", "line":".*(.)1円{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # Disallows eleven or more of the same character repeated in usernames" } } |
如果安裝了Scribunto ,TitleBlacklist可讓mw.ext.TitleBlacklist.test函數測試特定標題和操作是否会匹配黑名單中的entry。
如果找到了匹配的,會返回該匹配entry的詳細資料。
例如,如果黑名單包括這個過濾器:
.*(.)1円{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # 不允許使用者名稱中有重複11個以上的字母
運行這個函數:
mw.ext.TitleBlacklist.test("new-account","AAAAAAAAAAA")
會返回如下表,包括關於該匹配entry的詳細資料:
{ custommessage="titleblacklist-forbidden-new-account-invalid", message="titleblacklist-forbidden-new-account-invalid", params={ errmsg="titleblacklist-forbidden-new-account-invalid", newaccountonly=true }, raw=" .*(.)1円{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # 不允許使用者名稱中有重複11個以上的字母", regex=".*(.)1円{10}.*", version=3 }
清除缓存
黑名单的内容会被缓存。 由URL或服务器上的文件配置的黑名单的改变不会立即生效。 要强制清除缓存,编辑并保存页面MediaWiki:Titleblacklist(即使您并没有进行任何更改) 无论它是否是否按黑名单的形式配置。 请参阅includes/Hooks.php。
正則表達式相關的資源
- 正規表達式簡介
- 30分鐘正規表達式教學
- PHP:PCRE正則表達式語法, PHP所使用的正則表達式語法,因此本擴充模組亦採用此語法
參見
- Stable extensions/zh
- User rights extensions/zh
- API extensions/zh
- Extensions which add rights/zh
- MovePageCheckPermissions extensions/zh
- MultiContentSave extensions/zh
- PageSaveComplete extensions/zh
- ScribuntoExternalLibraries extensions/zh
- TitleGetEditNotices extensions/zh
- GetUserPermissionsErrorsExpensive extensions/zh
- GPL licensed extensions/zh
- Extensions in Wikimedia version control/zh
- All extensions/zh
- Pages using deprecated NoteTA template
- Extensions bundled with MediaWiki 1.21/zh
- Extensions used on Wikimedia/zh
- Extensions included in BlueSpice/zh
- Extensions included in Canasta/zh
- Extensions available as Debian packages/zh
- Extensions included in Fandom/zh
- Extensions included in Miraheze/zh
- Extensions included in MyWikis/zh
- Extensions included in ProWiki/zh
- Extensions included in semantic::core/zh
- Extensions included in ShoutWiki/zh
- Extensions included in Weird Gloop/zh
- Extensions included in wiki.gg/zh