วิธีหลีกเลี่ยงการตรวจจับบอตขณะทำเว็บครอว์ลิง
(piprogramming.org)อ้างอิงจาก Selenium แต่สามารถนำไปปรับใช้กับที่อื่นได้เช่นกัน
-
ลบแฟลก
Navigator.Webdriver -
ลบสตริงบางตัวออกจาก ChromeDriver / GeckoDriver
-
เปลี่ยนความละเอียด, User-Agent เป็นต้น
-
ใช้ URL flow จริง หลีกเลี่ยงการเข้าลิงก์ที่มองไม่เห็น
-
ใช้ Proxy เพื่อเปลี่ยน IP
-
ใช้ค่าหน่วงเวลาแบบสุ่ม
-
อย่าใช้เบราว์เซอร์แบบ headless (ตรวจสอบได้โดยเช็ก Notification Permission)
2 ความคิดเห็น
ในกรณีข้อ 1 สำหรับ Puppeteer มีบางที่ที่แค่ตั้งค่าเป็น true/false ก็ยังถูกตรวจจับว่าเป็นบอท
ดังนั้นลบพร็อพเพอร์ตีออกไปเลยแบบด้านล่างจะดีกว่า
const newProto = navigator.proto;
delete newProto.webdriver;
navigator.proto = newProto;
นั่นเป็นประเด็นที่ดี :) ฉันได้แทนที่โค้ดแล้ว