Jump to content

ส่วนขยาย:AbuseFilter

From mediawiki.org
This page is a translated version of the page Extension:AbuseFilter and the translation is 85% complete.
Outdated translations are marked like this.
This extension comes with MediaWiki 1.38 and above. Thus you do not have to download it again. However, you still need to follow the other instructions provided.
MediaWiki extensions manual
AbuseFilter
Release status: stable
Implementation User activity , Special page , API
Description อนุญาตให้วางข้อจำกัดตามพฤติกรรมเฉพาะในกิจกรรมวิกิ
Author(s)
Compatibility policy Snapshots releases along with MediaWiki. Master is not backward compatible.
MediaWiki >= 1.43.0
Database changes Yes
Composer mediawiki/abuse-filter
Tables abuse_filter
abuse_filter_action
abuse_filter_history
abuse_filter_log
License GNU General Public License 2.0 or later
Download
  • $wgAbuseFilterConditionLimit
  • $wgAbuseFilterRangeBlockSize
  • $wgAbuseFilterAnonBlockDuration
  • $wgAbuseFilterLogIPMaxAge
  • $wgAbuseFilterCentralDB
  • $wgAbuseFilterDefaultWarningMessage
  • $wgAbuseFilterEmergencyDisableAge
  • $wgAbuseFilterEnableBlockedExternalDomain
  • $wgAbuseFilterActionRestrictions
  • $wgAbuseFilterActions
  • $wgAbuseFilterProtectedVariables
  • $wgAbuseFilterLogIP
  • $wgAbuseFilterPrivateDetailsForceReason
  • $wgAbuseFilterEmergencyDisableCount
  • $wgAbuseFilterLogPrivateDetailsAccess
  • $wgAbuseFilterSlowFilterRuntimeLimit
  • $wgAbuseFilterEmergencyDisableThreshold
  • $wgAbuseFilterLocallyDisabledGlobalActions
  • $wgAbuseFilterBlockDuration
  • $wgAbuseFilterDefaultDisallowMessage
  • $wgAbuseFilterValidGroups
  • $wgAbuseFilterNotificationsPrivate
  • $wgAbuseFilterBlockAutopromoteDuration
  • $wgAbuseFilterIsCentral
  • $wgAbuseFilterNotifications
  • abusefilter-modify
  • abusefilter-log-detail
  • abusefilter-view
  • abusefilter-log
  • abusefilter-privatedetails
  • abusefilter-privatedetails-log
  • abusefilter-modify-restricted
  • abusefilter-revert
  • abusefilter-view-private
  • abusefilter-log-private
  • abusefilter-hidden-log
  • abusefilter-hide-log
  • abusefilter-modify-global
  • abusefilter-modify-blocked-external-domains
  • abusefilter-bypass-blocked-external-domains
  • abusefilter-access-protected-vars
Quarterly downloads 135 (Ranked 41st)
Public wikis using 2,939 (Ranked 186th)
Translate the AbuseFilter extension if it is available at translatewiki.net
Issues Open tasks · Report a bug

AbuseFilter

2020 Coolest Tool
Award Winner

in the category
Quality


ส่วนขยาย AbuseFilter ช่วยให้ผู้ใช้ที่ได้รับสิทธิ์สามารถตั้งค่าการดำเนินการเฉพาะที่จะดำเนินการเมื่อการกระทำของผู้ใช้ เช่น การแก้ไข ตรงกับเกณฑ์ที่กำหนด

ตัวอย่างเช่น สามารถสร้างตัวกรองเพื่อป้องกันไม่ให้ผู้ใช้ที่ไม่ได้ลงทะเบียนเพิ่มลิงก์ภายนอก หรือเพื่อบล็อกผู้ใช้ที่ลบอักขระมากกว่า 2,000 ตัว

การติดตั้ง

  • ดาวน์โหลดและวางไฟล์ลงในไดเร็กทอรีที่ชื่อ AbuseFilter ในโฟลเดอร์ extensions/ ของคุณ
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter
  • เฉพาะเมื่อติดตั้งจาก Git รัน Composer เพื่อติดตั้ง PHP dependencies โดยการสร้าง composer install --no-dev ในไดเรคทอรีของส่วนขยาย (ดูที่ task T173141 สำหรับการขยายความ)
  • เพิ่มโค้ดต่อไปนี้ไว้ที่ด้านล่างของ LocalSettings.php ของคุณ:
    wfLoadExtension( 'AbuseFilter' );
    
  • รันสคริปต์อัปเดต เพื่อสร้างตารางฐานข้อมูลที่จำเป็นสำหรับส่วนขยายนี้
  • กำหนดค่าตามต้องการ
  • Yes สำเร็จ – ตรวจสอบที่ Special:Version บนวิกิของคุณเพื่อตรวจการติดตั้งส่วนขยาย
เมื่อติดตั้งจาก Git โปรดทราบว่าส่วนขยายนี้ต้องใช้ Composer

ดังนั้น หลังจากการติดตั้งจาก Git ให้เปลี่ยนเป็นไดเร็กทอรีที่มีส่วนขยาย เช่น "../extensions/AbuseFilter/" และรัน composer install --no-dev หรือเมื่ออัปเดต: composer update --no-dev

หรือควรเพิ่มบรรทัด "extensions/AbuseFilter/composer.json" ลงในไฟล์ "composer.local.json" ในไดเร็กทอรีรากของวิกิของคุณเช่น

{
	"extra": {
		"merge-plugin": {
			"include": [
				"extensions/AbuseFilter/composer.json"
			]
		}
	}
}

การกำหนดค่า

สิทธิผู้ใช้

เมื่อคุณติดตั้งส่วนขยายแล้ว คุณจะต้องตั้งค่าสิทธิ์ผู้ใช้ใน "LocalSettings.php"

User rights for AbuseFilter
สิทธิ คำอธิบาย Notes User groups that have this right by default
abusefilter-modify สร้างหรือดัดแปรตัวกรองการละเมิด Requires the abusefilter-view right sysop
abusefilter-view ดูตัวกรองการละเมิดกฎ *
abusefilter-log ดูปูมการละเมิดกฎ *
abusefilter-log-detail ดูหน่วยรายการบันทึกการละเมิดกฎแบบละเอียด Requires the abusefilter-log right sysop
abusefilter-privatedetails ดูข้อมูลส่วนตัวในรายการบันทึกการละเมิดกฎ Prior to 1.34 this right was named abusefilter-private - Requires the abusefilter-log-detail right
abusefilter-modify-restricted ปรับเปลี่ยนตัวกรองการละเมิดกฎด้วยการกระทำที่จำกัด Requires the abusefilter-modify right sysop
abusefilter-modify-global สร้างหรือปรับเปลี่ยนตัวกรองการละเมิดกฎข้ามโครงการ Requires the abusefilter-modify right
abusefilter-revert แปลงกลับการเปลี่ยนแปลงทั้งหมดโดยตัวกรองการละเมิดกฎที่กำหนด sysop
abusefilter-view-private ดูตัวกรองการละเมิดกฎที่ทำเครื่องหมายเป็นส่วนตัว Requires the abusefilter-view right (not needed if the group already has the abusefilter-modify right) sysop
abusefilter-log-private ดูหน่วยรายการบันทึกตัวกรองการละเมิดกฎที่ทำเครื่องหมายเป็นส่วนตัว Requires the abusefilter-log right (not needed if the group already has the abusefilter-modify or abusefilter-view-private rights) sysop
abusefilter-hide-log ซ่อนหน่วยในรายการบันทึกการละเมิดกฎ Requires the abusefilter-log right suppress
abusefilter-hidden-log ดูหน่วยรายการบันทึกการละเมิดกฎที่ถูกซ่อน Requires the abusefilter-log right suppress
abusefilter-privatedetails-log ดูรายการบันทึกการเข้าถึงรายละเอียดส่วนตัวของตัวกรองการละเมิดกฎ Prior to 1.34 this right was named abusefilter-private-log
abusefilter-modify-blocked-external-domains สร้างหรือแก้ไขโดเมนภายนอกที่จะบล็อกไม่ให้เชื่อมโยงมา sysop
abusefilter-bypass-blocked-external-domains เลี่ยงผ่านโดเมนภายนอกที่ถูกบล็อก Requires the edit right bot

ตัวอย่างเช่น การกำหนดค่าตัวอย่างต่อไปนี้จะอนุญาตให้ sysops ทำทุกอย่างที่ต้องการด้วย AbuseFilter และทุกคนสามารถดูบันทึกและดูการตั้งค่าตัวกรองสาธารณะ:

$wgGroupPermissions['sysop']['abusefilter-modify'] = true;
$wgGroupPermissions['*']['abusefilter-log-detail'] = true;
$wgGroupPermissions['*']['abusefilter-view'] = true;
$wgGroupPermissions['*']['abusefilter-log'] = true;
$wgGroupPermissions['sysop']['abusefilter-privatedetails'] = true;
$wgGroupPermissions['sysop']['abusefilter-modify-restricted'] = true;
$wgGroupPermissions['sysop']['abusefilter-revert'] = true;
ตัวกรองที่ทำเครื่องหมายว่าเป็นส่วนตัวเท่านั้นที่จะสามารถดูได้เฉพาะผู้ใช้ที่ได้รับอนุญาตจากการละเมิดตัวกรองแก้ไขหรือการละเมิดตัวกรองดูส่วนตัว

Parameters

ชื่อตัวแปร ค่าเริ่มต้น คำอธิบาย
$wgAbuseFilterActions
[
    'throttle' => true,
    'warn' => true,
    'disallow' => true,
    'blockautopromote' => true,
    'block' => true,
    'rangeblock' => false,
    'degroup' => false,
    'tag' => true
]
การดำเนินการที่เป็นไปได้ที่สามารถทำได้โดยตัวกรองการละเมิด เมื่อเพิ่มการกระทำใหม่ ให้ตรวจสอบว่ามีการจำกัดไว้ที่ $wgAbuseFilterActionRestrictions หรือไม่ และหากเป็นเช่นนั้น อย่าลืมเพิ่มสิทธิ์ที่ abusefilter-modify-restricted ให้กับกลุ่มผู้ใช้ที่เหมาะสม
$wgAbuseFilterConditionLimit
1000
จำนวนสูงสุดของ 'เงื่อนไข' ที่สามารถใช้ได้ในแต่ละครั้งที่เรียกใช้ตัวกรองกับการเปลี่ยนแปลง (ตัวกรองที่ซับซ้อนมากขึ้นจำเป็นต้องมี 'เงื่อนไข' มากกว่า)
$wgAbuseFilterValidGroups
[
    'default'
]
รายการตัวกรอง "กลุ่ม" สามารถแบ่งออกเป็น โดยค่าเริ่มต้นจะมีเพียงกลุ่มเดียวเท่านั้น ส่วนขยายอื่นๆ อาจเพิ่มกลุ่มอื่น ๆ
$wgAbuseFilterEmergencyDisableThreshold
[
    'default' => 0.05
]
ปิดการใช้งานตัวกรองหากตรงกับการแก้ไขมากกว่า 2 ครั้ง ซึ่งคิดเป็นมากกว่า 5 % ของการดำเนินการที่ถูกตรวจสอบกับกลุ่มของตัวกรองในช่วงเวลา "สังเกต" (สูงสุดหนึ่งวัน) เว้นแต่ว่าตัวกรองมีการเปลี่ยนแปลงในช่วง 86400 วินาทีที่ผ่านมา (วันหนึ่ง) ดู การควบคุมปริมาณฉุกเฉิน
$wgAbuseFilterEmergencyDisableCount
[
    'default' => 2
]
$wgAbuseFilterEmergencyDisableAge
[
    'default' => 86400
]
$wgAbuseFilterActionRestrictions
[
	"throttle" => false,
	"warn" => false,
	"disallow" => false,
	"blockautopromote" => true,
	"block" => true,
	"rangeblock" => true,
	"degroup" => true,
	"tag" => false
]
ผู้ใช้จะต้องมีสิทธิ์ผู้ใช้ "abusefilter-modify-restricted" เช่นเดียวกับ "abusefilter-modify" เพื่อสร้างหรือแก้ไขตัวกรองที่ดำเนินการเหล่านี้
$wgAbuseFilterNotifications
false
อนุญาตให้กำหนดค่าส่วนขยายเพื่อส่งการแจ้งเตือน Hit ไปที่ Special:RecentChanges หรือ UDP ตัวเลือกที่มี: rc, udp, rcandudp
หากต้องการส่งการเปลี่ยนแปลงตัวกรองการละเมิดเป็น Special:RecentChanges ให้ใช้ unset($wgLogRestrictions['abusefilter']);
$wgAbuseFilterNotificationsPrivate
false
เปิดใช้งานการแจ้งเตือนสำหรับตัวกรองส่วนตัว
$wgAbuseFilterCentralDB
null
MW 1.41+ ชื่อของฐานข้อมูลที่จะจัดเก็บตัวกรองการละเมิดทั่วโลก (รองรับเฉพาะในเวอร์ชันการพัฒนาล่าสุดเท่านั้น) ต้องติดตั้ง CentralAuth มิฉะนั้นตัวกรองส่วนกลางจะใช้งานไม่ได้ใน wikifarm
$wgAbuseFilterIsCentral
false
MW 1.41+ ตั้งค่าตัวแปรนี้เป็นจริงสำหรับวิกิที่จัดเก็บ AbuseFilters ส่วนกลางไว้ (รองรับเฉพาะในเวอร์ชันการพัฒนาล่าสุดเท่านั้น) ต้องติดตั้ง CentralAuth มิฉะนั้นตัวกรองส่วนกลางจะใช้งานไม่ได้ใน wikifarm
$wgAbuseFilterLocallyDisabledGlobalActions
[
	"throttle" => false,
	"warn" => false,
	"disallow" => false,
	"blockautopromote" => false,
	"block" => false,
	"rangeblock" => false,
	"degroup" => false,
	"tag" => false
]
ไม่อนุญาตให้ตัวกรองแบบรวมศูนย์ดำเนินการตามที่ตั้งค่าเป็นจริงในตัวแปรนี้
$wgAbuseFilterBlockDuration
'indefinite'
ระยะเวลาของการบล็อกที่สร้างโดย AbuseFilter
ตั้งแต่ 1.31.0-wmf.25 ระยะเวลาบล็อกอาจถูกระบุสำหรับทุกๆ ตัวกรอง และจะแทนที่ตัวแปรนี้ ตัวแปรนี้ใช้เมื่อเปิดใช้งานบล็อกเพื่อเลือกระยะเวลาเริ่มต้นล่วงหน้าเท่านั้น
$wgAbuseFilterAnonBlockDuration
null
ระยะเวลาของการบล็อกที่สร้างโดย AbuseFilter สำหรับผู้ใช้ที่ไม่ได้เข้าสู่ระบบ ระบบจะใช้ค่าของ $wgAbuseFilterBlockDuration หากไม่ได้ตั้งค่าไว้
ตั้งแต่ 1.31.0-wmf.25 ระยะเวลาบล็อกอาจถูกระบุสำหรับทุกๆ ตัวกรอง และจะแทนที่ตัวแปรนี้ ตัวแปรนี้ใช้เมื่อเปิดใช้งานบล็อกเพื่อเลือกระยะเวลาเริ่มต้นล่วงหน้าเท่านั้น
$wgAbuseFilterBlockAutopromoteDuration
5
ระยะเวลาเป็นวันที่การโปรโมตอัตโนมัติของผู้ใช้ถูกตัวกรองบล็อกไว้
$wgAbuseFilterDefaultWarningMessage
[
    'default' => 'abusefilter-warning'
]
ข้อความเตือนเริ่มต้น ตามกลุ่มตัวกรอง
$wgAbuseFilterDefaultDisallowMessage
[
    'default' => 'abusefilter-disallowed'
]
ข้อความไม่อนุญาตเริ่มต้น ตามกลุ่มตัวกรอง
$wgAbuseFilterLogIP
true
ว่าจะรวม IP ใน Abus_filter_log หรือไม่
$wgAbuseFilterLogIPMaxAge
3 * 30 * 24 * 3600
อายุที่ใช้เป็นจุดตัดเมื่อล้างข้อมูลบันทึก IP เก่า ค่าเริ่มต้นคือ 3 เดือน ใช้โดยสคริปต์การบำรุงรักษาล้าง OldLogIPData.php
$wgAbuseFilterProfileActionsCap
10000
จำนวนของการดำเนินการที่กำหนดว่าจะรีเซ็ตสถิติการทำโปรไฟล์เมื่อใด
$wgAbuseFilterLogPrivateDetailsAccess
false
การเข้าถึงข้อมูลส่วนตัวจากรายการบันทึกตัวกรองจะถูกบันทึกไว้หรือไม่
$wgAbuseFilterPrivateDetailsForceReason
false
ไม่ว่าผู้ใช้จะถูกบังคับให้ระบุเหตุผลในการเข้าถึงข้อมูลส่วนตัวจากรายการบันทึกตัวกรองหรือไม่
$wgAbuseFilterSlowFilterRuntimeLimit
500
รันไทม์เป็นมิลลิวินาทีก่อนที่ตัวกรองจะถือว่าช้า
$wgAbuseFilterRangeBlockSize
[
    'IPv4' => '16',
    'IPv6' => '19',
]
ขนาดของช่วงที่ถูกบล็อกโดยการกระทำ 'rangeblock'

การควบคุมปริมาณฉุกเฉิน

AbuseFilter มาพร้อมกับคุณสมบัติที่จะควบคุม (ปิดการใช้งาน) ตัวกรองที่ได้รับการแก้ไขเมื่อเร็ว ๆ นี้และตรงกับเกณฑ์ที่กำหนดของการดำเนินการล่าสุดโดยอัตโนมัติ

สิ่งนี้ทำเพื่อป้องกันการแก้ไขตัวกรองที่เป็นอันตรายเพื่อบล็อกผู้ใช้ทุกคนที่ดำเนินการบนวิกิหรือสิ่งที่คล้ายกัน

เงื่อนไขในการปิดใช้งานตัวกรองจะขึ้นอยู่กับตัวแปรเหล่านั้น:

  • $wgAbuseFilterEmergencyDisableThreshold - เปอร์เซ็นต์ของการจับคู่ต่อจำนวนการกระทำทั้งหมดในช่วงเวลาที่สังเกต
  • $wgAbuseFilterEmergencyDisableCount - จำนวนรายการที่ตรงกันของตัวกรองในช่วงเวลาที่สังเกต
  • $wgAbuseFilterEmergencyDisableAge - อายุของตัวกรองที่ต้องคำนึงถึง หากการแก้ไขตัวกรองครั้งล่าสุดเก่ากว่าจำนวนวินาทีนี้ ตัวกรองจะไม่ถูกควบคุม เว้นแต่จะถูกควบคุมแล้ว

ตัวกรองที่ควบคุมปริมาณสามารถระบุได้ในรายการตัวกรอง (พิเศษ: AbuseFilter) โดยมีสถานะ เปิดใช้งาน, อัตราการตรงกันสูง การควบคุมปริมาณจะเกิดขึ้นอย่างเงียบ ๆ และไม่มีทางรู้ได้ว่าตัวกรองถูกควบคุมเมื่อใด

เมื่อตัวกรองถูกควบคุมปริมาณ ตัวกรองจะไม่ดำเนินการที่เป็นอันตรายใดๆ (โดยปกติการดำเนินการจะจำกัดเฉพาะสิทธิ์พิเศษ เช่น การบล็อกผู้ใช้ หรือการลบตัวกรองออกจากกลุ่ม ซึ่งควบคุมโดย $wgAbuseFilterActionRestrictions) และอนุญาตเฉพาะการดำเนินการที่ "ปลอดภัย" เท่านั้น (ตัวกรองที่สามารถ ตักเตือนหรือระงับการดำเนินการต่อไป) ตัวกรองที่ถูกควบคุมไม่ได้เปิดใช้งานโดยอัตโนมัติ หากต้องการปิดใช้งานการควบคุมปริมาณ คุณต้องแก้ไขตัวกรอง โปรดทราบว่าคุณจำเป็นต้องเปลี่ยนแปลงบางอย่างจากตัวกรอง: การเปลี่ยนแปลงบางอย่างจากบันทึกของตัวกรองก็เพียงพอแล้ว

โปรดทราบว่าการแก้ไขตัวกรองจะอัปเดตอายุของตัวกรอง และอาจทำให้ปิดใช้งานได้หากถึงเงื่อนไขที่ต้องควบคุมอีกครั้งในช่วงเวลาสั้นๆ นับตั้งแต่การแก้ไขครั้งล่าสุด ซึ่งนำไปสู่ตัวกรองที่ใช้งานไม่ได้หากวิกิของคุณมีการแก้ไขที่ไม่เหมาะสมมากกว่าการแก้ไขที่ถูกต้อง

การสร้างและการจัดการตัวกรอง

เมื่อติดตั้งส่วนขยายแล้ว คุณจะสามารถสร้าง/ทดสอบ/เปลี่ยนแปลง/ลบตัวกรองได้ และสามารถเข้าถึงบันทึกได้จากหน้าการจัดการตัวกรองการละเมิด Special:AbuseFilter

API

AbuseFilter เพิ่มโมดูลรายการ API สองโมดูล โมดูลหนึ่งสำหรับรายละเอียดของตัวกรองการละเมิด ("abusefilters") และอีกโมดูลสำหรับบันทึกการละเมิด เนื่องจากแยกจากบันทึก MediaWiki อื่นๆ ("abuselog") ไม่สามารถสร้างหรือแก้ไขตัวกรองการละเมิดโดยใช้ API ได้

list = abusefilters

รายการข้อมูลเกี่ยวกับตัวกรอง

พารามิเตอร์
  • abfstartid - รหัสตัวกรองที่จะเริ่มต้นแจกแจง
  • abfendid - รหัสตัวกรองที่จะหยุดแจงนับ
  • abfdir - ทิศทางในการแจกแจง (เก่ากว่า ใหม่กว่า)
  • abfshow - แสดงเฉพาะตัวกรองที่ตรงตามเกณฑ์เหล่านี้ (enabled|!enabled|deleted|!deleted|private|!private)
  • abflimit - จำนวนตัวกรองสูงสุดที่จะแสดงรายการ
  • abfprop - คุณสมบัติใดที่จะได้รับ (id|คำอธิบาย|รูปแบบ|การกระทำ|การเข้าชม|ความคิดเห็น|lasteditor|เวลาแก้ไขล่าสุด|สถานะ|ส่วนตัว)

เมื่อตัวกรองเป็นแบบส่วนตัว คุณสมบัติบางอย่างที่ระบุด้วย abfprop จะหายไป เว้นแต่คุณจะมีสิทธิ์ผู้ใช้ที่เหมาะสม

ตัวอย่าง
แสดงรายการตัวกรองการละเมิดที่ไม่ใช่ส่วนตัว
ผล
{
    "batchcomplete": "",
    "continue": {
        "abfstartid": 18,
        "continue": "-||"
    },
    "query": {
        "abusefilters": [
            {
                "id": 1,
                "hits": 41430
            },
            {
                "id": 3,
                "hits": 957485
            },
            {
                "id": 5,
                "hits": 5931
            },
            {
                "id": 6,
                "hits": 19
            },
            {
                "id": 8,
                "hits": 7
            },
            {
                "id": 9,
                "hits": 41354
            },
            {
                "id": 11,
                "hits": 132971
            },
            {
                "id": 12,
                "hits": 139693
            },
            {
                "id": 14,
                "hits": 63
            },
            {
                "id": 15,
                "hits": 15
            }
        ]
    }
}

list = abuselog

แสดงรายการอินสแตนซ์ที่การดำเนินการทำให้เกิดตัวกรองการละเมิด

พารามิเตอร์
  • aflstart - การประทับเวลาเพื่อเริ่มนับ
  • aflend - การประทับเวลาที่จะหยุดแจงนับที่
  • afldir - ทิศทางในการแจกแจง (เก่ากว่า ใหม่กว่า)
  • afluser - แสดงเฉพาะรายการที่ผู้ใช้หรือที่อยู่ IP พยายามดำเนินการเท่านั้น
  • afltitle - แสดงเฉพาะรายการที่การดำเนินการเกี่ยวข้องกับเพจที่กำหนด
  • aflfilter - แสดงเฉพาะรายการที่ทริกเกอร์รหัสตัวกรองที่กำหนด
  • afllimit - จำนวนรายการสูงสุดที่จะแสดงรายการ
  • aflprop - คุณสมบัติใดที่จะได้รับ: (ids|filter|user|ip|title|action|details|result|timestamp|hidden|revid|wiki)
ตัวอย่าง
แสดงรายการอินสแตนซ์ที่มีการทริกเกอร์ตัวกรองการละเมิดเพื่อตอบสนองต่อการกระทำจากผู้ใช้ "SineBot"
ผล
{
    "batchcomplete": "",
    "continue": {
        "aflstart": "2018-03-06T02:34:18Z",
        "continue": "-||"
    },
    "query": {
        "abuselog": [
            {
                "id": 27219261,
                "filter_id": "1073"
            },
            {
                "id": 26938051,
                "filter_id": ""
            },
            {
                "id": 23388942,
                "filter_id": "1"
            },
            {
                "id": 22044912,
                "filter_id": ""
            },
            {
                "id": 22032235,
                "filter_id": ""
            },
            {
                "id": 22032196,
                "filter_id": ""
            },
            {
                "id": 21983882,
                "filter_id": ""
            },
            {
                "id": 20594818,
                "filter_id": "904"
            },
            {
                "id": 20593489,
                "filter_id": "904"
            },
            {
                "id": 20590442,
                "filter_id": "904"
            }
        ]
    }
}

ข้อบกพร่องที่อาจเกิด

  • ผู้ใช้บางรายอาจพบว่าการสร้างตัวกรองใหม่หรือการแก้ไขตัวกรองเก่าล้มเหลว และผู้ใช้เพิ่งถูกเปลี่ยนเส้นทางไปยังหน้าเดิม หาก Wiki ใช้ใบรับรอง SSL ข้อผิดพลาดนี้อาจเป็นเพราะค่า $wgServer ซึ่งอาจใช้ "http://" แทน "https://" ข้อบ่งชี้ของข้อผิดพลาดนี้คือเบราว์เซอร์ให้คำเตือน https สำหรับ Special:AbuseFilter เพจ (Topic:T23dyyih0ofjada5)

บูรณาการกับส่วนขยายอื่น ๆ

คุณสามารถรวม AbuseFilter เข้ากับส่วนขยายอื่น ๆ ได้หลายวิธี

การเพิ่มตัวแปรสำหรับการกรอง

คุณสามารถเพิ่มตัวแปรใหม่เพื่อใช้ในตัวกรองการละเมิดได้ รายการตัวอย่าง is available หากต้องการทำเช่นนั้น คุณควร:

  • เพิ่มตัวจัดการสำหรับตะขอ AbuseFilter-builder ในการเพิ่มตัวแปร คุณควรใช้ $builder['vars']['variable_name'] = 'i18n-key'; โดยที่ variable_name คือชื่อของตัวแปร และ i18n-key คือส่วนของคีย์ i18n คีย์เต็มจะเป็น abusefilter-edit-builder-vars-{$your_key}
  • เพิ่มข้อความ i18n ที่คุณเลือกที่จุดก่อนหน้า
  • เลือกตัวจัดการ hook ที่จะคำนวณตัวแปร คุณสามารถ: ขึ้นอยู่กับกรณีการใช้งานของคุณ
    • ใช้ตะขอ AbuseFilter-generateTitleVars นี่เป็นแนวคิดเฉพาะสำหรับตัวแปรที่เกี่ยวข้องกับหน้า
    • ใช้ตะขอ AbuseFilter-generateUserVars นี่เป็นแนวคิดเฉพาะสำหรับตัวแปรที่เกี่ยวข้องกับผู้ใช้
    • ใช้ตะขอ AbuseFilter-generateGenericVars นี่สำหรับตัวแปรที่ไม่ได้ผูกกับเพจหรือผู้ใช้เฉพาะ
    • ใช้ตะขอ AbuseFilterAlterVariables สิ่งนี้มีความยืดหยุ่นมากกว่า hooks อื่นๆ เล็กน้อย แต่ก็มีข้อเสีย: ตัวแปรของคุณจะไม่สามารถใช้งานได้เมื่อตรวจสอบรายการการเปลี่ยนแปลงล่าสุดที่ผ่านมา หากคุณต้องการใช้คุณลักษณะนั้น (และแนะนำให้ทำเช่นนั้น) คุณควรใช้หนึ่งใน hooks ที่แสดงไว้ด้านบน และใช้พารามิเตอร์ที่สาม ($RCRow)
  • ภายใน hook handler มีสองวิธีในการเพิ่มตัวแปร:
    • วิธี "โดยตรง" คือการเรียก $vars->setVar( 'var_name', var_value ); วิธีนี้เหมาะอย่างยิ่งเมื่อคำนวณค่าได้ง่ายและรวดเร็วเท่านั้น โดยค่าดังกล่าวจะถูกคำนวณแม้ว่าจะไม่มีตัวกรองที่ใช้งานอยู่ก็ตาม
    • วิธี "ขี้เกียจ" กำลังเรียก $vars->setLazyLoadVar( 'var_name', 'method_name', $params ); ในที่นี้ "method_name" คือตัวระบุ (ไม่ซ้ำกัน) ที่จะใช้ในการคำนวณตัวแปร (ขอแนะนำให้ใส่ชื่อส่วนขยายนำหน้าด้วย) หากต้องการลงทะเบียนเมธอด คุณควรเพิ่มตัวจัดการสำหรับ AbuseFilter-computeVariable hook ในนั้น คุณควรตรวจสอบว่า $method ที่ส่งผ่านตรงกับ 'method_name' ของคุณหรือไม่ และหากเป็นเช่นนั้น ให้คำนวณตัวแปร สุดท้าย $params คืออาร์เรย์ของพารามิเตอร์ที่คุณต้องใช้ในการคำนวณตัวแปร สิ่งเหล่านี้จะถูกส่งผ่านไปยังตัวจัดการ hook computeVariable สำหรับตัวอย่างนี้ คุณสามารถตรวจสอบ global_user_groups ของ CentralAuth

การเพิ่มการกระทำที่กำหนดเอง

คุณสามารถเพิ่มตัวจัดการการดำเนินการแบบกำหนดเองได้ เพื่อให้แต่ละตัวกรองสามารถดำเนินการเพิ่มเติมได้ ในการทำเช่นนั้น คุณต้องเลือกชื่อสำหรับการกระทำ ('my-action' จากนี้ไป) จากนั้น:

  • สร้างคลาสชื่อ เช่น MyAction ซึ่งควรขยาย \MediaWiki\Extension\AbuseFilter\Consequence ซึ่งสามารถใช้ HookAborterConsequence หรือ ConsequencesDisablerConsequence ได้
  • เพิ่มสมาชิกให้กับตะขอ AbuseFilterCustomActions; ผู้สมัครสมาชิกควรจัดให้มีการโทรกลับตามที่ระบุไว้ในเอกสารประกอบของ hook ซึ่งจะส่งคืนอินสแตนซ์ของคลาสที่สร้างขึ้นด้านบน เช่น:
class MyAction extends \MediaWiki\Extension\AbuseFilter\Consequence {
    public function run() {
        throw new \Exception( 'Write me' );
    }
}
public function onAbuseFilterCustomActions( &$actions ) {
    $actions[] = function ( \MediaWiki\Extension\AbuseFilter\Consequence\Parameters $params, array $rawParams ) : MyConsequence {
        return new MyAction( $params, $rawParams );
    };
}

จากนั้นคุณควรเพิ่มข้อความ i18n ต่อไปนี้ คุณสามารถแทนที่ 'my_action' ด้วยเช่น 'block' เพื่อดูว่าข้อความมีไว้เพื่ออะไร:

  • 'abusefilter-edit-action-${my_action}'
  • 'abusefilter-action-${my_action}'

การเพิ่มกลุ่มกฎ

คุณยังสามารถเพิ่มกลุ่มกฎเพิ่มเติม ซึ่งสามารถใช้เพื่อจัดกลุ่มตัวกรองการละเมิดที่มีอยู่ได้ โปรดทราบว่าในขณะนี้ แต่ละตัวกรองสามารถอยู่ในกลุ่มเดียวเท่านั้น (T116642) Currently, the only known consumer of this feature is Extension:StructuredDiscussions . หากต้องการทำเช่นนั้น คุณควร:

  • เพิ่มชื่อกลุ่มต่อท้าย $wgAbuseFilterValidGroups
  • เพิ่มโค้ดเพื่อเรียกใช้ตัวกรองกับกลุ่มของคุณ โปรดทราบว่า AbuseFilter จะไม่ทำอย่างนั้นด้วยตัวเอง เพื่อทำเช่นนั้น คุณควรสร้างวัตถุ AbuseFilterRunner โดยส่งผ่านชื่อกลุ่มของคุณ

ดูเพิ่ม