Open main menu
English  • Deutsch • русский • 中文
This extension comes with MediaWiki 1.18 and above. Thus you do not have to download it again. However, you still need to follow the other instructions provided.
Справка по расширениям MediaWiki
OOjs UI icon advanced.svg
ConfirmEdit
Статус релиза: стабильный
MediaWiki Extension ConfirmEdit.png
Реализация Page action
Описание Добавляет CAPTCHA при сохранении страниц и других действиях участника
Автор(ы) Brion Vibber and others
Последняя версия 1.6.0 (Continous updates)
MediaWiki 1.25+
PHP 5.5.9+
Изменения БД Нет
Лицензия GNU General Public License 2.0 or later
Загрузка
Параметры
  • $wgCaptchaWhitelistIP
  • $wgCaptcha
  • $wgCaptchaClass
  • $wgCaptchaTriggers
  • $wgCaptchaTriggersOnNamespace
  • $wgCaptchaStorageClass
  • $wgCaptchaSessionExpiration
  • $wgCaptchaBadLoginExpiration
  • $wgCaptchaBadLoginPerUserExpiration
  • $ceAllowConfirmedEmail
  • $wgCaptchaBadLoginAttempts
  • $wgCaptchaBadLoginPerUserAttempts
  • $wgCaptchaWhitelist
  • $wgCaptchaRegexes
Добавленные права
skipcaptcha
Использованные hook'и
EditPageBeforeEditButtons
EmailUserForm
EmailUser
PageContentSaveComplete
EditPage::showEditForm:fields
EditFilterMergedContent
APIGetAllowedParams
TitleReadWhitelist
AlternateEditPreview
Переведите расширение ConfirmEdit если оно доступно на translatewiki.net
Проверьте использование и версию.
Vagrant role confirmedit
Проблемы Открытые задачи · Сообщить об ошибке

Расширение ConfirmEdit позволяет вам использовать различные техники CAPTCHA, позволяющие защитить вики-проект от спам-ботов и других автоматических инструментов редактирования, а также автоматизированных попыток подбора пароля к логину.

ConfirmEdit поставляется с несколькими технологиями/модулями генерации капчи.

Модуль Описание Effectiveness at stopping spam
SimpleCaptcha участники должны решить простую математическую задачку. Low
FancyCaptcha участники должны определить несколько стилизованных символов Low
MathCaptcha участники должны решить простую математическую задачу, которая показывается как изображение Low
QuestyCaptcha участники должны ответить на вопрос, список которых устанавливает администратор Very high, until cracked
ReCaptcha участники должны определить последовательность символов, либо визуально, либо на слух, с виджета, использующего сервис "reCAPTCHA". Low
ReCaptcha NoCaptcha Users are presented with a JavaScript-based check of humanity. If the check is failed, a puzzle is presented. High

Некоторые из этих модулей требуют дополнительных установочных работ:

  • Для модуля MathCaptcha требуется предустановленное приложение TeX и для версий MediaWiki выше 1.17, -- наличие установленного приложения Math;
  • FancyCaptcha requires running a preliminary setup script in Python;
  • Модуль reCAPTCHA требует получения специальных API ключей (кодовых строк, которые используются как пароли для опознавания того, кто вызывает приложение - так как reCAPTCHA это сторонний продукт, сейчас принадлежащий Google)

Будьте осторожны: использование модулей CAPTCHA снижает доступность и причиняет неудобства живым участникам. Кроме того, эти решения не обеспечивают 100% эффективности против ботов, и не защитят ваш вики-проект от спамеров, которые готовы и способны использовать человеческий труд, чтобы преодолеть CAPTCHA. Вы можете захотеть использовать ConfirmEdit в сочетании с другими функциями защиты от спама. Вне зависимости от используемого вами решения, в случае общедоступно-редактируемого вики-проекта важно продолжать отслеживать страницу «Свежих правок».

Contents

УстановкаEdit

Для установки ConfirmEdit требуется MediaWiki версии 1.11.0 или выше и PHP5 (но версии на SVN до 21970, совместимой с PHP4).

  • Загрузите последнюю версию и сохраните ее на вашем компьютере.
  • Создайте папку в папке "extensions" с названием ConfirmEdit
  • Переместите загруженные файлы в папку extensions/ConfirmEdit/
  • Отредактируйте файл LocalSettings.php , который находится в корневой папке вашей MediaWiki , и добавьте следующую строку ближе к концу:
require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );

Примечание: ConfirmEdit может не работать, если используется с версиями MediaWiki отличными от тех, которые указываются при загрузке приложения.

Типы CAPTCHAEdit

В приложении используются несколько типов CAPTCHA.

ReCaptcha (NoCaptcha)Edit

Модуль "ReCaptchaNoCaptcha" был представлен в версии 1.26 MediaWiki; вы не можете использовать его в более ранних версиях ConfirmEdit и MediaWiki. Новое поколение ReCaptcha, называемое "NoCaptcha", было введено Google еще в декабре 2014 года [1] и уменьшает для людей сложность в решении CAPTCHA. Основываясь на пользовательском JavaScript (который не может "управляться" пользователем администратором), reCaptcha пытается идентифицировать пользователя сайта как человека, анализируя его поведение при просмотре страницы. Затем пользователь должен щелкнуть флажок "Я не робот" и (в идеальном случае) не должен ничего делать, чтобы доказать, что он человек. Однако, в некоторых случаях пользователю все равно приходится решать задачу: находить на картинках автомобили, витрины, светофоры, автобусы, велосипеды, пожарные гидранты и так далее.

Этот модуль реализует новое решение ReCaptcha NoCaptcha в ConfirmEdit. Вам все еще нужны открытый и секретный ключи (которые вы можете получить на странице ReCaptcha Google admin panel – выбирайте версию v2, потому что v3 в ConfirmEdit не работает) и в файле LocalSettings.php пропишите:

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/ReCaptchaNoCaptcha' ]);
$wgCaptchaClass = 'ReCaptchaNoCaptcha';
$wgReCaptchaSiteKey = 'открытый ключ';
$wgReCaptchaSecretKey = 'секретный ключ';

Существует дополнительная опция конфигурации для этого модуля, $wgReCaptchaSendRemoteIP (по умолчанию: false), который, если установлено значение true, отправляет IP-адрес текущего пользователя на сервер из Google при проверке Капчи. Вы можете улучшить конфиденциальность для ваших пользователей, если поставите значение "false". Однако, помните, что этот модуль добавляет клиентский JavaScript-код, непосредственно загруженный с сервера от Google, который уже может собирать IP-адрес пользователя (в сочетании с другими данными тоже) и может не быть ограничен этой опцией конфигурации.

И ещё: ReCaptcha (NoCaptcha) будет работать только на стандартном редакторе MediaWiki. Не работает в VisualEditor.

QuestyCaptchaEdit

Этот модуль представляет вопрос, а пользователь вводит ответ. Вы предоставляете вопросы в конфигурации. Этот модуль доказал надежность его механизма против спам-ботов, он также должен иметь преимущество за счет большей доступности, поскольку текстовые вопросы можно прочитать с помощью программного обеспечения для перевода текста в речь, позволяющего пользователям с ослабленным зрением (но не ботам) ответить правильно.

Добавьте нижеследующее для подключения этой CAPTCHA:

require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
require_once( "$IP/extensions/ConfirmEdit/QuestyCaptcha.php");
$wgCaptchaClass = 'QuestyCaptcha';
$arr = array (
        "A question?" => "An answer!",
        "What is this wiki's name?" => "$wgSitename",
        'Please write the magic secret, "passion", here:' => 'passion',
        'Type the code word, 567, here:' => '567',
        'Which animal? <img src="http://www.example.com/path/to/filename_not_including_dog.jpg" alt="" title="" />' => 'dog',
);
foreach ( $arr as $key => $value ) {
        $wgCaptchaQuestions[] = array( 'question' => $key, 'answer' => $value );
}

Вопрос будет случайным образом выбираться из заданных. Минимальное количество - один. Просто поменяйте эти вопросы, когда/если они начнут доказывать свою неэффективность; этого  может никогда не произойти, если ваша вики специально не выбрана целью.

Вы можете поступить еще остроумнее, с вопросами вроде «Что будет на выходе "date -u +%V`uname`|sha256sum|sed 's/\W//g'"?».

AsirraEdit

This module displays the Asirra (Animal Species Image Recognition for Restricting Access) widget, created by Microsoft Research. The widget shows 12 random images from the Petfinder pet-adoption website, all of which are of either a cat or a dog, and asks the user to select only the images of cats.

Image recognition is an inherently more difficult task for computers than character recognition; and the use of Petfinder's massive, and ever-changing, database of millions of images makes it seemingly impossible for spammers to attempt to beat the system via some shortcut. It should be noted, though, that some research exists showing that image-recognition software can beat Asirra at least 10% of the time. Still, Asirra may possibly be the most secure of the modules within ConfirmEdit. Or at least it was until late 2012, when it seemed that spammers might be starting to crack it.

Note: in order to use Asirra, you will need to download the latest/trunk version of ConfirmEdit.

Add the following to LocalSettings.php to enable this CAPTCHA:

require_once("$IP/extensions/ConfirmEdit/Asirra.php");
$wgCaptchaClass = 'Asirra';

In addition, you can add any of the following configuration parameters:

  • $wgAsirraEnlargedPosition: Can be one of top, bottom, left, right. Defaults to bottom.
  • $wgAsirraCellsPerRow: Number of images per row. Defaults to 6.
  • $wgAsirraScriptPath: If your extensions directory is outside the document root, or not accessible for any reason, you can set an alternative path to this module's JavaScript scripts here.

ReCaptchaEdit

 
Example screenshot of ReCaptcha

Этот модуль использует виджет и сервис "reCAPTCHA". Дополнительно к услуге CAPTCHA, он помогает оцифровать старые книги (подробнее о сервисе читайте здесь.)

Для использования этого модуля сперва перейдите по этой ссылке here и получите публичный и личный ключ для своей вики, который позволит серверу сервиса идентифицировать обращения.

Добавьте следующий фрагмент кода в файл LocalSettings.php, ниже кода включения ConfirmEdit:

// Use this line ONLY if your MediaWiki version is 1.25 or newer:
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/ReCaptcha' ]);

// Use these two lines ONLY if your MediaWiki version is older than 1.25:
require_once "$IP/extensions/ConfirmEdit/ConfirmEdit.php";
require_once "$IP/extensions/ConfirmEdit/ReCaptcha.php";

$wgCaptchaClass = 'ReCaptcha';
$wgReCaptchaPublicKey = 'your public key here';
$wgReCaptchaPrivateKey = 'your private key here';
  • Recaptcha установлена в комплекте только с версией ConfirmEdit 1.18. Более ранние версии не имеют php-файла ReCaptcha в составе.
  • Unfortunately, as of 2011, some spammers appear to have figured out a way to bypass it, either through character recognition or by using humans. For that reason, it is not necessarily recommended.
  • Part of the weakness of the ReCaptcha module is that ConfirmEdit doesn't include any penalty mechanism, so spam bots can simply keep trying to bypass the CAPTCHA until they get through. This is an issue that is strongly worth addressing in some way.
  • ReCaptcha creates a partial dependence on user-side JavaScript, as well as a requirement for sound or graphics. It also localises poorly in most less-often used languages.
  • Regardless of its strengths or weaknesses, reCAPTCHA can't be implemented on Wikimedia wikis because it produces a third-party dependency.

ReCaptcha (NoCaptcha)Edit

The ReCaptchaNoCaptcha module was introduced in the MediaWiki release 1.26; you can't use it in older versions of ConfirmEdit and MediaWiki.

The new generation of ReCaptcha, called NoCaptcha, was introduced by Google back in December 2014[2] and reduces the need for humans to solve a CAPTCHA. Based on a user-side JavaScript (which can't be controlled by the user the administrator), reCaptcha tries to identify the site user as a human by analyzing their browsing behavior on the page. The user then has to click an "I'm not a robot" checkbox and (in the best case) doesn't have to do anything further to prove they're a human. However, in some cases, the user still has to solve a CAPTCHA image.

This module implements the new ReCaptcha NoCaptcha solution in ConfirmEdit. You still need a public and a secret key (which you can retrieve from the ReCaptcha admin panel – change v2, v3 not work) and install the plugin with:

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/ReCaptchaNoCaptcha' ]);
$wgCaptchaClass = 'ReCaptchaNoCaptcha';
$wgReCaptchaSiteKey = 'your public/site key here';
$wgReCaptchaSecretKey = 'your private key here';

There is an additional configuration option for this module, $wgReCaptchaSendRemoteIP (default: false), which, if set to true, sends the IP address of the current user to a server from Google while verifying the CAPTCHA. You can improve the privacy for your users if you keep this set to "false". However, remember, that this module adds a client side JavaScript code, directly loaded from a server from Google, which already can collect the IP address of the user (combined with other data, too) and can not be limited by a configuration option. This will only work on standard MediaWiki editor. If you plan to use VisualEditor forget about this new and better No Captcha solution from Google.

SimpleCaptcha (вычисление)Edit

  Внимание: Следующие типы используются очень немногими вики за пределами WMF, вероятно, из-за их недостаточной эффективности.
 
Простой математический вопрос

Эта CAPTCHA используется как основная в приложении. Она генерирует простой математический вопрос (сложение или вычитание), на который требуется ответить пользователю.

Добавьте следующие строки в файл LocalSettings.php в корневой папке вашей MediaWiki, чтобы сделать возможным использование этой капчи:

$wgCaptchaClass = 'SimpleCaptcha';

Обратите внимание, что отображение тривиальной задачи по математике в виде текста приводит к CAPCHA, которую можно легко решить с помощью автоматизированных средств; по состоянию на 2012 год, сайты, использующие SimpleCaptcha, получают значительное количество спама и много автоматических регистраций ложных новых учетных записей. Вики, в настоящее время использующим это значение по умолчанию, следует перейти на VisualMathCaptcha или одну из других CAPTCHA.

FancyCaptchaEdit

  Внимание: This type is used by very few wikis outside WMF if any, probably because of scarce effectiveness.

This module displays a stylized image of a set of characters. The Python Imaging Library must be installed in order to create the set of images initially, but isn't needed after that (can be installed with pip install pil in most environments).

  1. Add the following lines to LocalSettings.php in the root of your MediaWiki installation:
    MediaWiki version is 1.25 or newer:
    wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/FancyCaptcha' ]);
    $wgCaptchaClass = 'FancyCaptcha';
    MediaWiki version is older than 1.25:
    require_once "$IP/extensions/ConfirmEdit/ConfirmEdit.php";
    require_once "$IP/extensions/ConfirmEdit/FancyCaptcha.php";
    $wgCaptchaClass = 'FancyCaptcha';
  2. In LocalSettings.php, set the variable $wgCaptchaDirectory to the directory where you will store Captcha images. Below it set $wgCaptchaSecret to your passphrase.
  3. Create the images by running the following, where:
    • font is a path to some font, for instance AriBlk.TTF.
    • wordlist is a path to some word list, for instance /usr/share/dict/words. (Note: on Debian/Ubuntu, the 'wbritish' and 'wamerican' packages provide such lists. On Fedora, use the 'words' package).
    • key is the the exact passphrase you set $wgCaptchaSecret to. Use quotes if necessary.
    • output is the path to where the images should be stored (defined in $wgCaptchaDirectory).
    • count is how many images to generate.
    python /path/to/captcha.py --font=<font> --wordlist=<wordlist> --key=<key> --output=<output> --count=<count>
    • An example, assuming you're in the extensions/ConfirmEdit directory (font location from Ubuntu 6.06, probably different on other operating systems):
    python captcha.py --font=/usr/share/fonts/truetype/freefont/FreeSans.ttf --wordlist=/usr/share/dict/words --key=FOO --output=../../../captcha --count=100
    • If you are not satisfied with the results of the words you've generated you can simply remove the images and create a new set. Comic_Sans_MS_Bold.ttf seems to generate relatively legible words, and you could also edit the last line of captcha.py to increase the font size from the default of 40.
  4. Put the images you get into captcha directory in your installation
  5. Edit your wiki's LocalSettings.php : specify full path to your captcha directory in $wgCaptchaDirectory and secret key you've been using while generating captures in $wgCaptchaSecret
$wgCaptchaDirectory = "/.php-data/my-wiki.org/wiki/captcha";
$wgCaptchaDirectoryLevels = 0; // Set this to a value greater than zero to break the images into subdirectories
$wgCaptchaSecret = "FOO"; // same value you used in --key option in captcha.py

See also wikitech:Generating CAPTCHAs for how Wikimedia Foundation does it.

How to avoid common problems running Python
  1. Install the most recent version of Python Imaging Library (PIL).
  2. Make the installation of Python on a short folder name. Like C:\Python\
  3. Create a folder like C:\Ex and place files CAPTCHA.py / FONT.ttf / LIST.txt into the folder.
  4. To execute easily, run the following example as a batch file:
C:\python\python.exe C:\Ex\CAPTCHA.py --font C:\Ex\FONT.ttf --wordlist C:\Ex\LIST.txt --key=YOURPASSWORD --output C:\Ex\ --count=20

MathCaptchaEdit

  Внимание: This type is used by very few wikis outside WMF if any, probably because of scarce effectiveness.
This requires the Math extension to be installed. See also Extension:Math

This module generates an image using TeX to ask a basic math question.

Set the following to enable this CAPTCHA:

// Use this line ONLY if your MediaWiki version is 1.25 or newer:
wfLoadExtension( 'ConfirmEdit/MathCaptcha' );
// Use this line ONLY if your MediaWiki version is older than 1.25:
require_once "$IP/extensions/ConfirmEdit/MathCaptcha.php";
$wgCaptchaClass = 'MathCaptcha';

See the readme file in the math folder to install this captcha.

ConfigurationEdit

ConfirmEdit introduces a 'skipcaptcha' permission type to wgGroupPermissions. This lets you set certain groups to never see CAPTCHAs. All of the following can be added to localsettings.php.

Defaults from ConfirmEdit.php:

$wgGroupPermissions['*'            ]['skipcaptcha'] = false;
$wgGroupPermissions['user'         ]['skipcaptcha'] = false;
$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false;
$wgGroupPermissions['bot'          ]['skipcaptcha'] = true; // registered bots
$wgGroupPermissions['sysop'        ]['skipcaptcha'] = true;

To skip captchas for users that confirmed their email, you need to set both:

$wgGroupPermissions['emailconfirmed']['skipcaptcha'] = true;
$ceAllowConfirmedEmail = true;

There are five "triggers" on which CAPTCHAs can be displayed:

  • 'edit' - triggered on every attempted page save
  • 'create' - triggered on page creation
  • 'addurl' - triggered on a page save that would add one or more URLs to the page
  • 'createaccount' - triggered on creation of a new account
  • 'badlogin' - triggered on the next login attempt after a failed one. Requires $wgMainCacheType to be set to something other than CACHE_NONE in your LocalSettings.php, if in doubt the following will always work. Note that badlogin does not trigger captchas on API login, but instead blocks them outright until $wgCaptchaBadLoginExpiration expires.
$wgMainCacheType = CACHE_ANYTHING;

The default values for these are:

$wgCaptchaTriggers['edit']          = false; 
$wgCaptchaTriggers['create']        = false; 
$wgCaptchaTriggers['addurl']        = true; 
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin']      = true;

The triggers edit, create and addurl can be configured per namespace using the $wgCaptchaTriggersOnNamespace setting. If there is no $wgCaptchaTriggersOnNamespace for the current namespace, the normal $wgCaptchaTriggers apply. So suppose that in addition to the above $wgCaptchaTriggers defaults we configure the following:

$wgCaptchaTriggersOnNamespace[NS_TALK]['addurl'] = false;
$wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true;

Then the CAPTCHA will not trigger when adding URLs to a talk page, but on the other hand user will need to solve a CAPTCHA any time they try to edit a page in the project namespace, even if they aren't adding a link.

URL and IP whitelistsEdit

It is possible to define a whitelist of known "good" sites for which the CAPTCHA should not kick in, when the 'addurl' action is triggered.

Sysop users can do this by editing the system message page called [[MediaWiki:Captcha-addurl-whitelist]]. The expected format is a set of regex's one per line. Comments can be added with # prefix. You can see an example of this usage on OpenStreetMap.

This set of whitelist regexes can also be defined using the $wgCaptchaWhitelist config variable in LocalSettings.php, to keep the value(s) a secret.

Some other variables you can add to LocalSettings.php:

  • $wgCaptchaWhitelistIP - List of IP ranges to allow to skip the CAPTCHA (you can also use [[MediaWiki:Captcha-ip-whitelist]]; see below for details).
  • $ceAllowConfirmedEmail - Allow users who have confirmed their e-mail addresses to post URL links

These are described more thoroughly in the code comments

[[MediaWiki:Captcha-ip-whitelist]] can be used to change the whitelisted IP addresses and IP ranges on wiki. They should be separated by newlines. If any other character (apart from a valid IP address or range) is found on a line, it will be ignored but leading and trailing whitespace characters are allowed. For example, a line with only 127.0.0.1 is considered valid but #127.0.0.1 will be ignored.

Regular expressionsEdit

The global variable wgCaptchaRegexes accepts an array of regexes to be tested against the page text and will trigger the CAPTCHA in case of a match.

Wikimedia approachEdit

For example, Wikimedia Foundation wikis use FancyCaptcha with a custom set of images and the default configuration, modified by what follows.

$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = true;

This means only unregistered and newly registered users have to pass the CAPTCHA.

EmergencyCaptcha modeEdit

Additionally the shortcut named $wmgEmergencyCaptcha is designed for use in a limited number of emergency situations, for instance in case of massive vandalism or spam attacks: it changes the default trigger values (see above) into the following:

$wgCaptchaTriggers['edit']          = true; 
$wgCaptchaTriggers['create']        = true;

So all anonymous and new users have to solve a CAPTCHA also before being able to save an edit or create a new page, in addition to the normal situation.

Rate-LimitingEdit

With Gerrit change 182551, ConfirmEdit supports rate limiting for false CAPTCHA. For more information about $wgRateLimits and how to set it up, read the manual, the action key is badcaptcha.

AuthorsEdit

The basic framework was designed largely by Brion Vibber, who also wrote the SimpleCaptcha and FancyCaptcha modules. The MathCaptcha module was written by Rob Church. The QuestyCaptcha module was written by Benjamin Lees. The reCAPTCHA module was written by Mike Crawford and Ben Maurer. Additional maintenance work was done by Yaron Koren.

ReferencesEdit

См. такжеEdit