Extension:TitleBlacklist(标题黑名单)
发行状态: 稳定版 |
|
|---|---|
| 实现 | 用户权限, API |
| 描述 | 禁止建立與正規表達式黑名單匹配的頁面 |
| 作者 | Victor Vasiliev (VasilievVV留言) |
| 最新版本 | 1.5.0 ( |
| 兼容性政策 | 快照跟随MediaWiki发布。 master分支不向后兼容。 |
| MediaWiki | 1.35+ |
| PHP | 7.0+ |
| 许可协议 | GNU通用公眾授權條款2.0或更新版本 |
| 下載 | |
|
|
|
|
|
| 前往translatewiki.net翻譯TitleBlacklist扩展 | |
| 問題 | 开启的任务 · 报告错误 |
使用标题黑名单扩展,维基管理员可以以若干条正则表达式的形式来设立一个标题黑名单。如果一个页面的标题与黑名单中的规则相匹配,用户将不能创建此页面、上传文件至此页面,或将其他页面移动至此页面。此外,该扩展程序还能设立用户名黑名单,阻止用户创建特定名称的新用户。
安装
- 下载文件,并解压
TitleBlacklist文件夹到extensions/目录中。
开发者和代码贡献人员应改从Git安装此扩展,输入:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist
- 請新增下列代码到您的LocalSettings.php文件的底部:
wfLoadExtension( 'TitleBlacklist' );
- 设置封鎖名單来源(见下文)
完成 – 請导航至您的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頁面找到。
該頁面由正規表達式組成,每個正規表達式單獨一行。 它们各自禁止创建标题与其匹配的页面。
每個項目還能包含一個或二個屬性。
属性列表必须包含在<>中,并使用|进行分隔。
可能的属性包括:
autoconfirmed- 允许自动确认用户绕过限制casesensitive- 仅当字母大小写与条目完全匹配时才应用限制noedit- 同时禁止编辑已存在的匹配页面moveonly- 仅禁止将页面移动至匹配标题,允许普通页面创建newaccountonly- 仅禁止匹配账户创建,允许其他操作reupload- 允许上传与现有文件匹配的新版本errmsg=X- 当操作被阻止时,显示名为X的错误信息以替代标准提示
如果已安裝AntiSpoof擴充功能,antispoof屬性可用於在根據規則檢查標題之前對標題進行規範化的處理。
例如:
Foo <autoconfirmed|noedit|errmsg=blacklisted-testpage> # 这个页面名称不被允许 [Bb]ar # 不应该有人创建关于它的条目 .*pandora.* # 这个单词不允许存在于页面名称的任何部分
这里所谓的正则表达式并非真正的正则表达式,而是嵌入固定模式中的子模式。例如上文的子模式Foo会生成类似/^Foo$/usi这样的正则表达式。
正则表达式中的下划线("_")将被扩展程序转换为空格,因为标题匹配的是其文本形式("页面标题"而非"页面_标题")。
白名单
MediaWiki:Titlewhitelist 处还设有一个白名单。
黑名单优先应用,随后再应用白名单。
与黑名单条目匹配的用户输入将被阻止,除非它与白名单中的条目相符。
要在白名单中使用,您无需在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中添加
# Only allow two names, separated by a space, with each name capitalized, e.g. "Fred Mew" OK, "Fred mew" fails, "Fredmew" fails.
# Depends on .* <newaccountonly> in blacklist
User:[A-Z][a-z]+\s[A-Z][a-z]+ <casesensitive>
5. 在https://www.example.com/mywiki/MediaWiki:Titleblacklist-forbidden-new-account edit中编辑
The user name "$2" has been blocked from creation. It matches the following blacklist entry: <code>$1</code>. Please use a real name for the user name. User names need to be comprised of two names separated by a space. Each name must be capitalized. E.g.: * "Mary Smith". OK. * "MarySmith". Invalid. * "Mary smith". Invalid. * "marysmith". Invalid.
User name creation (and article creation) blocking rules are controlled by MediaWiki:Titleblacklist and MediaWiki:Titlewhitelist. This message can be customized at MediaWiki:Titleblacklist-forbidden-new-account.
測試是否匹配
The API module action=titleblacklist can be used to test a title and action (e.g. edit, create, new-account) against the blacklist.
Users with the 'tboverride' right should be sure to supply the tbnooverride parameter.
For example, if the blacklist contained the filter:
.*(.)\1{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # Disallows eleven or more of the same character repeated in usernames
you could use an API request like
| 结果 |
|---|
{
"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,这个擴充功能允许使用mw.ext.TitleBlacklist.test函數測試特定標題和操作是否会匹配封鎖名單中的項目。
如果找到了匹配的,會返回該匹配項目的詳細資料。
例如,如果封鎖名單包括這個過濾器:
.*(.)\1{10}.* <newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid> # 不允許使用者名稱中重複11個或更多相同字母
運行這個函數:
mw.ext.TitleBlacklist.test("new-account", "AAAAAAAAAAA")
會返回如下表,包括關於該匹配項目的詳細資料:
{
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。
Resources on regular expressions
- Brief Introduction to Regular Expressions
- The 30 Minute Regular Expression Tutorial
- PHP: PCRE regex syntax, the syntax of regular expressions used by PHP and therefore this extension
參見
| 此扩展用于一个或多个维基媒体项目。 这可能意味着扩展足够稳定、运作足够良好,可以用在这样的高流量的网站上。 请在维基媒体的CommonSettings.php和InitialiseSettings.php配置文件中查找此扩展的名称以查看哪些网站安装了该扩展。 特定wiki上的已安装的扩展的完整列表位于Special:Version页面。 |
| 此扩展在以下wiki农场/托管网站和/或软件包中提供: |
- Stable extensions/zh
- User rights extensions/zh
- API extensions/zh
- Pages using deprecated NoteTA template
- GPL licensed extensions/zh
- Extensions in Wikimedia version control/zh
- Extensions which add rights/zh
- EditFilter extensions/zh
- MovePageCheckPermissions extensions/zh
- PageSaveComplete extensions/zh
- ScribuntoExternalLibraries extensions/zh
- TitleGetEditNotices extensions/zh
- GetUserPermissionsErrorsExpensive extensions/zh
- All extensions/zh
- 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 wiki.gg/zh
