← Blog

PriceBuddy 0.1.0 — ระบบเต็มรูปแบบ ตั้งแต่ดึงราคาจนถึงเก็บเงิน

รีลีส 0.1.0 คือก้าวจาก “ต้นแบบที่ทำงานได้” มาเป็น “ระบบที่เปิดให้คนใช้จริงได้” มีงานเพิ่มเข้ามาหลายสิบเรื่องภายในรีลีสเดียว ขอสรุปเป็นกลุ่มใหญ่

ตัวดึงราคาที่ทนทานขึ้นมาก

เว็บใหญ่ ๆ มีระบบป้องกันการดึงข้อมูล งานส่วนนี้จึงเป็นหัวใจของทั้งผลิตภัณฑ์

รู้ตัวเมื่อโดนบล็อก

ตรวจจับได้ว่ากำลังโดนบล็อกจากสัญญาณหลายอย่าง — รหัสตอบกลับที่บอกว่าถูกจำกัดจำนวนครั้งหรือถูกปฏิเสธ หน้าจอ captcha และเส้นทางที่ถูกเปลี่ยนไปหน้าอื่น การแยกแยะนี้สำคัญเพราะ “โดนบล็อก” กับ “หน้าเว็บเปลี่ยนโครงสร้าง” ต้องแก้คนละวิธี

ไล่ทางเลือกตามต้นทุน

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

เลียนแบบพฤติกรรมคน

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

ตัวตนคงที่ต่อแพลตฟอร์ม

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

สลับ IP อัตโนมัติพร้อมตัดตัวที่มีปัญหา

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

ให้ AI ช่วยอ่านหน้าเว็บ

ถ้าตัวอ่านปกติแกะราคาไม่ออกทั้งที่หน้าเว็บโหลดได้ปกติ (ไม่ได้ถูกบล็อก) ระบบจะส่งเนื้อหาหน้าเว็บให้ AI ช่วยอ่าน วิธีนี้ทำให้รองรับเว็บที่ยังไม่เคยเขียนตัวอ่านเฉพาะไว้ได้ทันที

เก็บหลักฐานเมื่อล้มเหลว

เมื่อดึงไม่สำเร็จ ระบบจะบันทึกหน้าเว็บและภาพหน้าจอเก็บไว้ แล้วแนบไปกับผลลัพธ์ ทีมงานจึงไล่ปัญหาย้อนหลังได้จริงว่าตอนนั้นหน้าเว็บหน้าตาเป็นอย่างไร แทนที่จะเห็นแค่ข้อความว่า “ล้มเหลว”

รองรับร้านหลายแบบ

  • Shopee — ดักจับข้อมูลที่หน้าเว็บเรียกเอง พร้อมทางสำรองคือยิงขอข้อมูลเองในบริบทของหน้า
  • ร้านที่ใช้ Shopify — ดึงจากช่องทางมาตรฐานที่ทุกร้าน Shopify มีเหมือนกัน
  • ร้านทั่วไป — อ่านจากข้อมูลสินค้าแบบมาตรฐานที่เว็บส่วนใหญ่ฝังไว้เพื่อให้ Google อ่าน

ลองใหม่และคิวงานที่ล้มเหลว

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

วัดผลได้

บันทึกเวลาที่ใช้ดึงและ IP ที่ใช้ในทุกครั้ง ทำให้ตอบได้ว่าเว็บไหนช้า IP ชุดไหนมีปัญหา และเพิ่มชุดทดสอบที่รันกับหน้าเว็บจำลองจริง

ทำงานแทนคุณอย่างฉลาดขึ้น

จัดคิวเช็กราคาตามความสำคัญ

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

ไม่ใช้เกินงบ

ก่อนสั่งเช็กแต่ละครั้ง ระบบตรวจว่ายังอยู่ในงบที่เจ้าของบัญชีจ่ายได้หรือไม่ กันกรณีที่ราคาผันผวนหนักแล้วระบบไล่เช็กจนเครดิตหมดในรอบเดียว

เตือนล่วงหน้าเมื่อจับแพตเทิร์นได้

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

แจ้งเตือนตามกฎที่คุณตั้ง

เดิมแจ้งเข้า LINE อย่างเดียวแบบตายตัว ตอนนี้จับคู่เหตุการณ์กับเงื่อนไขที่ผู้ใช้ตั้งไว้ และเลือกช่องทางตามความรุนแรง พร้อมเก็บประวัติว่าส่งอะไรไปแล้วบ้างเฉพาะที่ส่งจริง

ช่วยหาคู่แข่งให้

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

แนะนำราคา

คำนวณราคาที่ต่ำกว่าคู่แข่งที่ถูกที่สุดซึ่งยังมีของในสต๊อก (ค่าเริ่มต้น 1%) พร้อมมีราคาพื้นกันไม่ให้ไหลลงจนขาดทุน และรองรับการเขียนราคากลับไปที่ร้าน

เทียบราคา 3 มุมและสินค้าที่ขยับแรง

เทียบทั้งราคาป้ายและราคาต่อหน่วยต่อคู่ที่จับได้ พร้อมจัดอันดับสินค้าที่ราคาขยับมากที่สุดในรอบ 7 วัน ให้เห็นว่าควรสนใจตัวไหนก่อน

ส่วนขยายบนเบราว์เซอร์

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

เปิด API ให้ระบบอื่นต่อได้

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

ระบบเก็บเงิน

  • เชื่อม Stripe จริง สำหรับเติมเครดิตและคืนเงิน
  • รองรับ PromptPay — สำคัญมากสำหรับตลาดไทยที่คนจำนวนมากไม่ใช้บัตรเครดิต
  • คิดเงินเมื่อสำเร็จเท่านั้น — แก้ปัญหาที่ลูกค้าเสียเครดิตฟรีเมื่อการดึงราคาล้มเหลว ซึ่งเป็นเรื่องที่ลูกค้ารับไม่ได้และถูกต้องแล้วที่จะรับไม่ได้
  • คืนเงินแบบคิดตามสัดส่วน — คืนเฉพาะเครดิตที่ยังไม่ได้ใช้ ภายใน 14 วัน
  • จัดการกรณีลูกค้าโต้แย้งรายการบัตร — รับเหตุการณ์จาก Stripe แล้วจัดการต่ออัตโนมัติ แทนที่จะแค่บันทึกไว้เฉย ๆ

ความปลอดภัยและ PDPA

  • ยืนยันตัวตนสองชั้น ด้วยแอป authenticator พร้อม QR สำหรับผูกเครื่อง
  • ล็อกบัญชีชั่วคราว 15 นาทีหลังกรอกรหัสผ่านผิดครบ 5 ครั้ง เสริมกับการจำกัดจำนวนครั้งต่อ IP
  • รีเซ็ตรหัสผ่านทางอีเมล — ตอบผลลัพธ์เหมือนกันเสมอไม่ว่าอีเมลนั้นจะมีบัญชีหรือไม่ กันการสุ่มหาว่าใครเป็นสมาชิก
  • เข้าสู่ระบบด้วย Google หรือ LINE
  • แยกสิทธิ์ผู้ใช้ทั่วไปกับผู้ดูแลระบบ — เลิกใช้วิธีเทียบรายชื่ออีเมล เปลี่ยนเป็นสิทธิ์ที่เก็บกับบัญชีจริง
  • จำกัดจำนวนครั้งที่หน้าเข้าสู่ระบบ 10 ครั้งต่อนาทีต่อ IP
  • ปฏิเสธการเริ่มระบบถ้ากุญแจลับยังเป็นค่าตัวอย่าง — กันความผิดพลาดที่ร้ายแรงที่สุดคือขึ้นระบบจริงด้วยกุญแจที่ใคร ๆ ก็เดาได้
  • ตั้งค่าความปลอดภัยของหน้าเว็บ — กันการฝังสคริปต์แปลกปลอมและกันการถูกเอาหน้าเว็บไปซ้อนหลอกผู้ใช้
  • ขอลบบัญชีและข้อมูลได้ ตามสิทธิ์ใน PDPA
  • กลบข้อมูลส่วนตัวในบันทึกเหตุการณ์ — อีเมล เบอร์โทร กุญแจ และโทเคน ถูกปิดบังอัตโนมัติก่อนบันทึก เพราะบันทึกเหตุการณ์คือที่ที่ข้อมูลส่วนตัวรั่วบ่อยที่สุดโดยไม่มีใครตั้งใจ
  • หน้าเอกสารกฎหมายครบชุด — กฎการใช้งาน นโยบายความเป็นส่วนตัว และนโยบายคุกกี้พร้อมตารางอธิบายคุกกี้แต่ละประเภท

ระบบหลังบ้านสำหรับทีมงาน

สร้างหน้าจอสำหรับทีมดูแลระบบขึ้นมาใหม่ทั้งชุด แทนหน้าเปล่าที่มากับเครื่องมือ แบ่งเป็น 4 ด้าน

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

สวิตช์ปิดฉุกเฉิน

ตั้งสวิตช์ปิดการทำงานบางส่วนได้ทันทีเมื่อมีปัญหา — เช่นปิดการแนะนำราคา ปิดตัวจัดคิว หรือปิดการแจ้งเตือน โดยตัวทำงานเบื้องหลังอ่านค่าเหล่านี้จริง ไม่ใช่ตั้งได้แต่ไม่มีผลเหมือนเดิม

งานพื้นฐานที่มองไม่เห็นแต่สำคัญ

  • รหัสข้อผิดพลาดกลาง — เห็นรหัสแล้วรู้ทันทีว่าปัญหามาจากส่วนไหน
  • รหัสติดตามต่อคำขอ — ผูกทุกบันทึกเหตุการณ์ของคำขอเดียวกันเข้าด้วยกัน ไล่ปัญหาข้ามบริการได้
  • ข้อผิดพลาดตอบกลับในรูปแบบมาตรฐาน พร้อมรหัสติดตาม
  • จุดตรวจสุขภาพสองแบบ — แยก “โปรแกรมขึ้นแล้ว” ออกจาก “พร้อมรับงานจริง (ต่อฐานข้อมูลได้)”
  • ย้ายสถานะที่ต้องใช้ร่วมกันไป Redis — การล็อกบัญชีและสถานะการแจ้งเตือนเดิมเก็บในหน่วยความจำของแต่ละเครื่อง ทำให้เมื่อรันหลายเครื่องพร้อมกันจะทำงานไม่ตรงกัน
  • รับ webhook จาก Stripe, LINE และ SendGrid พร้อมตรวจลายเซ็นว่ามาจากผู้ส่งจริง
  • เก็บอีเมลผู้สนใจและแบบสอบถามความพึงพอใจ — พร้อมงานประเมินสุขภาพบัญชีและตามลูกค้าที่ห่างหายกลับมา
  • ระบบทดสอบอัตโนมัติและ CI ครั้งแรกของโปรเจกต์ — ทุกการแก้ไขถูกตรวจอัตโนมัติก่อนรวมเข้าสายหลัก
PriceBuddy

ติดตามราคาคู่แข่ง ปรับกลยุทธ์ได้ทัน

ดูรายละเอียด →

อ่านต่อ

PriceBuddy

PriceBuddy 0.2.0 — จับคู่สินค้าแม่นขึ้น และเทียบราคาต่อหน่วยได้

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

PriceBuddy

PriceBuddy — เฝ้าดูราคาคู่แข่งให้อัตโนมัติ

ระบบติดตามราคาสินค้าของคู่แข่ง แจ้งเตือนเมื่อราคาขยับ พร้อมประวัติและแนวโน้ม เพื่อให้ตั้งราคาบนข้อมูลจริงแทนการเดา

PriceBuddy

PriceBuddy เริ่มต้น — จาก PoC สู่โครงระบบติดตามราคา

งานช่วงแรกของ PriceBuddy — ทดลองดึงราคาจาก Lazada และ Shopee ให้ได้จริงพร้อมวัดต้นทุนต่อครั้งก่อน แล้วค่อยวางโครงระบบ 10 โปรเจกต์ ฐานข้อมูล คิวงาน และแดชบอร์ด