Jump to content

Extension:TitleBlacklist(标题黑名单)

本頁使用了標題或全文手工轉換
From mediawiki.org
This page is a translated version of the page Extension:TitleBlacklist and the translation is 82% complete.
MediaWiki扩展手册
TitleBlacklist
发行状态: 稳定版
实现 用户权限 , API
描述 禁止建立與正規表達式黑名單匹配的頁面
作者 Victor Vasiliev (VasilievVV留言)
最新版本 1.5.0 (
持续更新)
兼容性政策 快照跟随MediaWiki发布。 master分支不向后兼容。
MediaWiki 1.35+
PHP 7.0+
许可协议 GNU通用公眾授權條款2.0或更新版本
下載
  • $wgTitleBlacklistLogHits
  • $wgTitleBlacklistUsernameSources
  • $wgTitleBlacklistCaching
  • $wgTitleBlacklistBlockAutoAccountCreation
  • $wgTitleBlacklistSources

  • tboverride
  • tboverride-account
  • titleblacklistlog
前往translatewiki.net翻譯TitleBlacklist扩展
問題 开启的任务 · 报告错误
一项重命名此扩展的提案已在T254650讨论。

使用标题黑名单扩展,维基管理员可以以若干条正则表达式的形式来设立一个标题黑名单。如果一个页面的标题与黑名单中的规则相匹配,用户将不能创建此页面、上传文件至此页面,或将其他页面移动至此页面。此外,该扩展程序还能设立用户名黑名单,阻止用户创建特定名称的新用户。

安装

此扩展随附于MediaWiki 1.21及更新版本,因此您無需下載它。 但其余的配置的指示仍须依循執行。
  • 下载文件,并解压TitleBlacklist文件夹到extensions/目录中。
    开发者和代码贡献人员应改从Git安装此扩展,输入:
    cd extensions/
    git clone https://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 '*' 設定可作為使用者名稱過濾器的來源。

*」為全部;false為停用全部。 如果要將其限制為特定的來源,請使用 array( 來源名稱1, 來源名稱2 )。 当您拥有共享账户创建系统时,这有助于避免黑名单碎片化问题。

$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命名空间中定义的系统消息进行自定义:

自定义消息可通过errmsg属性进行定义。

範例:使用此扩展来限制新用户的创建

概念概览

新账户的用户名在此扩展中的处理方式与新条目不同。 此扩展会在用户于创建账户页面用户名栏输入的内容前自动添加“User:”(或其本地化等效词)。 因此,当此扩展程序根据您在MediaWiki:TitleblacklistMediaWiki: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}.* &lt;newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid&gt; # 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

參見