5 คะแนน โดย GN⁺ 5 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • จากอาการที่ดูเหมือนเป็นข้อผิดพลาดชั่วคราวของ Reddit ในปี 2021 ทำให้ เหตุผลการลบสแปมระดับทั้งเว็บไซต์ และข้อมูลการตัดสินภายในที่ปกติถูกซ่อนเป็น Removed: Auto ใน Relay for reddit ถูกเปิดเผยออกมา
  • จากโค้ดอาร์ไคฟ์ที่เปิดเผย ข้อมูลการลบถูกส่งผ่าน ban_info.banner และ Relay จะแสดง banned_by=true จาก API เป็น Auto แต่ดูเหมือนจะเกิดปัญหาเมื่อฟิลด์เดียวกันนั้นมีเหตุผลภายในถูกใส่เข้ามา
  • เหตุผลที่ถูกเปิดเผยมีทั้ง domain, spammit, banned user, shadowban, spamurai เป็นต้น โดย spamurai มีข้อมูลอย่างอายุบัญชี, karma, จำนวนรายงาน, ISP, โดเมนอีเมล, User-Agent, language header, ลายนิ้วมือ TLS, referrer ไปจนถึงคะแนนจาก Perspective API
  • คะแนน SPAM ของ Google Perspective API เกือบตรงกับค่าในล็อกการลบของ Reddit และพบกรณีที่คะแนนแกว่งอย่างมากจากคุณลักษณะอย่างการเพิ่มตัวอักษรสั้น ๆ, การแทนที่ด้วยอักษรซีริลลิก, และการเพิกเฉยต่อการพิมพ์เล็กใหญ่กับตัวเลข
  • ระบบแอนติสแปมของ Reddit ดูเหมือนเป็นระบบหลายยุคที่ผสมทั้งการตรวจสอบบน Python 2.7, REV1/REV2 แบบกฎบน Lua, Snooron และเครื่องมือ OCR/จัดหมวดหมู่ภาพ และในปี 2026 ผู้เขียนมองว่าความเสี่ยงจากการเปิดเผยลดลงแล้วเพราะ Perspective API จะยุติบริการและสแปมก็เปลี่ยนไปตามยุค LLM

เหตุผลการลบที่ถูกเปิดเผยในปี 2021

  • ผู้ใช้รายหนึ่งซึ่งเคยเป็นผู้ดูแล Reddit พบ ข้อความภายในของระบบแอนติสแปม ขณะได้รับการแจ้งเตือนสแปมที่ถูกลบในแอป Relay for reddit เมื่อปี 2021 ทั้งที่ปกติไม่ควรมองเห็น
  • ในหน้าจอผู้ดูแลทั่วไป การลบสแปมอัตโนมัติมักแสดงเป็น Removed: Auto แต่ในตอนนั้นกลับมีเหตุผลการลบจริงและข้อมูลภายในแสดงเป็นข้อความสีแดง
  • อาการนี้กลับเป็นปกติหลังจากนั้นราวหนึ่งชั่วโมง และหลักฐานที่เหลืออยู่มีเพียงภาพหน้าจอที่ถ่ายไว้ตอนนั้น

การดูแล Reddit และวิธีแสดง Auto

  • ใน subreddit ซึ่งเป็นชุมชนย่อยของ Reddit ผู้ดูแลชุมชนจะรับผิดชอบการลบโพสต์, แบนผู้ใช้, จัดการ modmail เป็นต้น
  • ผู้ดูแลสามารถเห็นได้ว่าโพสต์หรือคอมเมนต์ถูกลบโดยใคร
    • หากผู้ดูแลลบเอง จะแสดงชื่อผู้ดูแล
    • หาก AutoModerator ลบ จะแสดง AutoModerator
    • หากตัวกรองสแปมระดับทั้งเว็บไซต์หรือผู้ดูแลระบบของ Reddit ลบ อาจแสดงเป็น Auto
  • ในบันทึกการดูแล การลบระดับทั้งเว็บไซต์อาจปรากฏเป็น reddit หรือ Anti-Evil Operations

เส้นทางการเปิดเผยจากโค้ดอาร์ไคฟ์สาธารณะ

  • Reddit เปิดซอร์สโค้ดไว้จนถึงปี 2017 ที่ source code และจากโค้ดอาร์ไคฟ์นี้สามารถตามรอยบางส่วนของลำดับการลบได้
  • ฟังก์ชันลบโดยผู้ดูแล POST_remove เรียก admintools.spam
    • moderator_banned ใช้แยกว่าเป็นการลบโดยผู้ดูแลชุมชนหรือผู้ดูแลระบบ
    • banner ใช้บันทึกชื่อผู้ใช้ที่ทำการลบ
  • get_mod_attributes ส่ง ban_info ของรายการที่ถูกลบออกไปใน API response
    • ถ้าผู้ดูแลชุมชนลบ จะคืนค่า banner เป็น banned_by
    • ถ้าผู้ดูแลระบบลบ จะคืนค่า True แทนชื่อจริง
  • จากโค้ดที่ถอดกลับของ Relay for reddit หาก bannedBy เป็น "true" แอปจะแปลงไปแสดงเป็นสตริง Auto
  • ใน Reddit ยังมีเส้นทางโค้ดที่เมื่อตรวจพบโดเมนต้องห้ามระหว่างส่งลิงก์ จะใส่เหตุผลภายในลงในฟิลด์ banner เช่น banner = "domain (REASON)"
  • ฟิลด์ banner ที่มีเหตุผลการลบภายในนี้เดิมควรให้เห็นได้เฉพาะผู้ดูแลระบบระดับทั้งเว็บไซต์เท่านั้น แต่คาดว่าเกิดข้อผิดพลาดในเส้นทางโค้ดที่คล้ายกันจนผู้ดูแลชุมชนเห็นได้

หมวดหมู่ของเหตุผลการลบที่ถูกเปิดเผย

  • domain

    • การลบตามโดเมนเป็นหมวดที่ยืนยันได้จากโค้ดสาธารณะด้วย
    • ส่วนใหญ่แสดงเป็น Removed: domain (spam) แต่บางกรณีก็มีโน้ตเฉพาะแนบมาด้วย
    • เคยมีกรณีลบโดเมนบางตัวในปี 2012 เพื่อทดลองกับสแปมที่เกี่ยวข้องกับ Tumblr
    • มีข้อความอย่าง le sexxxxy sex spam ปรากฏเป็นเหตุผลการลบด้วย
  • spammit

    • spammit ดูเหมือนเป็นหมวดที่วิเคราะห์โพสต์แล้วใส่ เปอร์เซ็นต์ความน่าจะเป็นว่าเป็นสแปม
    • คะแนนที่พบในกรณีการลบมีตั้งแต่ 39.71% ไปจนถึง 98.19%
    • ใน subreddit เหล่านั้น มีหลายกรณีที่โพสต์ Imgur ปกติก็ถูกลบด้วยคะแนนสแปม 70~98% จึงไม่ดูเหมือนว่าจะแม่นยำมากนัก
  • ผู้ใช้ที่ถูกแบนและ shadowban

    • มีการลบในรูปแบบ Removed: banned user หรือ Removed: Reddit (banall performed)
    • กรณีเหล่านี้ส่วนใหญ่เป็นโพสต์สแปมชัดเจน เช่น ลิงก์บริการเชิงโฆษณา
    • โพสต์ของผู้ใช้ที่ถูก shadowban จะแสดงเป็น Removed: Reddit (shadowban applied on วันที่)
    • shadowban คือการแบนแบบเงียบที่ทำให้เจ้าตัวยังรู้สึกว่าโพสต์ได้ตามปกติ แต่คนอื่นจะไม่เห็นโพสต์และคอมเมนต์นั้น

ข้อมูลการตัดสินภายในที่เผยผ่าน spamurai

  • spamurai เป็นรายการที่มีข้อมูลภายในมากที่สุดในบรรดาหมวดที่ถูกเปิดเผย
  • ในเอกสารนำเสนอสาธารณะ Reddit ระบุว่าใช้ “ML” กับ Minsky และ “Rules” กับ Spamurai
  • เหตุผลการลบของ spamurai มีทั้งกฎแบบง่ายและข้อมูลดัมป์รายละเอียด
    • ชื่อที่ดูเหมือนเป็นระบบย่อยอย่าง echelon ปรากฏในกรณีลบคำคีย์เวิร์ดบางอย่าง
    • มีกรณีลบคอมเมนต์ของบัญชีอายุน้อยกว่า 30 นาทีเมื่อเข้าเงื่อนไขสแปม
    • เห็นกฎเฉพาะอย่างสแปมแอฟฟิลิเอตเสื้อยืดที่น่าสงสัย, คอมเมนต์ที่มีแต่ URL, คอมเมนต์ที่มีคะแนน Perspective สูง เป็นต้น
  • รายการในดัมป์ข้อมูลของ spamurai

    • link t3_... หรือ comment t1_... คือ fullname ID ของ Reddit
    • t1 คือคอมเมนต์
    • t2 คือผู้ใช้
    • t3 คือโพสต์
    • t4 คือ private message
    • t5 คือ subreddit
    • ค่า perspective spam ถูกยืนยันว่าเป็นคะแนน SPAM จาก Google Perspective API
    • มีข้อมูลที่เกี่ยวกับบัญชีรวมอยู่ด้วย
      • อายุบัญชี
      • คะแนน spammy
      • karma
      • จำนวนรายงาน
      • โดเมนอีเมล
      • ISP หรือชื่อองค์กร
    • ยังมีข้อมูลการเชื่อมต่อและสภาพแวดล้อมด้วย
      • การใช้ oauth.reddit.com
      • User-Agent
      • language header LANG
      • referrer
      • RHS ที่ดูเหมือนลายนิ้วมือเบราว์เซอร์
      • ค่าที่ดูเหมือนลายนิ้วมือ TLS
      • URL ของ thumbnail
      • เนื้อหาโพสต์หรือคอมเมนต์
      • ลิงก์ Reddit ต้นฉบับ

Perspective API และความเป็นไปได้ในการหลบเลี่ยง

  • ค่า 0.12571795 perspective spam ในล็อกของ Reddit ตรงกับผลลัพธ์จากการเรียก Perspective API สำหรับแอตทริบิวต์ SPAM แทบทั้งหมด
  • เมื่อนำข้อความเดียวกันไปเรียก Perspective API ได้ค่า 0.12571794 ต่างกันเพียง 0.00000001 ซึ่งน่าจะเป็นความคลาดเคลื่อนจากการปัดเศษ
  • รูปแบบคะแนนในตัวอย่างเอกสารของ Perspective และกรณีอ้างอิงจาก CTO ของ Reddit ก็เป็นหลักแวดล้อมว่ามีการใช้ Perspective จริง
  • แอตทริบิวต์ SPAM ของ Perspective ไม่ใช่การตรวจจับความเป็นพิษ แต่เป็นแอตทริบิวต์เชิงทดลองสำหรับตรวจจับสแปม และระบุว่าเทรนจากชุดข้อมูลเดียวที่รวมคอมเมนต์ของ New York Times กับข้อมูลการดูแล
  • หลังเดือนกุมภาพันธ์ 2026 จะไม่สามารถสร้างโปรเจกต์ Perspective API ใหม่บน Google Cloud ได้ จึงยากที่จะทดลองใหม่
  • การเปลี่ยนแปลงอย่างไวของคะแนน SPAM

    • คะแนน SPAM ของ Perspective มีกรณีที่เปลี่ยนมากแม้เพิ่มเพียงไม่กี่ตัวอักษร
    • Puppygirl Consulting is the best way to grow your revenue ได้ 0.8638981
    • หากเติม qp ต่อท้าย จะลดลงเป็น 0.010811162
    • มีผลลัพธ์ที่ดูเหมือนว่าระบบเพิกเฉยต่อตัวเลขและตัวพิมพ์เล็กใหญ่
    • แม้เปลี่ยนตัวเลขในเบอร์โทรศัพท์และสลับตัวพิมพ์เล็กใหญ่ ก็ได้คะแนนเดิม
    • ระบบอักขระบางแบบอื่นก็ถูกประมวลผลเป็นคะแนนเดียวกัน
    • สตริงอักษรซีริลลิกต่างกันหลายชุดได้รับคะแนนเดียวกันคือ 0.35077864
    • ใน Buy my product หากเปลี่ยน p แบบละตินเป็น р แบบซีริลลิก คะแนนจะลดจาก 0.6473346 เหลือ 0.4452748
    • หากอิงจาก API สาธารณะ ก็เป็นไปได้ว่าการปรับข้อความทีละนิดอาจช่วยหลบหนึ่งในเกณฑ์ตัดสินหลักของ spamurai ได้

การสะท้อนรายงานจากผู้ใช้และการอนุมัติของผู้ดูแล

  • spamurai ดูเหมือนจะนำรายงานจากผู้ใช้มาใช้ในกฎการลบด้วย
  • เหตุผล REPORT: High spam perspective score on comment with hyperlink reported for spam หมายความว่าคอมเมนต์ที่มีไฮเปอร์ลิงก์ซึ่งถูกรายงานว่าเป็นสแปม ถูกลบเพราะมีคะแนน Perspective สูง และผู้ดูแลสามารถอนุมัติกลับได้
  • ในเหตุผลการลบบางรายการมีข้อความว่า “หากผู้ดูแลอนุมัติคอนเทนต์นี้ การลบในอนาคตจะลดลง”
  • อาร์กิวเมนต์ train_spam ใน admintools.spam จากโค้ดสาธารณะของ Reddit ใช้ตัดสินว่าจะนำแอ็กชันของผู้ดูแลไปใช้ฝึกระบบแอนติสแปมหรือไม่
  • จึงตีความได้ว่าเมื่อ subreddit อนุมัติโพสต์ปกติ ก็อาจช่วยลด false positive ได้

กฎการลบอื่น ๆ และการตรวจสอบ URL

  • มีกรณีลบลิงก์ redirect ของ Pinterest, ลิงก์ mega.nz, และลิงก์ที่เกี่ยวกับ subdomain ที่สร้างได้อย่างอิสระ
  • ในการลบลิงก์ mega.nz ก็มีกรณีปกติที่เป็นลิงก์วิดีโออาร์ไคฟ์ YouTube จริง ๆ จึงเกิด false positive ด้วย
  • กรณี Matched forbidden regex u'torenteu' แม้ในเนื้อหาจะไม่มี torenteu ตรง ๆ ก็ยังถูกลบ
    • Reddit ใช้ unidecode เพื่อแปลงสตริง Unicode เป็น ASCII
    • คำเกาหลี 토렌.트 อาจถูกแปลงและผ่านการประมวลผลเพิ่มจนไปแมตช์กับ torenteu ได้
  • กรณี Failed inspection: Phrase(s) [u'UA-49307539-'] ดูเหมือนว่าไม่ได้แมตช์จากเนื้อหาคอมเมนต์หรือข้อความที่แปลงแล้ว แต่ไปแมตช์กับ Google Analytics ID ใน HTML ของหน้าที่ลิงก์รีไดเรกต์ไป
  • inspection ดูเหมือนเป็นพฤติกรรมที่ Reddit เปิด URL, ตามรีไดเรกต์, แล้วค้นหารูปแบบบางอย่างในหน้าเว็บนั้น
  • เมื่อลองโพสต์ลิงก์ไปยังหน้าเว็บที่ใส่สตริงดังกล่าวไว้ด้วยบัญชีทดสอบ บัญชีอายุ 5 ปีก็ถูกแบนทันทีและประวัติการโพสต์ถูกลบ
    • แต่เมื่อใช้บัญชีเพื่อนที่มีประวัติกิจกรรมมากกว่า กลับไม่สามารถทำซ้ำผลลัพธ์เดิมได้
    • ยังไม่แน่ชัดว่าตัวกรองนี้ยังทำงานอยู่หรือการแบนบัญชีเป็นเรื่องบังเอิญ จึงมีการเปลี่ยนสตริงจริงก่อนเผยแพร่

องค์ประกอบระบบแอนติสแปมของ Reddit ในอดีตและปัจจุบัน

  • บทความของ Reddit Engineering ปี 2023 Protecting Reddit Users in Real Time at Scale กล่าวถึง Rule-Executor-V1, REV2 และ Snooron
  • ไทม์ไลน์ที่ผู้เขียนเข้าใจมีดังนี้
    • REV1 ถูกสร้างในปี 2016
    • Snooron ถูกพัฒนาในปี 2021 เพื่อทำให้ REV1 ทันสมัยขึ้น
    • จากนั้นราว 2 ปีต่อมาจึงย้ายไป REV2
  • REV1 และ REV2 ทำงานด้วยกฎ Lua และจากสตริงอย่าง nil กับช่วงเวลาแล้ว อาจมีความเชื่อมโยงกับ spamurai
  • สตริง Unicode แบบ Python 2.7 อย่าง u'torenteu', u'UA-49307539-' อาจมาจากโค้ดตรวจสอบบน Python 2.7 ที่อยู่นอก spamurai หรือเป็นโค้ดตรวจ URL แยกต่างหากที่ REV1 เรียกใช้
  • ตาม งานนำเสนอที่เกี่ยวข้อง Snooron ทำงานบน Flink Stateful Functions, ทำการจัดหมวดหมู่ภาพและ OCR และใช้ Python 3 ใน worker
  • ณ ปี 2024 Reddit ระบุในเอกสาร Australian eSafety ว่าใช้ Hive AI และ Google Vision OCR API สำหรับ OCR และการจัดหมวดหมู่ภาพ/วิดีโอ
  • Hive OCR รองรับ 12 ภาษา ส่วน Google OCR ใช้ร่วมกันเพื่อรองรับภาษาได้มากขึ้น และ Reddit ยังระบุว่ากำลังทำเครื่องมือภายในที่รองรับ 80 ภาษา
  • ใน ticket ปี 2009 มีการยืนยันว่าผู้ใช้ชื่อ crm114 เป็นตัวกรองสแปมที่รองรับการเรียนรู้จากผู้ดูแล และ CRM114 คือซอฟต์แวร์จัดหมวดหมู่สแปมโอเพนซอร์สรุ่นเก่า

เหตุผลที่เผยแพร่ในปี 2026

  • ผู้เขียนมองว่าหากเปิดเผยข้อมูลนี้ตั้งแต่ปี 2021 อาจกระทบปัญหาสแปมของ Reddit อย่างรุนแรง
  • ในปี 2026 Perspective API is shutting down มีกำหนดยุติปลายปี ดังนั้นต่อให้ Reddit ยังใช้อยู่ก็ต้องย้ายระบบในไม่ช้า
  • ผู้เขียนมองว่าอุตสาหกรรมสแปมเปลี่ยนไปเพราะ LLM ทำให้ Reddit น่าจะปรับระบบแอนติสแปมครั้งใหญ่แล้วภายในปี 2026
  • ด้วยเหตุผลเหล่านี้ จึงเห็นว่า ณ ปี 2026 ความเสี่ยงจากการเปิดเผยข้อมูลดังกล่าวอยู่ในระดับต่ำ

1 ความคิดเห็น

 
GN⁺ 5 시간 전
ความคิดเห็นบน Lobste.rs
  • เป็นข้อมูลและงานวิจัยที่น่าสนใจ อย่างที่กล่าวไว้ในบทสรุป โอกาสที่จะได้เห็นรายละเอียดของ กลไกป้องกันการนำไปใช้ในทางที่ผิด แบบนี้มีไม่บ่อยนัก แต่สิ่งที่สะดุดตาเป็นพิเศษคือ CSS อันชำนาญเฉพาะตัวของ Lyra
    แถบเซ็นเซอร์และวงกลมสีแดงใน UI ของ Reddit ที่สร้างขึ้นใหม่นั้น ตอนแรกดูเหมือนสกรีนช็อต แต่จริง ๆ แล้วเป็นโมเดลจำลองที่โต้ตอบได้เต็มรูปแบบ

    • ก่อนจะอ่านคอมเมนต์นี้ ผมไม่รู้เลยว่านั่นไม่ใช่รูปภาพ
  • ทุกครั้งที่มีบล็อกโพสต์ใหม่ออกมา ผมตั้งตารอเสมอ เนื้อหาน่าสนใจมาก และฝีมือในการสร้าง UI อื่นขึ้นมาใหม่ก็ยอดเยี่ยม
    จนถึงตอนนี้ผมหา อีสเตอร์เอก เจออย่างน้อยหนึ่งอย่างแล้ว

    • ขอบคุณนะ ในบทความนี้ผมใส่ของแบบนั้นไว้ค่อนข้างเยอะเลย ;)
  • ตอนที่บอกว่าเพื่อทดสอบด้วยบัญชีของตัวเอง เขาใส่สตริง <pre>UA-49307539-2</pre> ไว้บนเว็บไซต์แล้วลิงก์ไปที่ Reddit จากนั้น บัญชีทดสอบอายุ 5 ปี ก็ถูกระงับทันทีและประวัติการโพสต์ก็ถูกลบทั้งหมด เป็นส่วนที่โหดจริง ๆ
    เลยบอกว่าเลขจริงถูกเปลี่ยนเป็น UA-49307539- เพื่อไม่เผยแพร่ข้อความที่สามารถฆ่าบัญชีได้ ก็หวังว่าบัญชีนั้นจะเป็นบัญชีทดสอบจริง ๆ และไม่มีอะไรสำคัญอยู่ในนั้น

  • ถ้าพยายามเปิดด้วย Safari บนมือถือใน iOS developer beta รุ่นล่าสุดของ iPhone 16 Pro จะเกิดข้อผิดพลาด “a problem repeatedly occurred” ที่ <url> จนดูไม่ได้

    • ผมไม่รู้เลยว่าทำไมถึงเป็นแบบนั้น และตอนนี้ก็ไม่มี iPhone อยู่ใกล้ตัวด้วย
      ถ้ามีใครช่วยทำ binary search กับ HTML เพื่อหา สาเหตุที่ทำให้แครช ได้ ผมจะขอบคุณมาก
  • สำหรับคนที่สงสัย Perspective API key ที่รวมอยู่ในนั้นใช้งานไม่ได้

    • ถ้าดูที่ bans (2016 - present) แล้วเห็นว่าบริษัทที่ปรึกษาซึ่งถูกเซ็นเซอร์ไว้เป็นตัวอย่างสแปมคือ Puppygirl Consulting เหล่าคนติด developer tools ก็น่าจะได้เบาะแสว่าส่วนที่ถูกเซ็นเซอร์ไว้น่าจะเป็นของปลอมหรือ อีสเตอร์เอก :^)