ข้ามไปที่เนื้อหาหลัก

Spam Blocker

การตั้งชื่อมรดก

แพคเกจนี้ถูกเผยแพร่ครั้งแรกภายใต้ขอบเขต @plebbit เปลี่ยนชื่อเป็น @bitsocial/spam-blocker-server และ @bitsocial/spam-blocker-challenge การอ้างอิงถึงชื่อเก่าอาจยังคงปรากฏในเอกสารหรือฐานรหัสเก่า

Spam Blocker เป็นบริการตรวจจับสแปมแบบรวมศูนย์ที่ประเมินสิ่งพิมพ์ที่เข้ามาและกำหนดคะแนนความเสี่ยง ประกอบด้วยสองแพ็คเกจ:

  • @bitsocial/spam-blocker-server -- เซิร์ฟเวอร์ HTTP ที่โฮสต์การประเมินและท้าทาย API
  • @bitsocial/spam-blocker-challenge -- แพ็คเกจไคลเอ็นต์แบบน้ำหนักเบาที่ชุมชนผสานรวมเพื่อส่งสิ่งพิมพ์เพื่อรับการประเมิน

ซอร์สโค้ด: github.com/bitsocialnet/spam-blocker

การให้คะแนนความเสี่ยงทำงานอย่างไร

ทุกสิ่งพิมพ์ที่ส่งไปยังปลายทาง /evaluate จะได้รับคะแนนความเสี่ยงที่เป็นตัวเลข คะแนนเป็นการผสมผสานแบบถ่วงน้ำหนักของสัญญาณต่างๆ:

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

เกณฑ์ระดับ

คะแนนความเสี่ยงจะจับคู่กับหนึ่งในสี่ระดับที่กำหนดค่าได้ซึ่งกำหนดว่าจะเกิดอะไรขึ้นต่อไป:

  1. ยอมรับอัตโนมัติ -- คะแนนต่ำพอที่จะอนุมัติสิ่งพิมพ์โดยไม่ต้องท้าทายใดๆ
  2. เพียงพอสำหรับ OAuth -- ผู้เขียนต้องทำการยืนยัน OAuth ให้เสร็จสิ้นจึงจะดำเนินการต่อได้
  3. OAuth-plus-more -- OAuth เพียงอย่างเดียวไม่เพียงพอ ต้องมีการตรวจสอบเพิ่มเติม (เช่น CAPTCHA)
  4. ปฏิเสธอัตโนมัติ -- คะแนนสูงเกินไป สิ่งพิมพ์ถูกปฏิเสธโดยสิ้นเชิง

ค่าขีดจำกัดทั้งหมดสามารถกำหนดค่าได้ต่อชุมชน

กระแสความท้าทาย

เมื่อสื่อเผยแพร่ตกอยู่ในระดับที่ต้องมีการตรวจสอบ ขั้นตอนความท้าทายจะเริ่มต้นขึ้น:

  1. ผู้เขียนจะได้รับแจ้งให้ตรวจสอบสิทธิ์ผ่าน OAuth (GitHub, Google, Twitter และผู้ให้บริการอื่นๆ ที่รองรับ)
  2. หาก OAuth เพียงอย่างเดียวไม่เพียงพอ (ระดับ 3) ระบบจะแสดง CAPTCHA สำรอง ที่ขับเคลื่อนโดย Cloudflare Turnstile
  3. ข้อมูลระบุตัวตน OAuth ใช้สำหรับการตรวจสอบเท่านั้น โดย ไม่เคยแชร์ กับชุมชนหรือผู้ใช้รายอื่น

จุดสิ้นสุด API

POST /evaluate

ส่งสิ่งพิมพ์เพื่อประเมินความเสี่ยง ส่งกลับคะแนนความเสี่ยงที่คำนวณได้และระดับความท้าทายที่ต้องการ

POST /challenge/verify

ส่งผลลัพธ์ของการท้าทายที่เสร็จสมบูรณ์ (โทเค็น OAuth, โซลูชัน CAPTCHA หรือทั้งสองอย่าง) เพื่อการยืนยัน

GET /iframe/:sessionId

ส่งคืนหน้า HTML ที่ฝังได้ซึ่งแสดงผล UI ความท้าทายที่เหมาะสมสำหรับเซสชันที่กำหนด

การจำกัดอัตรา

การจำกัดอัตราจะถูกนำไปใช้แบบไดนามิกโดยพิจารณาจากอายุและชื่อเสียงของผู้เขียน ผู้เขียนที่ใหม่กว่าหรือมีชื่อเสียงน้อยกว่าต้องเผชิญกับข้อจำกัดที่เข้มงวดมากขึ้น ในขณะที่ผู้เขียนที่ได้รับการยอมรับแล้วจะมีเกณฑ์ที่กว้างกว่า วิธีนี้จะช่วยป้องกันสแปมจำนวนมากโดยไม่ลงโทษผู้เข้าร่วมที่เชื่อถือได้

ตัวสร้างดัชนีเครือข่ายพื้นหลัง

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

ความเป็นส่วนตัว

Spam Blocker ได้รับการออกแบบโดยคำนึงถึงความเป็นส่วนตัว:

  • ข้อมูลประจำตัว OAuth ใช้สำหรับการยืนยันความท้าทายเท่านั้น และจะไม่ เปิดเผย ต่อชุมชน
  • ที่อยู่ IP ได้รับการแก้ไขเป็น รหัสประเทศเท่านั้น; IP ดิบจะไม่ถูกจัดเก็บหรือแชร์

ฐานข้อมูล

เซิร์ฟเวอร์ใช้ SQLite (ผ่าน better-sqlite3) สำหรับการคงอยู่ของข้อมูลชื่อเสียง สถานะเซสชัน และการกำหนดค่าในเครื่อง