ย้อนกลับ
summarize รายงานสรุปโครงการฉบับสมบูรณ์

Crawler & Analysis: weschooldownload

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

69โฟลเดอร์ที่ไต่
183ไฟล์ไม่ซ้ำที่โหลด
6.55 GBขนาดข้อมูลรวม
69คู่มือ PDF วิเคราะห์
6 + 2ระบบหลัก + รุ่นเก่า
3ข้อด้อยระดับวิกฤต
flag

เป้าหมายของโครงการ

โจทย์เริ่มต้นคือเขียนโปรแกรม JavaScript ไต่หน้า Apache/IIS directory listing ที่ https://www.bookmarkpro2.online/weschooldownload/ ไล่ทุกโฟลเดอร์ ดาวน์โหลดไฟล์ที่ไม่ซ้ำกัน และสร้างผังต้นไม้ (tree) ของทุกอย่างให้สวยงามด้วยดีไซน์ Material 3 Expressive + Google Sans

ระหว่างทางขอบเขตขยายขึ้นเรื่อย ๆ ตามที่คุยกัน: จากโหลดเฉพาะ PDF → รวมไฟล์ทั้งหมดไว้โฟลเดอร์เดียว → โหลดไฟล์ทุกประเภท → วิเคราะห์เนื้อหาคู่มือเพื่อสรุปว่ามีกี่ระบบและทำอะไรได้ → ประเมินข้อด้อยของระบบ และรายงานฉบับนี้

timeline

ลำดับงานที่ทำร่วมกัน

code

ตัวโปรแกรมที่สร้าง

เขียนด้วย Node.js ล้วน ไม่ต้องลง dependency ภายนอก (ใช้ fetch, crypto, fs ในตัว)

travel_explore crawler.js — ตัวไต่เว็บ

account_tree build-html.js — สร้างผังต้นไม้

analytics

ผลการไต่เว็บ

รายการรอบ PDF อย่างเดียวรอบไฟล์ทุกประเภท
โฟลเดอร์ที่สำรวจ6969
ไฟล์ที่พบทั้งหมด73 (PDF)223 (PDF 73)
ได้มาไม่ซ้ำกัน69 ไฟล์ · 301.8 MB183 ไฟล์ · 6.55 GB
ไฟล์เนื้อหาซ้ำ (ข้าม)434
โหลดไม่ได้0 (หลังแก้บั๊ก)6 (ปัญหาฝั่งเซิร์ฟเวอร์)
เวลาที่ใช้~112 วินาที~872 วินาที

content_copy การกันซ้ำได้ผลจริง

พบไฟล์เนื้อหาซ้ำ 34 ไฟล์ เช่น AccessRuntime_2013_x86_en-us.exe (236 MB) ซ้ำถึง 8 ที่ — การเช็ค SHA-256 ช่วยประหยัดพื้นที่ไปเกือบ 2 GB

error_outline 6 ไฟล์ที่โหลดไม่ได้ = ปัญหาฝั่งเซิร์ฟเวอร์

ตรวจสอบยืนยันแล้วว่าไม่ใช่บั๊กของเรา: ไฟล์ rarreg.key / winrar.lng (4 ไฟล์) เซิร์ฟเวอร์ตอบ 404 ทั้งที่มีชื่อใน listing — และไฟล์ shortcut .url 2 ไฟล์ที่ชื่อบนเซิร์ฟเวอร์เป็น encoding เพี้ยน (mojibake) ตอบ HTTP 400

folder_open

ไฟล์ทั้งหมดที่ได้

terminal
crawler.js
ตัวไต่เว็บ + ดาวน์โหลด + กันซ้ำ
terminal
build-html.js
ตัวสร้างผังต้นไม้ HTML
folder
downloads/
183 ไฟล์ตามโครงสร้างเว็บเดิม · 6.55 GB
folder_zip
all-pdfs/
69 PDF รวมโฟลเดอร์เดียว
account_tree
tree.html
ผังไฟล์ interactive
data_object
tree.json
ข้อมูลดิบของผัง
description
system.html
สรุป 6+2 ระบบ พร้อมแผนผัง
description
สรุประบบ-WeSchool.md
รายงานสรุประบบ (Markdown)
summarize
รายงานสรุปโครงการ.html
รายงานฉบับนี้
hub

สรุประบบที่พบ: 6 หลัก + 2 รุ่นเก่า

ทั้งหมดเป็นชุดซอฟต์แวร์งานทะเบียน–วัดผลโรงเรียนของ WeSchool Team เป็นโปรแกรม Windows ฐานข้อมูล Microsoft Access (ต้องใช้ Access Runtime) บางส่วนเป็นเว็บ (IIS/ASP.NET) ทุกอย่างหมุนรอบระบบหลักคือ Secondary'56

2 · FreshyPro รับสมัครนักเรียนใหม่ BookMark2551 สมุดคะแนนครู (ออฟไลน์) 5 · BookMarkPro Online กรอกคะแนนผ่านเว็บ 1 · Secondary'56 ทะเบียน–วัดผลมัธยม (ตัวหลัก) ส่งออกราชการ GPAX → OBEC (TCAS) ปพ.3 ออนไลน์ รายชื่อสอบ O-NET โอนนักเรียน แยก/รวมแฟ้ม Export/Import ส่งออก
#ระบบหน้าที่หลัก
1Secondary'56 Plusตัวหลัก — ทะเบียน–วัดผลมัธยม ม.1–ม.6: ระเบียนนักเรียน/ครู, วัดผลรวม, จบ+โอน O-NET, ส่ง GPAX (TCAS), ปพ.3 ออนไลน์, พิมพ์ ปพ.1/2/3 + โมดูล BookMark, PIS_Checkin, Mackerel, Web Module
2FreshyPro + Freshy Webรับสมัครนักเรียนใหม่ ม.1/ม.4 ครบวงจร: สมัครออนไลน์ → คัดเลือก → ลงเลขประจำตัว → โอนเข้า Secondary'56
3Student2551Juniorเวอร์ชันประถม ครบวงจรในตัวเอง (วัดผลรายปี, จบ ป.6, ปพ.3 ระดับประถม)
4Secondary'56 Pro (PKK)Secondary'56 สายแยกตระกูล Pro ฟังก์ชันเดียวกัน แยกชุดติดตั้ง/อัปเดต
5Student2551DG + Onlineสะพานเชื่อมคลาวด์ — ส่งข้อมูลขึ้น bookmarkpro.online/dograde.online ให้ครูกรอกคะแนนผ่านเว็บ แล้ว Export กลับ (อัปเดตล่าสุดสุด 09/06/2569)
6Student2544 / Student2551V2รุ่นเก่า (legacy) ยุคหลักสูตร 2544 และ V2 — มีแต่ตัวติดตั้ง เก็บไว้ย้อนดูข้อมูล
info
ดูรายละเอียดแต่ละระบบเต็ม ๆ ที่ system.html · โครงสร้างไฟล์ทั้งหมดที่ tree.html
warning

ข้อด้อยของระบบ (จัดอันดับความรุนแรง)

storage ① ฐานข้อมูล Microsoft Access — รากของความเปราะ

เป็นฐานข้อมูลแบบไฟล์เดียว ไม่ใช่ client–server การเขียนไม่ atomic จริง ถ้าถูกขัดจังหวะ (ไฟดับ/เน็ตกระตุก) ไฟล์ corrupt ทั้งก้อน มีเพดาน 2 GB และรองรับผู้ใช้พร้อมกันจำกัด — หลักฐานคือทุกระบบมีคู่มือ "Repair Database" เป็นกิจวัตร

lan ② แชร์ไฟล์ Access ผ่าน LAN — เร่งให้ ① พังเร็ว

วางไฟล์บนเครื่องหนึ่งแล้วแชร์ให้เครื่องอื่นเปิดผ่าน SMB การล็อกพึ่ง file locking ของ Windows — แพ็กเก็ตหายจังหวะ commit = corrupt ทันที ยิ่งคนใช้มากยิ่งช้าทวีคูณ (ไม่มี server-side query)

lock ③ ความปลอดภัยข้อมูลนักเรียน (PII) — หลายชั้นพร้อมกัน

เก็บข้อมูลส่วนบุคคลของเด็ก (PDPA) แต่ไม่มีมาตรการคุ้มครองที่เหมาะสม

schedule ④ License แบบหมุนเวลาเครื่อง

เมื่อผู้ใช้ Registrar หมดอายุ คู่มือบอกให้ ปรับนาฬิกา Windows ย้อนหลัง — ทำให้วันที่ในข้อมูล (เวลาเรียน/วันออกเอกสาร) เพี้ยน และสะท้อนว่ากลไก license ออกแบบผิดหลัก (อิงเวลา client ล้วน)

account_tree ⑤ ระบบแตกกระจาย ขนข้อมูลด้วยมือ

6 ระบบทับซ้อนกัน แยกชุดติดตั้ง/โฟลเดอร์ ข้อมูลต้องโอนข้ามระบบด้วยมือตลอด (Import/Export) → เกิดข้อมูลไม่ตรงกัน ไม่มี single source of truth

build ⑥ อัปเดต/สำรองพึ่งวินัยคน  ·  ⑦ เทคโนโลยีหมดอายุ

อัปเดต = ก๊อปไฟล์ทับเอง ไม่มี rollback · path ฮาร์ดโค้ด C:\Student2551_V3 · สำรองพึ่งคนจำ · ผูกกับ Access Runtime, Windows Server 2012 (หมดซัพพอร์ตแล้ว), Windows-only · แถม WinRAR พร้อม license key (เสี่ยงลิขสิทธิ์)

#ข้อด้อยความรุนแรงประเภท
①ฐาน Access เปราะ/corrupt ง่าย🔴 สูงสุดสถาปัตยกรรม
②แชร์ไฟล์ Access ผ่าน LAN🔴 สูงสถาปัตยกรรม
③ความปลอดภัย PII🔴 สูงความปลอดภัย+กฎหมาย
④License หมุนเวลาเครื่อง🟠 กลาง-สูงออกแบบผิดหลัก
⑤ระบบแตกกระจาย🟠 กลางบำรุงรักษา
⑥อัปเดต/สำรองพึ่งคน🟠 กลางบำรุงรักษา
⑦เทคโนโลยีหมดอายุ + ลิขสิทธิ์🟡 กลาง-ต่ำความยั่งยืน
lightbulb
แก่นของปัญหา: สามข้อแรกเป็นลูกโซ่ — Access (①) บน LAN (②) ทำให้ข้อมูลเปราะ ส่วนชั้นความปลอดภัย (③) ทำให้ข้อมูลที่เปราะนั้นยังไม่ปลอดภัย จุดที่แก้คุ้มที่สุดคือย้ายฐานข้อมูลจาก Access ไปเป็น client–server จริง (SQL Server/PostgreSQL) ซึ่งแก้ ① ② และส่วนหนึ่งของ ⑤ ไปพร้อมกัน
info
ข้อจำกัดของการประเมิน: วิเคราะห์จากคู่มือและโครงสร้างไฟล์ ไม่ได้รันโปรแกรมจริงหรือดูซอร์สโค้ด — ข้อ ③ เรื่องการป้องกันหน้า Admin เป็นการอนุมานจากที่คู่มือบรรยายขั้นตอน