ส่วนขยาย:AbuseFilter
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. |
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 | |
|
|
|
|
|
|
|
|
Quarterly downloads | 126 (Ranked 44th) |
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 ช่วยให้ผู้ใช้ที่ได้รับสิทธิ์สามารถตั้งค่าการดำเนินการเฉพาะที่จะดำเนินการเมื่อการกระทำของผู้ใช้ เช่น การแก้ไข ตรงกับเกณฑ์ที่กำหนด
ตัวอย่างเช่น สามารถสร้างตัวกรองเพื่อป้องกันไม่ให้ผู้ใช้ที่ไม่ได้ลงทะเบียนเพิ่มลิงก์ภายนอก หรือเพื่อบล็อกผู้ใช้ที่ลบอักขระมากกว่า 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' );
- รันสคริปต์อัปเดต เพื่อสร้างตารางฐานข้อมูลที่จำเป็นสำหรับส่วนขยายนี้
- กำหนดค่าตามต้องการ
- สำเร็จ – ตรวจสอบที่ Special:Version บนวิกิของคุณเพื่อตรวจการติดตั้งส่วนขยาย
ดังนั้น หลังจากการติดตั้งจาก 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"
สิทธิ | คำอธิบาย | Notes | User groups that have this right by default | Versions |
---|---|---|---|---|
abusefilter-modify | สร้างหรือดัดแปรตัวกรองการละเมิด | Requires the abusefilter-view right
|
sysop | 1.19+ |
abusefilter-view | ดูตัวกรองการละเมิดกฎ | * | 1.19+ | |
abusefilter-log | ดูปูมการละเมิดกฎ | * | 1.19+ | |
abusefilter-log-detail | ดูหน่วยรายการบันทึกการละเมิดกฎแบบละเอียด | Requires the abusefilter-log right
|
sysop | 1.19+ |
abusefilter-privatedetails | ดูข้อมูลส่วนตัวในรายการบันทึกการละเมิดกฎ | Prior to 1.34 this right was named abusefilter-private - Requires the abusefilter-log-detail right
|
— | 1.19+ |
abusefilter-modify-restricted | ปรับเปลี่ยนตัวกรองการละเมิดกฎด้วยการกระทำที่จำกัด | Requires the abusefilter-modify right
|
sysop | 1.19+ |
abusefilter-revert | แปลงกลับการเปลี่ยนแปลงทั้งหมดโดยตัวกรองการละเมิดกฎที่กำหนด | sysop | 1.19+ | |
abusefilter-view-private | ดูตัวกรองการละเมิดกฎที่ทำเครื่องหมายเป็นส่วนตัว | Requires the abusefilter-view right (not needed if the group already has the abusefilter-modify right)
|
sysop | 1.19+ |
abusefilter-hide-log | ซ่อนหน่วยในรายการบันทึกการละเมิดกฎ | Requires the abusefilter-log right
|
suppress | 1.19+ |
abusefilter-hidden-log | ดูหน่วยรายการบันทึกการละเมิดกฎที่ถูกซ่อน | Requires the abusefilter-log right
|
suppress | 1.19+ |
abusefilter-log-private | ดูหน่วยรายการบันทึกตัวกรองการละเมิดกฎที่ทำเครื่องหมายเป็นส่วนตัว | Requires the abusefilter-log right (not needed if the group already has the abusefilter-modify or abusefilter-view-private rights)
|
sysop | 1.20+ |
abusefilter-modify-global | สร้างหรือปรับเปลี่ยนตัวกรองการละเมิดกฎข้ามโครงการ | Requires the abusefilter-modify right
|
— | 1.21+ |
abusefilter-privatedetails-log | ดูรายการบันทึกการเข้าถึงรายละเอียดส่วนตัวของตัวกรองการละเมิดกฎ | Prior to 1.34 this right was named abusefilter-private-log
|
— | 1.31+ |
abusefilter-modify-blocked-external-domains | สร้างหรือแก้ไขโดเมนภายนอกที่จะบล็อกไม่ให้เชื่อมโยงมา | sysop | 1.41+ | |
abusefilter-bypass-blocked-external-domains | เลี่ยงผ่านโดเมนภายนอกที่ถูกบล็อก | Requires the edit right
|
bot | 1.41+ |
abusefilter-access-protected-vars | View and create filters that use protected variables | sysop | 1.43+ | |
abusefilter-protected-vars-log | View logs related to accessing protected variable values | sysop | 1.43+ |
ตัวอย่างเช่น การกำหนดค่าตัวอย่างต่อไปนี้จะอนุญาตให้ 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;
$wgGroupPermissions['sysop']['abusefilter-access-protected-vars'] = true;
$wgGroupPermissions['sysop']['abusefilter-protected-vars-log'] = true;
abusefilter-access-protected-vars
permission. Logs pertaining to these filters can only be viewed by users with the abusefilter-protected-vars-log
permission. For more information, see Rules format .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' |
$wgAbuseFilterProtectedVariables
|
[ "user_unnamed_ip" ]
|
Array of variables that are be considered protected (limited access) and require the abusefilter-access-protected-vars right to use/view.
|
การควบคุมปริมาณฉุกเฉิน
AbuseFilter มาพร้อมกับคุณสมบัติที่จะควบคุม (ปิดการใช้งาน) ตัวกรองที่ได้รับการแก้ไขเมื่อเร็ว ๆ นี้และตรงกับเกณฑ์ที่กำหนดของการดำเนินการล่าสุดโดยอัตโนมัติ
สิ่งนี้ทำเพื่อป้องกันการแก้ไขตัวกรองที่เป็นอันตรายเพื่อบล็อกผู้ใช้ทุกคนที่ดำเนินการบนวิกิหรือสิ่งที่คล้ายกัน
เงื่อนไขในการปิดใช้งานตัวกรองจะขึ้นอยู่กับตัวแปรเหล่านั้น:
$wgAbuseFilterEmergencyDisableThreshold
- เปอร์เซ็นต์ของการจับคู่ต่อจำนวนการกระทำทั้งหมดในช่วงเวลาที่สังเกต$wgAbuseFilterEmergencyDisableCount
- จำนวนรายการที่ตรงกันของตัวกรองในช่วงเวลาที่สังเกต$wgAbuseFilterEmergencyDisableAge
- อายุของตัวกรองที่ต้องคำนึงถึง หากการแก้ไขตัวกรองครั้งล่าสุดเก่ากว่าจำนวนวินาทีนี้ ตัวกรองจะไม่ถูกควบคุม เว้นแต่จะถูกควบคุมแล้ว
ตัวกรองที่ควบคุมปริมาณสามารถระบุได้ในรายการตัวกรอง (พิเศษ: AbuseFilter) โดยมีสถานะ เปิดใช้งาน, อัตราการตรงกันสูง การควบคุมปริมาณจะเกิดขึ้นอย่างเงียบ ๆ และไม่มีทางรู้ได้ว่าตัวกรองถูกควบคุมเมื่อใด
เมื่อตัวกรองถูกควบคุมปริมาณ ตัวกรองจะไม่ดำเนินการที่เป็นอันตรายใดๆ (โดยปกติการดำเนินการจะจำกัดเฉพาะสิทธิ์พิเศษ เช่น การบล็อกผู้ใช้ หรือการลบตัวกรองออกจากกลุ่ม ซึ่งควบคุมโดย $wgAbuseFilterActionRestrictions) และอนุญาตเฉพาะการดำเนินการที่ "ปลอดภัย" เท่านั้น (ตัวกรองที่สามารถ ตักเตือนหรือระงับการดำเนินการต่อไป) ตัวกรองที่ถูกควบคุมไม่ได้เปิดใช้งานโดยอัตโนมัติ หากต้องการปิดใช้งานการควบคุมปริมาณ คุณต้องแก้ไขตัวกรอง โปรดทราบว่าคุณจำเป็นต้องเปลี่ยนแปลงบางอย่างจากตัวกรอง: การเปลี่ยนแปลงบางอย่างจากบันทึกของตัวกรองก็เพียงพอแล้ว
โปรดทราบว่าการแก้ไขตัวกรองจะอัปเดตอายุของตัวกรอง และอาจทำให้ปิดใช้งานได้หากถึงเงื่อนไขที่ต้องควบคุมอีกครั้งในช่วงเวลาสั้นๆ นับตั้งแต่การแก้ไขครั้งล่าสุด ซึ่งนำไปสู่ตัวกรองที่ใช้งานไม่ได้หากวิกิของคุณมีการแก้ไขที่ไม่เหมาะสมมากกว่าการแก้ไขที่ถูกต้อง
การสร้างและการจัดการตัวกรอง
เมื่อติดตั้งส่วนขยายแล้ว คุณจะสามารถสร้าง/ทดสอบ/เปลี่ยนแปลง/ลบตัวกรองได้ และสามารถเข้าถึงบันทึกได้จากหน้าการจัดการตัวกรองการละเมิด Special:AbuseFilter
- รูปแบบกฎ - พื้นฐานของวิธีเขียนตัวกรอง
- การกระทำ
- กฎสากล
- คำแนะนำในการเพิ่มประสิทธิภาพการใช้งานขีดจำกัดเงื่อนไข
- หากต้องการนำเข้าตัวกรองจาก Wikipedia: เมื่อคุณติดตั้งส่วนขยายแล้ว ให้ไปที่ w:Special:AbuseFilter เลือกตัวกรอง (พูด w:Special:AbuseFilter/3) จากนั้นคลิก "ส่งออกตัวกรองนี้ ไปยังวิกิอื่น", คัดลอกข้อความ, ไปที่ "พิเศษ: AbuseFilter/import" บนวิกิของคุณ, วางข้อความ
- m:Small wiki toolkits/Starter kit/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)
- ตัวอย่าง
ผล |
---|
{
"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
โดยส่งผ่านชื่อกลุ่มของคุณ
ดูเพิ่ม
- Help:BlockedExternalDomains
- วิกิ WMF หลายแห่งที่เปิดใช้งาน (และด้วยการกำหนดค่าใด)
ส่วนขยายมีเดียวิกินี้ถูกใช้ในหนึ่งหรือหลายที่ในโครงการของวิกิมีเดีย นั่นควรจะหมายถึงว่าส่วนขยายนี้มีความเสถียรสูงและทำงานได้ดีพอในเว็ปไซต์ที่มีการเยี่ยมชมมาก ลองดูที่ชื่อของส่วนขยายนี้ในไฟล์การตั้งค่า CommonSettings.php และ InitialiseSettings.php เพื่อดูการติดตั้งว่าอยู่ที่ใด รายการฉบับสมบูรณ์ของส่วนขยายที่ติดตั้งแล้วได้ที่หน้า Special:Version ของวิกิ |
This extension is included in the following wiki farms/hosts and/or packages: This is not an authoritative list. Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here. Always check with your wiki farms/hosts or bundle to confirm. |