امتداد:تأكيد_التعديل
![]() حالة الإصدار مستقر |
|
---|---|
![]() |
|
تنفيذ | تصرف خاصة بالصفحة |
بيان | يضيف حروف تحقق «كابتشا» لحالات حفظ الصفحات وكذلك تصرفات مستخدمين أخرى |
المؤلف/المؤلفون |
|
آخر إصدار | 1.6.0 (تحديثات مستمرة) |
سياسة التوافق | تصدر اللقطات البرمجية مع ميدياويكي. الإصدار الرئيسي لا يتوافق مع الإصدارات السابقة. |
MediaWiki | 1.31+ |
PHP | 5.5.9+ |
ترخيص | رخصة جنو العمومية 2.0 أو ما بعدها |
التنزيل | |
|
|
تنزيلات ربع سنوية | 290 (Ranked 35th) |
استخدام مواقع الويكي العمومية | 951 (Ranked 263rd) |
ترجم الامتداد ConfirmEdit لو كان متوفرا على translatewiki.net | |
دور فاغرانت | confirmedit |
المسائل | المهام المفتوحة · الإبلاغ عن عطل تقني |
يسمح امتداد ConfirmEdit لك باستخدام عدة أساليب كابتشا كي تحاول منع بوتات النشر المزعج والأدوات الآلية الأخرى من تعديل موقعك الويكي وكذلك إحباط محاولات تسجيل الدخول الآلية التي تحاول تخمين كلمات المرور.
يحتوي امتداد ConfirmEdit على عدد من الأساليب أو الوحدات المستخدمة في توليد حروف التحقق.
وحدة برمجية | الوصف | مستوى الفعالية في وقف النشر المزعج |
---|---|---|
SimpleCaptcha |
يتعين عليك حل مسألة حسابية بسيطة. | منخفض |
FancyCaptcha |
يتعين على المستخدمين تحديد مجموعة من المحارف المعروضة بأسلوب مختلف عن المألوف. | منخفض |
MathCaptcha |
يتعين على المستخدمين حل مسألة حسابية معروضة في هيئة صورة. | منخفض |
QuestyCaptcha |
يتعين على المستخدمين الإجابة عن سؤال من بين مجموعة من الأسئلة يحددها الإداريين. | مرتفع للغاية، إلى أن ينجح أحدهم في إيجاد ثغرة فيه |
ReCaptcha NoCaptcha
|
يعرض على المستخدمين أسلوب تحقق من أن المستخدم بشري يستند إلى جافا سكريبت. لو فشلت عملية التحقق، يعرض على المستخدم أحجية. | متوسط إلى منخفض |
hCaptcha
|
مشابه لأداة ReCaptcha، إلا أنه حسب شهادة البعض أفضل كفاءة من ReCaptcha بفضل different approach to accessibility-friendly كابتشا التي يحتوي عليها. | غير معلوم |
بعض من هذه الوحدات البرمجية يتطلب أعمال تنصيب إضافية:
- يتطلب MathCaptcha وجود كلا من TeX وفي بعض إصدارات ميدياويكي بعد إصدار 1.17، امتداد Math ؛
- يتطلب FancyCaptcha تشغيل نص برمجي مبدئي للتثبيت في Python.
العيوب
ينتج عن CAPTCHAs تقليل سهولة الوصول وتتسبب في حدوث منغصات للمستخدمين من البشر.
هذه الأساليب أيضا ليست فعالة 100% في مواجهة البوتات كما أنها لن تحمي موقعك الويكي من الناشرين المزعجين الذين لا يتحرجون من بذل الجهد بأنفسهم لتخطي CAPTCHAs. قد ترغب في الاستعانة بامتداد ConfirmEdit مع سمات مكافحة النشر المزعج الأخرى. بغض النظر عن الحل البرمجي الذي تستخدمه، لو كان لديك موقع ويكي متاح للعامة تعديله من الأهمية بمكان متابعة صفحة «أحدث التغييرات» متابعة مستمرة.
التثبيت
- نزّل الملف/الملفات وضعها في دليل يحمل اسم
ConfirmEdit
داخل مجلد extensions/
لديك. - أضف الكود التالي في الجزء الأسفل من ملف
LocalSettings.php
:wfLoadExtension( 'ConfirmEdit' );
- تنشيط نوع CAPTCHA الذي يجب استخدامه
- الضبط حسب الحاجة
- تم التنفيذ – اذهب إلى Special:Version على موقع الويكي لديك كي تتحقق من أن الامتداد قد ثبت بنجاح.
تنصيب Vagrant:
- لو كنت تستخدم Vagrant ، ثبته مستخدما
vagrant roles enable confirmedit --provision
أنواع كابتشا
توجد أنواع كابتشا متعددة ومختلفة مشمولة في امتداد تأكيد التعديل.
QuestyCaptcha
هذه الوحدة البرمجية تطرح سؤال على المستخدم وعليه أن يجب عن السؤال. يجب عليك أن تحدد الأسئلة أثناء ضبط الامتداد. This module has proven to offer a strong mechanism against spambots; it also should have the advantage of a better accessibility, as textual questions can be read by text-to-speech software allowing visually impaired users (but not bots) to answer correctly.
Add the following to LocalSettings.php
to enable this CAPTCHA, editing the Q&A:
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/QuestyCaptcha' ]);
// Add your questions in LocalSettings.php using this format:
$wgCaptchaQuestions = [
'What is the capital of France?' => 'Paris',
'What is the capital of Spain' => 'MADRID', // Answers are case insensitive
'What is the name of this wiki?' => $wgSitename, // You can use variables
'How many fingers does a hand have?' => [ 5, 'five' ], // A question may have many answers
];
You can also configure ConfirmEdit's triggers and other options. If the Captcha does not appear, add the following below the extension code.
By setting any individual option to true
, the Captcha will be triggered when performing the named action. Otherwise, you can write false
to disable Captcha for this action.
$wgMainCacheType = CACHE_ANYTHING;
$wgCaptchaTriggers['edit'] = true;
$wgCaptchaTriggers['create'] = true;
$wgCaptchaTriggers['createtalk'] = true;
$wgCaptchaTriggers['addurl'] = true;
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin'] = true;
It will randomly choose a question from those supplied.
The minimum is one.
- QuestyCaptcha is case-insensitive. If the answer is "Paris" and the user writes "paris", or if the answer is "paris" and the user writes "Paris", it will still work.
- If the answer has a special character like "ó", you may write an answer with "ó" and another without, just in case. For example, if the answer is "canción" you can use
[ 'cancion', 'canción' ]
in case the user writes "cancion". - The answer must be easy to guess for a human interested in your wiki, but not by an automatic program. Ideally, it should not be contained in the text of the question; you can try and edit the captcha help messages and provide the solution to the captcha response there.[1]
- Just change the questions when/if they start proving ineffective; this may never happen if your wiki is not specifically targeted.
- Don't ever reuse questions already used by you or others in the past: spambots are known to remember a question and its answer forever once they broke it.
- You can even dynamically generate questy captchas in the configuration. DO NOT use an exact copy of the dynamic questions from the link, they've been cracked by spammers. However, other dynamic questions in the style of the questions presented are highly effective.
ReCaptcha (NoCaptcha)
The new generation of ReCaptcha, called NoCaptcha, was introduced by Google back in December 2014 and reduces the need for humans to solve a CAPTCHA.[2]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' ]);
$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.
reCAPTCHA v3
Currently there is no official way to implement version 3 of Google reCAPTCHA but if you want to test it on your wiki you can choose to try the following patches or you can test the Miraheze extension: RecaptchaNoCaptcha V3 extension
SimpleCaptcha (calculation)
This is the default CAPTCHA.
This module provides a simple addition or subtraction question for the user.
Add the following lines to LocalSettings.php
in the root of your MediaWiki to enable this CAPTCHA:
$wgCaptchaClass = 'SimpleCaptcha';
Note that the display of a trivial maths problem as plaintext yields a captcha which can be trivially solved by automated means; as of 2012, sites using SimpleCaptcha are receiving significant amounts of spam and many automated registrations of spurious new accounts. Wikis currently using this as the default should therefore migrate to one of the other CAPTCHAs.
FancyCaptcha
This module displays a stylized image of a set of characters.
Pillow must be installed in order to create the set of images initially, but isn't needed after that (can be installed with pip install Pillow
in most environments).
- Add the following lines to
LocalSettings.php
in the root of your MediaWiki installation:wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/FancyCaptcha' ]);
$wgCaptchaClass = 'FancyCaptcha';
- In
LocalSettings.php
, set the variable$wgCaptchaDirectory
to the directory where you will store Captcha images. Below it set$wgCaptchaSecret
to your passphrase. - 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 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.
- Put the images you get into
captcha
directory in your installation. - 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; // <span lang="en" dir="ltr" class="mw-content-ltr">Set this to a value greater than zero to break the images into subdirectories</span>
$wgCaptchaSecret = "FOO"; // <span lang="en" dir="ltr" class="mw-content-ltr">Same value you used in --key option in captcha.py</span>
See also wikitech:Generating CAPTCHAs for how Wikimedia Foundation does it.
- How to avoid common problems running Python on Windows
- Install the most recent version of Pillow.
- Make the installation of Python on a short folder name, like C:\Python\
- Create a folder like C:\Ex and place files CAPTCHA.py / FONT.ttf / LIST.txt into the folder.
- 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
MathCaptcha
This module generates an image using TeX to ask a basic math question.
Set the following to enable this CAPTCHA:
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/MathCaptcha' ]);
See the README
file in the math folder to install this captcha.
hCaptcha
إصدار ميدياويكي: | ≥ 1.35 |
The configuration is similar to ReCaptcha:
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/hCaptcha' ]);
$wgHCaptchaSiteKey = 'your public/site key here';
$wgHCaptchaSecretKey = 'your private key here';
$wgHCaptchaSendRemoteIP
is also available.
الإعداد
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;
$wgAllowConfirmedEmail = 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 yourLocalSettings.php
, if in doubt the following will always work. Note thatbadlogin
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.
القوائم البيضاء لمعرفات الموارد الموحدة وعناوين الآيبي
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.
التعبيرات العادية
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.
سبيل ويكيميديا
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 mode
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-limiting
With Gerrit change 182551, ConfirmEdit supports rate limiting for false CAPTCHA.
For more information about $wgRateLimits and how to set it up, read Manual:$wgRateLimits , the action key is badcaptcha
.
المؤلفون
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.
Additional maintenance work was done by Yaron Koren.
المراجع
- ↑ MediaWiki:Questycaptchahelp-text, MediaWiki:Questycaptcha-edit, MediaWiki:Questycaptcha-addurl, MediaWiki:Questycaptcha-create, MediaWiki:Questycaptcha-createaccount
- ↑ Google Blog Are you a robot? Introducing “No CAPTCHA reCAPTCHA” ()
انظر أيضا
- Anti-spam features
- Extension:ConfirmAccount
- Extension:InviteSignup
- Extension:SpamRegex
- Manual:$wgSpamRegex
هذا الامتداد يستخدم على واحد من مشاريع ويكيميديا أو أكثر من واحد. يعني هذا الأمر أن الامتداد مستقر ويعمل/تعمل جيدا بما فيه الكفاية ليستخدم/لتستخدم في مواقع تتمتع بمستوى زيارات مرتفع مثل هذه. ابحث عن اسم هذا الامتداد في ملفات الضبط CommonSettings.php وكذلك InitialiseSettings.php كي ترى أين تنصب. توجد قائمة كاملة بالامتدادات المنصبة على موقع ويكي بعينه على صفحة Special:Version الخاصة بموقع الويكي. |
هذا الامتداد مشمول في الحزم أو مزارع الويكي التالية أو كليهما: هذه ليست قائمة كاملة. بعض مزارع الويكي أو مستضيفين الويكي قد تحتوي على extension حتى لو كانت غير مدرجة في هذه القائمة. راجع دائمًا مزارع الويكي أو مستضيفين الويكي أو حزمتك كي تتأكد من الأمر. |