Jump to content
MediaWiki

Extension:TitleBlacklist(标题黑名单)

本頁使用了標題或全文手工轉換
From mediawiki.org
This page is a translated version of the page Extension:TitleBlacklist and the translation is 100% complete.
MediaWiki扩展手册
TitleBlacklist
发行状态: 稳定版
实现 用户权限 , API
描述 阻止建立符合正規表達式黑名單的頁面
作者 Victor Vasiliev (VasilievVV 留言 )
最新版本 1.5.0 (持续更新)
兼容性政策 快照跟随MediaWiki发布。 master分支不向后兼容。
MediaWiki 1.35+
PHP 7.0+
  • $wgTitleBlacklistLogHits
  • $wgTitleBlacklistUsernameSources
  • $wgTitleBlacklistCaching
  • $wgTitleBlacklistBlockAutoAccountCreation
  • $wgTitleBlacklistSources
  • tboverride
  • tboverride-account
  • titleblacklistlog
许可证 GNU General Public License 2.0 or later
下載
前往translatewiki.net翻譯TitleBlacklist扩展
問題 开启的任务 · 报告错误
一项重命名此扩展的提案已在T254650讨论。

标题黑名单扩展,可讓 wiki 管理員封鎖符合一個或多個正则表达式的頁面標題之建立、移動與上傳操作,同時亦可禁止建立符合該正規表達式之使用者名稱的帳戶。

安装

此扩展随附于MediaWiki 1.21及更新版本,因此您無需下載它。 但其余的配置的指示仍须依循執行。
  • 下载文件,并解压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 '*' 設定可作為使用者名稱過濾器的來源。

*」為全部;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頁面找到。

該頁面由正規表達式組成,每個正規表達式單獨一行。 它们各自禁止创建标题与其匹配的页面。

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

自定义消息可通过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中添加

# 僅允許兩個名稱,其以空格做分隔、每個名稱首字母大寫,例如:「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:TitleblacklistMediaWiki: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}.* &lt;newaccountonly|errmsg=titleblacklist-forbidden-new-account-invalid&gt; # 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

正則表達式相關的資源

參見

此扩展用于一个或多个维基媒体项目。 这可能意味着扩展足够稳定、运作足够良好,可以用在这样的高流量的网站上。 请在维基媒体的CommonSettings.phpInitialiseSettings.php配置文件中查找此扩展的名称以查看哪些网站安装了该扩展。 特定wiki上的已安装的扩展的完整列表位于Special:Version页面。
此扩展在以下wiki农场/托管网站和/或软件包中提供:

AltStyle によって変換されたページ (->オリジナル) /