PriceBuddy 0.2.0 — จับคู่สินค้าแม่นขึ้น และเทียบราคาต่อหน่วยได้
สองปัญหาที่เจอจากการใช้งานจริงคือ ถูกบล็อกบ่อยขึ้น และ จับคู่สินค้าผิดรุ่น รีลีสนี้แก้ทั้งสองเรื่อง
เทียบราคาต่อหน่วยได้แล้ว
ปัญหาคลาสสิกของการเทียบราคา — คู่แข่งขายยกลัง 200 ใบราคา 3,750 บาท ส่วนเราขายใบเดียว 34 บาท ถ้าเทียบราคาป้ายกันตรง ๆ ก็ดูเหมือนเราถูกกว่ามาก ทั้งที่จริงคู่แข่งตกใบละ 18.75 บาท คือถูกกว่าเราเกือบครึ่ง
อ่านจำนวนต่อแพ็กจากชื่อสินค้า
ระบบอ่านจำนวนต่อแพ็กจากชื่อสินค้าได้เอง — “ลัง 200 ใบ” ได้ 200, “แพ็คคู่ 2 ชิ้น” ได้ 2
ความยากอยู่ที่การไม่สับสนกับตัวเลขอื่นในชื่อสินค้า เช่นขนาดสินค้า (100x3x16 มม.) หรือเลขรุ่น ซึ่งถ้าอ่านผิดจะทำให้ราคาต่อหน่วยเพี้ยนไปคนละเรื่อง ตัวอ่านนี้ถูกใส่ไว้ที่จุดเดียวแล้วมีผลกับทุกช่องทางที่ดึงข้อมูลเข้ามา รวมถึงข้อมูลที่ AI อ่านมาด้วย
เทียบด้วยราคาต่อหน่วย
เมื่อรู้จำนวนต่อแพ็กแล้ว ระบบจะเทียบด้วยราคาต่อหน่วยแทนราคาป้าย ทำให้แพ็กไม่เท่ากันเทียบกันได้อย่างยุติธรรม
จับคู่ด้วยรหัสรุ่น
ระบบอ่านและเทียบรหัสรุ่นจากชื่อสินค้าได้ โดยมีกฎการเทียบที่ผ่านการพิสูจน์กับข้อมูลจริงแล้ว
- ตัดส่วนต่อท้ายที่ไม่ใช่รุ่น —
GC120BFL27ถูกอ่านเป็นรุ่นGC120 - เข้าใจการเรียกแบบไทย — “เบอร์ 120” ถูกมองว่าเป็นเลขรุ่น 120 ที่ตรงกับรุ่นไหนก็ได้ที่ลงท้ายด้วย 120
- เลขรุ่นต้องตรงเสมอ —
GC120ไม่ใช่GC60 - ตัวอักษรนำหน้าต้องตรงถ้าทั้งสองฝั่งระบุมา —
GC120ไม่ใช่CG120
รหัสรุ่นถูกใช้เป็นตัวชี้ขาดสองจุด — ตอนแยกว่าตัวเลือกไหนในหน้าเดียวกันคือตัวที่ใช่ และตอนเสนอคู่แข่งใหม่ โดยเรียงความน่าเชื่อถือเป็น บาร์โค้ด → ยี่ห้อ+รหัสรุ่น → ยี่ห้อ+ชื่อ ผลคือคู่แข่งคนละรุ่นถูกตัดออกตั้งแต่ต้น
เสนอทุกแพ็กของรุ่นที่ตรง
เมื่อคู่แข่งลงขายหลายแพ็กของรุ่นเดียวกัน ระบบจะเสนอทุกแพ็กให้จับคู่ เพราะเทียบราคาต่อหน่วยข้ามขนาดแพ็กได้แล้ว ส่วนกรณีที่คู่แข่งมีรหัสรุ่นแต่ไม่ตรงจะไม่เสนอเลย และถ้าไม่มีรหัสรุ่นให้เทียบก็เสนอแค่ตัวที่ใกล้เคียงที่สุดตัวเดียว กันการเสนอมั่ว
เลิกลงโทษแพ็กต่างขนาด
เดิมถ้าจำนวนต่อแพ็กไม่ตรงกัน ระบบจะถือว่าไม่ใช่สินค้าเดียวกันเลย ตอนนี้เมื่อเทียบราคาต่อหน่วยได้แล้ว จำนวนต่อแพ็กจึงเปลี่ยนจากตัวตัดสินมาเป็นแค่ตัวช่วยเลือกเมื่อคะแนนเท่ากัน
เลือกได้ว่าจะติดตามตัวเลือกไหน
สินค้าคู่แข่งหนึ่งหน้ามักรวมหลายตัวเลือกไว้ด้วยกัน ในขณะที่สินค้าของเราคือตัวเลือกเดียวในนั้น ตอนนี้เลือกได้ว่าจะให้เทียบเฉพาะตัวเลือกที่คุณสนใจ พร้อมแก้ปัญหาที่ระบบเคยหยิบตัวเลือกแรกมาเป็นราคาของเราแบบสุ่ม ๆ
รับมือระบบป้องกันของเว็บใหญ่
เดาได้ว่าเจอระบบป้องกันยี่ห้อไหน
แยกแยะได้ว่าติดที่ Cloudflare, DataDome, Akamai, PerimeterX หรือระบบของ Shopee/Lazada เอง และจำแนกอาการออกเป็น 10 ประเภท เช่นถูกจำกัดจำนวนครั้ง ติดด่านตรวจ ติด captcha ต้องล็อกอิน หรือหน้าเว็บเปลี่ยนโครงสร้าง แต่ละแบบมีวิธีแก้ต่างกัน
ไล่ระดับการแก้จากถูกไปแพง
เมื่อรู้ว่าเจออะไร ระบบจะไล่วิธีแก้ตามลำดับต้นทุน — สลับ IP → รีเฟรชตัวตน → ชะลอความเร็ว ถ้ายังไม่ผ่านจึงยกระดับไปใช้บริการเบราว์เซอร์ภายนอกที่ผ่านด่านได้แต่มีค่าใช้จ่ายสูงกว่ามาก
พร้อมมีโหมดพัฒนาที่ปิดวิธีที่เสียเงินไว้ตอนทดสอบ กันค่าใช้จ่ายบานปลายระหว่างพัฒนา ซึ่งเป็นบทเรียนที่หลายทีมได้มาแบบเจ็บตัว
รองรับ proxy ที่ต้องยืนยันตัวตน
รองรับรูปแบบการตั้งค่า proxy หลายแบบ โดยแยกรหัสผ่านออกจากที่อยู่เซิร์ฟเวอร์ เพื่อไม่ให้รหัสผ่านหลุดไปอยู่ในบันทึกเหตุการณ์หรือผลลัพธ์ พร้อมรองรับ proxy ที่ตรวจการเชื่อมต่อแบบเข้ารหัส
หา API ราคาของเว็บใหม่ได้เอง
เพิ่มเครื่องมือที่คอยดักดูว่าหน้าเว็บเรียกข้อมูลราคาจากที่ไหน แล้วให้คะแนนว่าช่องทางไหนน่าจะเป็นแหล่งราคาจริง โดยให้น้ำหนัก API จริงมากกว่าไฟล์ประกอบหน้าเว็บ
ที่สำคัญคือมันแยก “เว็บนี้ไม่มี API” ออกจาก “เจอ API แล้วแต่ถูกบล็อก” ได้ ซึ่งเป็นคนละปัญหาและแก้คนละวิธี ผลคือเพิ่มรองรับเว็บใหม่ได้เร็วขึ้นมาก
ดูสถิติการถูกบล็อกแยกตามเว็บ
นับการถูกบล็อกโดยแยกตามแพลตฟอร์ม ยี่ห้อระบบป้องกัน และประเภทอาการ ทีมงานจึงเห็นภาพว่าเว็บไหนโดนป้องกันแบบไหนบ่อย และควรลงแรงแก้ตรงไหนก่อน
รองรับร้านเพิ่ม
- Global House — ดึงจากช่องทางข้อมูลสินค้าของเว็บโดยตรง
- ร้านทั่วไปที่ฝังข้อมูลแบบ microdata — อีกรูปแบบมาตรฐานหนึ่งที่เว็บไทยหลายเจ้าใช้
- เปลี่ยนตัวอ่านทั่วไปให้ไล่ลองหลายวิธีต่อกัน ทำให้ร้านที่ยังไม่มีตัวอ่านเฉพาะก็ยังพอดึงราคาได้
ช่วย AI อ่านหน้าเว็บได้ดีขึ้น
ก่อนส่งหน้าเว็บให้ AI อ่าน ระบบจะตัดโค้ดและส่วนตกแต่งที่ไม่เกี่ยวข้องออกก่อน แต่เก็บส่วนที่มักมีข้อมูลราคาไว้ ผลคือหน้าเว็บที่มีโค้ดเยอะ ๆ ยังส่งเนื้อหาจริงเข้าไปได้ครบ และประหยัดค่าใช้จ่ายต่อครั้งด้วย
ติดตามราคาคู่แข่ง ปรับกลยุทธ์ได้ทัน