1 คะแนน โดย GN⁺ 18 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • มีการทดลองขนาดใหญ่ที่ รวบรวม·ติดตั้งส่วนขยาย Firefox ทั้งหมดกว่า 84,000 รายการ โดยใช้ Add-ons API ของ Mozilla
  • ได้ ส่วนขยายที่ไม่ซ้ำกัน 84,235 รายการ ผ่านการสแครป รวมขนาดทั้งหมด 49.3GB และเปิดเผยชุดข้อมูลบน Hugging Face
  • ระหว่างกระบวนการติดตั้งพบส่วนขยายอันตรายจำนวนมากหลายประเภท เช่น ฟิชชิง·สแปม·PUA (แอปที่อาจไม่พึงประสงค์)
  • สุดท้ายสามารถ ติดตั้งส่วนขยายได้สำเร็จ 84,194 รายการ แต่เบราว์เซอร์แทบใช้งานไม่ได้
  • การทดลองนี้ถูกประเมินว่าเป็นกรณีศึกษาที่เผยให้เห็น ขนาด คุณภาพ และปัญหาด้านความปลอดภัยของระบบนิเวศส่วนขยาย อย่างครบถ้วน

การทดลองติดตั้งส่วนขยาย Firefox ทั้งหมด

  • การทดลองขนาดใหญ่ที่ รวบรวม·วิเคราะห์·ติดตั้งส่วนขยายสำหรับ Firefox ทั้งหมดกว่า 84,000 รายการ
  • สแครปรายชื่อส่วนขยายทั้งหมดผ่าน Add-ons API แบบสาธารณะ ของ Mozilla และทำการติดตั้งจริงด้วย
  • ชุดข้อมูลถูกเผยแพร่บน Hugging Face เพื่อให้ทุกคนเข้าถึงได้
  • หลังพยายามหลายครั้งก็ ติดตั้งส่วนขยายได้สำเร็จ 84,194 รายการ แต่เบราว์เซอร์แทบใช้งานไม่ได้
  • จากการทดลองนี้ทำให้เห็น ขนาดของระบบนิเวศส่วนขยาย คุณภาพ ส่วนขยายอันตราย สแปม และ PUA (แอปที่อาจไม่พึงประสงค์)

การสแครปส่วนขยาย Firefox

  • addons-server API ของ Mozilla เข้าถึงได้โดยไม่ต้องยืนยันตัวตน และสามารถดึงรายชื่อส่วนขยายแบบแบ่งหน้าได้ผ่านเอนด์พอยต์ search
  • การเรียงลำดับเริ่มต้น (recommended,users) ดึงได้เพียงราว 30,000 รายการ จึงใช้ตัวเลือกการเรียงลำดับหลายแบบ เช่น created, rating, hotness, updated เพื่อเก็บส่วนขยายที่ตกหล่น
  • ใช้พารามิเตอร์ exclude_addons เพื่อเก็บส่วนขยายเพิ่มเติมหลังหน้าที่ 600
  • ด้วยการส่งคำขอแบบขนานตามหมวดหมู่ จึงได้ ส่วนขยายที่ไม่ซ้ำกันรวม 84,235 รายการ ขนาดเฉลี่ย 584.9KB รวมทั้งหมด 49.3GB
  • ชุดข้อมูลสุดท้ายถูกอัปโหลดและเผยแพร่บน Hugging Face
  • ในอัปเดตวันที่ 11 เมษายน 2026 มีการใช้ฟิลเตอร์ created__gte, created__lte เพื่อทำ การสแครปทั้งหมดอย่างแม่นยำและมีประสิทธิภาพ

การวิเคราะห์ส่วนขยาย Firefox

  • ส่วนขยายที่ใหญ่ที่สุด คือ dmitlichess (196.3MB) ซึ่งมีไฟล์เสียงมากกว่า 2,000 ไฟล์
    • ส่วนขยาย 10 อันดับแรกส่วนใหญ่มีเนื้อหาขนาดใหญ่ เช่น โมเดล AI, แอป Unity, ทรัพยากรรูปภาพ
  • ส่วนขยายที่เล็กที่สุด คือ theTabs-saver (7.5KB) และไม่มีโค้ด
  • ส่วนขยายที่ได้คะแนนต่ำที่สุด คือ Tab Stack for Firefox
  • ส่วนขยายที่เก่าแก่ที่สุด คือ Web Developer
  • ส่วนขยายที่มีภาพหน้าจอมากที่สุด คือ RDS Bar (54 ภาพ)
  • ส่วนขยายที่ขอสิทธิ์มากที่สุด คือ FalscheLaden (ขอสิทธิ์ 3,695 รายการ) รองลงมาคือ Google Dark Theme (2,675 รายการ)
  • นักพัฒนาที่เผยแพร่ส่วนขยายมากที่สุด คือ Dr. B (84 ส่วนขยาย) โดยส่วนใหญ่มี README แต่ไม่มีไอคอน
  • ฟิชชิงและส่วนขยายอันตราย

    • พบ ส่วนขยายฟิชชิงกระเป๋าเงินคริปโต จำนวนมากในชุดข้อมูล
      • ตัวอย่าง: “Іron Wаllеt” จะรับ URL จาก NocoDB หลังติดตั้ง 3 วินาที แล้วพาไปยังหน้าฟิชชิง
      • บางส่วนขยายรับ seed phrase แล้วส่งไปยังเซิร์ฟเวอร์
    • หลังรายงานไป Mozilla ได้ลบส่วนใหญ่ในวันถัดมา
    • ยังพบกรณีที่ API key มีสิทธิ์เขียน ทำให้สามารถลบข้อมูลได้โดยตรง
  • ส่วนขยายสแปม SEO

    • ลิงก์ “Homepage” ในหน้าส่วนขยายถูก นำไปใช้เป็นแบ็กลิงก์
    • ส่วนขยายที่สร้างด้วย AI เช่น Typo Sniper, Tab Fortune Teller เชื่อมไปยังเว็บไซต์คาสิโน
    • มีส่วนขยายแนว “Code Injector” จำนวนมาก โดยใช้โครงสร้างโค้ดเดียวกันและโดเมนสุ่ม
    • ส่วนใหญ่ถูกสร้างขึ้นในปี 2025
  • ส่วนขยาย PUA (แอปที่อาจไม่พึงประสงค์)

    • พบส่วนขยายราว 20 ชนิดที่มีรูปแบบ “Custom Web Search” รวมผู้ใช้ มากกว่า 700,000 คน
    • ทั้งหมดมีโครงสร้างและโดเมนเดียวกัน พร้อมระบุ “Innover Online Group Ltd”
    • Mozilla ได้ปิดใช้งานบางส่วนแล้ว (รวมผู้ใช้ 115,000 คน)
    • ใช้โค้ดพันธมิตร Yahoo safeplexsearch และมีเวอร์ชันเฉพาะสำหรับ Firefox
    • บริษัทลักษณะคล้ายกันอย่าง Atom Apps ก็เผยแพร่ส่วนขยายด้วยวิธีเดียวกัน โดยมีผู้ใช้รายวันรวม 220,000 คน
  • สรุปสถิติ

    • 34.3% ของส่วนขยายมีผู้ใช้รายวัน 0 คน
      • มีผู้ใช้ 10 คนขึ้นไป: 25.1%, 100 คนขึ้นไป: 10.6%, 1,000 คนขึ้นไป: 3.2%, 10,000 คนขึ้นไป: 0.7%
    • 76.7% เป็นโอเพนซอร์ส (ตามเกณฑ์ไลเซนส์ SPDX)
    • 23% เป็นส่วนขยายที่สร้างขึ้นหลังจากเขียนบทความ
      • ในกลุ่มนี้ 19% ไม่มีผู้ใช้ รีวิว ไอคอน และการดาวน์โหลดเลย
    • 2.4% เป็นส่วนขยายแบบเสียเงิน และในจำนวนนั้น 38.1% เป็นโอเพนซอร์ส

ความพยายามติดตั้งส่วนขยายทั้งหมด

  • บันทึกไฟล์ .xpi ของแต่ละส่วนขยายลงในโฟลเดอร์โปรไฟล์ด้วยชื่อ GUID แล้วแก้ไข extensions.json
  • ลบ addonStartup.json.lz4 และปรับแต่ง extensions.json เพื่อเปิดใช้งานอัตโนมัติ
  • ครั้งที่ 0: 65,335 รายการ (Windows VM)

    • พยายามติดตั้งด้วยวิธี Enterprise Policy แต่ หน่วยความจำไม่พอและระบบค้าง
  • ครั้งที่ 1: ประมาณ 1,000 รายการ

    • ดาวน์โหลดโดยตรงแล้วจัดวางเอง ติดตั้งสำเร็จ
    • บางส่วนขยาย เปลี่ยนข้อความทั้งหมดเป็นสตริงบางอย่าง
    • เนื่องจากส่วนขยายด้านความปลอดภัยจำนวนมาก จึงมี การบล็อกโดเมนและป๊อปอัปเตือน บ่อยครั้ง
  • ครั้งที่ 2: 65,335 รายการ

    • ลืมลบ addonStartup.json.lz4 ทำให้จริง ๆ แล้วเปิดใช้งานได้เพียงระดับ 1,000 รายการ
    • ระหว่างเปิด about:addons Firefox ค้างและเปิดใหม่ไม่ได้
  • ครั้งที่ 3: 65,335 รายการ (Mac)

    • เมื่อดาวน์โหลดแบบขนาน ความเร็วลดลง ใช้เวลารวม 6 ชั่วโมง
    • เมื่อเปิด Firefox เกิดสถานะ ไม่ตอบสนอง และ extensions.json มีขนาด 144MB
    • มีการเขียนข้อมูลลงดิสก์ มากกว่า 400GB
  • ครั้งที่ 4~10: 1,000~6,000 รายการ

    • ถึง 3,000 รายการยังโหลดหน้าเว็บได้
    • ตั้งแต่ 4,000 รายการขึ้นไป ทุกเว็บไซต์ถูกบล็อก และเมื่อถึง 6,000 รายการจะโหลดได้เฉพาะ about:addons
  • ครั้งที่ 11: 84,194 รายการ (หลังจากนั้น 6 เดือน)

    • ใช้ เครื่องเสมือน (VM) ในสภาพแวดล้อม RAM 16~24GB
    • ใช้เวลาดาวน์โหลด 1 ชั่วโมง 43 นาที และบางส่วนขยายถูก Defender ตรวจจับ
    • เมื่อเปิด Firefox, extensions.json โตถึง 189MB และถูกบังคับปิดหลัง 39 นาที
    • จากนั้นลองใหม่ด้วยการรัน enable.js
    • ผลลัพธ์ Launch 1~3

      • Launch 1: รอ 39 นาทีโดยไม่มีการเรนเดอร์ แล้วหยุด
      • Launch 2: เบราว์เซอร์แสดงขึ้นมา แต่แครชภายใน 3 นาที
      • Launch 3: หลังรอนานสามารถ ทำให้เสถียรได้สำเร็จ และยืนยันว่าโหลดส่วนขยาย 84,194 รายการแล้ว

การทดสอบใช้งานเมื่อเปิดทุกส่วนขยาย

  • about:addons

    • หน้า Settings โหลดไม่สำเร็จ แต่หน้า index โหลดครบหลังผ่านไป 6 ชั่วโมง
    • การใช้หน่วยความจำคงอยู่ที่ 27~37 GiB
    • ไอคอนไม่แสดง และการตอบสนองล่าช้ามาก
  • about:support

    • แสดงส่วนขยายรวม 84,205 รายการ แต่รวมส่วนขยายในตัวด้วย
    • ยืนยันว่าจำนวนส่วนขยายภายนอกที่ติดตั้งจริงคือ 84,194 รายการ
  • about:preferences

    • มีตัวเลือก New Tab จำนวนมาก และเกิด การชนกันกับแครช
  • New Tab

    • มีเพียง Firefox Home ที่โหลดได้ตามปกติ ส่วนขยายอื่นล้มเหลวทั้งหมด
  • moz-extension

    • ส่วนขยาย buyPal เข้ามาแทนแท็บโดยอัตโนมัติ และเป็นตัวเดียวที่โหลดได้ปกติ
    • หลังจากนั้น Firefox แครชอีกครั้ง
  • example.com

    • แม้รอ 24 ชั่วโมงก็ยังไม่โหลดหน้า คาดว่ามี ส่วนขยายบล็อกจำนวนมาก
  • about:telemetry

    • เมื่อคลิก Environment Data จะ แครชทันที

การประเมินความสามารถในการใช้งาน

  • เป็นไปไม่ได้
  • Firefox แทบทำงานไม่ได้เลยเมื่ออยู่ในสถานะที่ติดตั้งส่วนขยาย 84,000 รายการ

ข้อเสนอสำหรับการสำรวจเพิ่มเติม

  • วิเคราะห์สาเหตุที่ about:addons ใช้เวลาโหลด 6 ชั่วโมง และสาเหตุที่ example.com ไม่โหลด
  • ทดลองกับเบราว์เซอร์อื่นที่รองรับ .xpi เช่น Kagi Orion, GNOME Web
  • ทดลองติดตั้งธีมทั้งหมด (มากกว่า 500,000 รายการ) หรือ user script·style ทั้งหมด
  • การติดตั้งส่วนขยายทั้งหมดของ Chrome Web Store นั้น เป็นไปไม่ได้ในแง่ขนาด

สรุปเชิงอรรถ

  • มีส่วนขยายทั้งหมด 8 รายการที่สแครปไม่ครบหรือถูกลบ
  • หลังเวอร์ชันแรกที่เขียนในเดือนกันยายน 2025 มีการอัปเดตตัวเลขอีกครั้งในเดือนเมษายน 2026
  • “Foreshadowing” ถูกกล่าวถึงในฐานะอุปกรณ์ทางวรรณกรรม

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

 
GN⁺ 18 일 전
ความคิดเห็นจาก Hacker News
  • ได้รับรางวัล "Middle Finger Emoji Sticker"
    เลยสรุปขั้นตอนแบบสั้น ๆ แล้ว โพสต์ลงบล็อก
    ดูต้นฉบับได้ที่ นี่

  • ทำให้นึกถึงยุค สงครามแถบเครื่องมือของ Internet Explorer
    จำได้ว่าตามร้านอินเทอร์เน็ตคาเฟ่มักจะมีแถบเครื่องมือของ Ask.com, Google, Yahoo และต่อมาก็ Bing ติดตั้งไว้อย่างน้อยสองอันเสมอ

  • ลองไปสืบดูว่าทำไมมันถึงใช้เวลานานขนาดนี้
    เมื่อ 13 ปีก่อนยังใช้ extensions.sqlite แทน extensions.json
    ตอนนี้โครงสร้างเป็นแบบ serialize แล้วเขียนทับทั้งไฟล์ใหม่ทุก ๆ 20ms เลยไม่มีปัญหาสำหรับส่วนขยาย 15 ตัว แต่พอเป็น 84,194 ตัวก็มีปัญหาแน่
    เลยสงสัยว่าตั้งค่า debounce นี้กันอย่างไร และก็น่าสงสัยว่ามีส่วนขยายไหนบ้างที่เขียน extensions.json หลายครั้งต่อวินาที

  • หน้าเพจจริงแทบเปิดอะไรไม่ขึ้นเลย แต่ตัวบทความอ่านสนุกมากจริง ๆ
    ขำมากตรงที่บอกว่า “เปิด crash reporting ไว้แล้ว” ฝั่งทีม Mozilla คงรู้สึกเหมือนเรื่องสยองขวัญ

    • crash report ของ Firefox เปิดสาธารณะ
      แต่ยังหาของที่ผู้เขียนอัปโหลดไม่เจอ ดูได้ที่ crash-stats.mozilla.org
      ถ้ายังมีโปรไฟล์อยู่ ก็หา crash ID ได้จากคู่มือนี้
  • บทความนี้ ประหลาดแต่ยอดเยี่ยม มาก
    โดยเฉพาะการที่ไปเจอ บั๊กด้านประสิทธิภาพ ในหน้า about: อย่างน้อยหนึ่งหน้า น่าจะต้องมีการสืบต่อจริงจัง

  • ดูรายชื่อส่วนขยายในรูปแบบ sitemap ก็ได้
    Firefox Add-ons sitemap,
    Chrome Web Store sitemap,
    และ Edge sitemap ก็อ้างอิงได้เช่นกัน

  • วิดีโอตลกจนถึงกับน้ำตาไหล
    นี่คงเป็นความรู้สึกเวลาคนสูงอายุที่แทบไม่รู้เรื่องคอมพิวเตอร์ท่องเว็บแน่ ๆ อยากให้มีคนทำแบบนี้บน Chrome ด้วย

    • ตอนที่ผู้เขียนรัวกด ปุ่มส่วนขยายปลอม อยู่ 30 วินาที แล้วมารู้ทีหลังว่าจริง ๆ มันเป็นปุ่มที่ส่วนขยายสร้างขึ้นมา ขำมาก แถมมีตั้งสามปุ่ม
    • ส่วนตัวสิ่งที่ขำที่สุดคือ เอฟเฟกต์เสียงท่อเหล็ก อยากรู้จริง ๆ ว่าส่วนขยายไหนเป็นคนใส่มันมา
    • นี่น่าจะกลายเป็น รายงานบั๊กระดับตำนาน ได้เลย
    • ถ้าคนที่ไม่รู้อะไรเลยกด “ใช่/ยอมรับ/ตกลง” กับทุกป๊อปอัป ผลลัพธ์มันก็ต้องออกมาแบบนี้แหละ
    • ไม่รู้ว่าวิดีโออยู่ตรงไหน ลองเลื่อนดูแล้วเห็นแต่ภาพนิ่ง
  • “service mesh นี้ออกแบบมาเกินความจำเป็นสำหรับงานของเรา แต่ broker ก็ช้าเกินไปสำหรับ 84,205 microservices”
    ความตึงเครียดไม่รู้จบ แบบนี้คุ้นเคยเหลือเกิน

  • ทำให้นึกถึง แพ็กเกจ NPM ระดับตำนาน ที่พึ่งพาแพ็กเกจ NPM ทุกตัว
    บทความที่เกี่ยวข้อง นี่อ่านแล้วขำจริง

  • ประโยคที่ว่า “พอติดตั้งส่วนขยายไปแทบทั้งหมดแล้ว สิ่งที่เคยทำมาก่อนหน้านี้ดูงี่เง่าไปเลย” ทำเอาอินมาก
    ฉันเองก็รู้สึกถึง ความว่างเปล่า แบบคล้าย ๆ กัน