สำหรับเจ้าของร้านและผู้ดูแลเว็บไซต์
GadgifyBot
GadgifyBot คือโปรแกรมที่ Gadgify ใช้อ่านหน้าสินค้าสาธารณะของร้านในไทย เพื่อบันทึกราคา หน้านี้อธิบายสิ่งที่โปรแกรมทำจริงในปัจจุบัน
GadgifyBot คืออะไร และอ่านไปทำไม
Gadgify ช่วยคนไทยเลือกหูฟังและดูว่าราคาตอนนี้ดีหรือควรรอ เราจึงต้องรู้ราคาจากร้านต่าง ๆ และเก็บประวัติราคาไว้ GadgifyBot ทำหน้าที่อ่านราคาเหล่านั้น
สิ่งที่อ่าน
- หน้าสินค้าสาธารณะของร้าน อ่านด้วยคำขอ HTTP ปกติ เพื่อเอาราคา ราคาก่อนลด และสถานะมีของจากข้อมูล schema.org JSON-LD ถ้า JSON-LD ไม่ระบุราคา จะอ่านจาก meta tag ราคาของหน้า
- ถ้าอ่านราคาไม่ได้ จะบันทึกว่าไม่มีข้อมูลของรอบนั้น ไม่เดาราคา และไม่บันทึกราคาที่ไม่ใช่เงินบาทเป็นราคาบาท
- sitemap และหน้ารายการสินค้าของร้าน เพื่อหา URL ของหน้าสินค้า อ่านไม่เกิน 500 ลิงก์ และไม่เกิน 5 หน้ารายการต่อแหล่งข้อมูลในหนึ่งรอบ
- หน้าสินค้าที่พบใหม่ จะถูกเปิดในเบราว์เซอร์ Chromium แบบไม่มีหน้าจอ เพื่อเก็บชื่อหน้า ข้อความที่มองเห็น (ไม่เกิน 20,000 ตัวอักษร) ข้อมูล JSON-LD ของสินค้า และภาพหน้าจอเต็มหน้า ไว้ให้ผู้ดูแลของ Gadgify ตรวจก่อนนำสินค้าเข้าแคตตาล็อก
สิ่งที่เก็บ และสิ่งที่ไม่ทำ
- ภาพหน้าจอเก็บในที่เก็บไฟล์แบบส่วนตัวและลบหลัง 7 วัน ข้อความของหน้าเก็บในฐานข้อมูลของเรา ทั้งสองอย่างใช้ให้ผู้ดูแลตรวจเท่านั้น ไม่เผยแพร่ในเว็บไซต์
- ไม่บันทึกไฟล์รูปสินค้าแยกต่างหาก ที่อยู่ของรูปใน JSON-LD ถูกจดเป็นลิงก์เท่านั้น แต่ภาพหน้าจอเป็นภาพของทั้งหน้า จึงมีรูปที่หน้านั้นแสดงอยู่ด้วย
- ไม่เปิดหน้าเว็บของ Shopee และ Lazada ราคาจากสองแพลตฟอร์มนี้มาจาก affiliate API เมื่อได้รับอนุมัติ
- เบราว์เซอร์อยู่ในโฮสต์ของร้านเท่านั้น การเปลี่ยนเส้นทางไปโฮสต์อื่นไม่ถูกตามไป และรูป วิดีโอ ฟอนต์จากโฮสต์อื่นไม่ถูกโหลด
- ถ้าเจอหน้ายืนยันว่าไม่ใช่บอต (เช่น Cloudflare challenge) จะหยุดที่หน้านั้น ไม่พยายามผ่าน ไม่ใช้พร็อกซี และไม่ปลอมเป็นเบราว์เซอร์ทั่วไป
User agent
ทุกคำขอ ทั้งที่อ่านด้วย HTTP และที่เปิดด้วยเบราว์เซอร์ ส่งสตริงนี้ ตัวเลขรุ่นเปลี่ยนตามการอัปเดตของโปรแกรม ลิงก์ในวงเล็บชี้มาที่หน้านี้
GadgifyBot/0.1.0 (+https://heygadgify.com/bot)robots.txt
GadgifyBot อ่าน robots.txt ของแต่ละโฮสต์ก่อนขอหน้าใด ๆ และทำตามกฎ Allow กับ Disallow โดยใช้กฎที่ตรงยาวที่สุด รองรับ * และ $ token ที่ใช้คือ GadgifyBot ไม่แยกตัวพิมพ์เล็กใหญ่ ถ้ามีกลุ่มของ GadgifyBot จะใช้กลุ่มนั้น ถ้าไม่มีจะใช้กลุ่ม *
User-agent: GadgifyBot
Disallow: /User-agent: GadgifyBot
Disallow: /cart/
Disallow: /*?session=User-agent: GadgifyBot
Crawl-delay: 10- robots.txt ถูกจำไว้ 24 ชั่วโมง การแก้ไขอาจมีผลหลังจากนั้น
- ถ้าไม่พบ robots.txt (ตอบ 4xx) ถือว่าไม่มีข้อจำกัด ถ้าตอบ 5xx หรือติดต่อไม่ได้ ถือว่าห้ามอ่านและตรวจใหม่หลัง 15 นาที
- อ่านไฟล์ robots.txt ไม่เกิน 512 KB ส่วนที่เกินไม่ถูกอ่าน
ความถี่และการถอยเมื่อเซิร์ฟเวอร์ช้า
ค่าด้านล่างเป็นค่าที่ตั้งไว้ในโปรแกรมตอนนี้
- คำขอไปโฮสต์เดียวกันทำทีละคำขอ ไม่ขนานกัน
- เว้นอย่างน้อย 1 วินาทีระหว่างสองคำขอไปโฮสต์เดียวกัน ถ้า robots.txt ระบุ Crawl-delay ที่นานกว่า จะใช้ค่านั้น
- ถ้า Crawl-delay เกิน 60 วินาที จะไม่อ่านโฮสต์นั้นแทนการรอ
- หน้าสินค้าแต่ละหน้าที่ Gadgify ติดตามอ่านวันละครั้ง ใน 7 วันก่อนวันเซลใหญ่อ่านทุก 6 ชั่วโมง และในวันเซลอ่านทุกชั่วโมง ถ้าอ่านไม่สำเร็จ จะลองอีกครั้งหลังจากนั้นประมาณหนึ่งนาที ก่อนบันทึกว่าไม่มีข้อมูล
- คำขอที่ไม่มีคำตอบภายใน 20 วินาทีจะถูกยกเลิก ตัวหน้าที่ใหญ่เกิน 5 MB ไม่ถูกใช้
- ถ้าได้สถานะ 429 หรือ 5xx หมดเวลา หรือเครือข่ายขัดข้อง จะลองซ้ำได้รวมสูงสุด 3 ครั้ง (นับครั้งแรก) ช่วงรอเพิ่มเป็นสองเท่าทุกครั้ง เริ่มราว 1 วินาที สูงสุด 30 วินาที และสุ่มเวลาเล็กน้อย
- ถ้าเซิร์ฟเวอร์ส่ง Retry-After มา จะรอตามนั้น ถ้านานเกิน 60 วินาที จะหยุดแทนการรอ
- สถานะ 4xx อื่น ๆ ไม่ถูกลองซ้ำ การเปลี่ยนเส้นทางตามได้ไม่เกิน 5 ครั้ง และตรวจทุกครั้ง
การปฏิเสธ AI ที่ทำตาม
ถ้า robots.txt ของโฮสต์แสดงว่าไม่ต้องการให้ AI อ่าน GadgifyBot จะไม่อ่านโฮสต์นั้นทั้งโฮสต์ แม้ GadgifyBot ไม่ได้ใช้ข้อมูลฝึกโมเดล เราถือว่านี่คือการปฏิเสธ ปัจจุบันตรวจสองสัญญาณนี้
- กลุ่ม User-agent ของบอต AI ที่รู้จัก ซึ่งมี Disallow: / ชื่อที่ตรวจ ได้แก่anthropic-ai, claudebot, claude-web, claude-user, gptbot, chatgpt-user, oai-searchbot, ccbot, google-extended, applebot-extended, perplexitybot, bytespider, amazonbot, ai2bot, cohere-ai, diffbot, imagesiftbot, omgili
- บรรทัด Content-Signal: ai-train=no
สัญญาณอื่น เช่น meta tag หรือ X-Robots-Tag ยังไม่ถูกตรวจ
IP address
GadgifyBot ไม่ได้อ่านจาก IP address ที่คงที่ เราจึงไม่มีรายการ IP ให้ตรวจ user agent ปลอมได้ ถ้าสงสัยว่าคำขอใดไม่ได้มาจากเรา ให้อีเมลหาเราพร้อมเวลาและ URL ที่ถูกขอ เราจะตอบว่าใช่หรือไม่
ร้านที่ไม่ต้องการให้อ่าน หรืออยากส่งข้อมูลเอง
ร้านที่ไม่ต้องการให้อ่านใส่ Disallow ใน robots.txt ตามตัวอย่างข้างบน GadgifyBot จะหยุดเมื่อครบ 24 ชั่วโมงที่จำค่าเดิมไว้ เมื่อร้านบล็อก เราไม่หาวิธีอื่นอ่านหน้านั้น ร้านที่อยากให้ราคาปรากฏบน Gadgify แต่ไม่ให้อ่านหน้าเว็บ สามารถส่งไฟล์ข้อมูลสินค้า (feed) หรือขอร่วมงานกับเราได้
ติดต่อ
คำถาม คำขอให้หยุด หรือข้อมูลที่ผิด ส่งมาที่อีเมลนี้