ถ้าอยากทำ Web Scraping แบบบริษัทใหญ่ ๆ (2021)
(incolumitas.com)Here is a summary of the key points from the article in Korean, formatted as a markdown bullet list:
การสร้างโครงสร้างพื้นฐานสำหรับการสครัปขนาดใหญ่
- ใช้ Headless Chrome บน AWS Lambda เพื่อสครัป Google SERP หลายล้านรายการต่อสัปดาห์
- เรียกใช้ฟังก์ชัน Lambda 3 ครั้งก็สามารถรับ public IP ใหม่ได้
- หากเรียกใช้ Lambda 1000 ฟังก์ชันพร้อมกัน จะสามารถใช้ public IP ได้ราว 250 รายการ
- หากใช้ 16 รีเจียน จะสามารถใช้ public IP ได้ราว 4000 ที่อยู่
- แต่วิธีนี้ใช้ได้เฉพาะกับเว็บไซต์อย่าง Google, Bing, Amazon เท่านั้น และใช้ไม่ได้กับเว็บไซต์ที่ใช้โซลูชันแอนตีบอตอย่าง DataDome, Akamai, Imperva
- โซลูชันแอนตีบอตใช้เทคนิคหลากหลาย เช่น browser fingerprinting, การตรวจจับการโกหก, การตรวจจับพฤติกรรมที่ต่างจากมนุษย์
- สาเหตุที่หลบเลี่ยงการตรวจจับบอตได้ยาก เพราะส่วนใหญ่มักรันบนคลาวด์ด้วย Docker หรือ Kubernetes
ข้อเสนอสำหรับโครงสร้างพื้นฐานการสครัปที่ขยายได้และตรวจจับได้ยาก
- ซื้ออุปกรณ์ Android ราคาถูก 500 เครื่องจากผู้ผลิต 5 ราย
- ใช้แพ็กเกจข้อมูลราคาถูก และควบคุมอุปกรณ์ด้วย DeviceFarmer/stf
- กระจายติดตั้งเมืองละ 100 เครื่องใน 5 เมืองหลัก เช่น ลอนดอน ปารีส บอสตัน แฟรงก์เฟิร์ต และ LA
- ติดตั้ง Android Go แบบเบา และสลับโหมดเครื่องบินปิด-เปิดทุก 5 นาทีเพื่อเปลี่ยน IP address
- mobile IP ของ 4G/5G/LTE ไม่สามารถบล็อกได้ เพราะมีผู้ใช้จำนวนมากแชร์ร่วมกัน ดังนั้นแม้แต่ Instagram ก็ไม่สามารถบล็อกคน 200,000 คนใน LA ได้
- จำเป็นต้องควบคุมอีเวนต์อย่างทิศทางอุปกรณ์และการเคลื่อนไหวในระดับเคอร์เนล
แนวทางปรับปรุง: การจำลอง Android
- ใช้อีมูเลเตอร์อย่าง Android-x86 on VirtualBox, Bluestacks, Android Studio
- แต่อีมูเลชันมีเทคนิคการตรวจจับอยู่มากมาย (เช่น browser-based red pill, adb port scan, การตรวจจับ ad ID, การตรวจจับ social login เป็นต้น)
- เชื่อมต่อ 4G dongle เข้ากับเซิร์ฟเวอร์เพื่อใช้โดยตรงใน Android emulator
- วางเซิร์ฟเวอร์สครัปประสิทธิภาพสูงเมืองละ 1 เครื่องใน 5 เมืองหลัก โดยแต่ละเครื่องเชื่อมต่อ dongle 50 ตัว
- แต่ละเซิร์ฟเวอร์รัน Android emulator ได้ 50~100 ตัว
- ใช้เซิร์ฟเวอร์ควบคุมคำสั่งแบบเรียบง่ายเพื่อประสานงานสเตชันสครัปทั้ง 5 แห่ง
ความเห็นของ GN⁺
- การใช้อุปกรณ์จริงดูมีต้นทุนการดูแลสูงและมีข้อจำกัดด้านการขยายระบบ การใช้อีมูเลเตอร์น่าจะเป็นทางเลือกที่สมจริงกว่า
- อย่างไรก็ตาม เทคโนโลยีตรวจจับอีมูเลเตอร์ก็พัฒนาอย่างต่อเนื่อง จึงดูไม่ปลอดภัยนักที่จะคิดว่าแค่ใช้อีมูเลเตอร์แล้วจะรอด จำเป็นต้องมีการอัปเดตและปรับปรุงอย่างต่อเนื่อง
- การใช้ mobile IP แบบ 4G/5G เป็นแนวคิดที่ดี แต่ก็ไม่อาจตัดความเป็นไปได้ที่ผู้ให้บริการเครือข่ายจะบล็อกอุปกรณ์บางเครื่องหรือปรับแพ็กเกจราคา
- นอกจากการหลีกเลี่ยงการใช้ IP ของดาต้าเซ็นเตอร์แล้ว การสร้างรูปแบบพฤติกรรมให้คล้ายมนุษย์ก็น่าจะช่วยหลบการตรวจจับบอตได้ การเก็บข้อมูลแบบค่อยเป็นค่อยไปด้วย concurrency ที่จำกัด แทนการเก็บขนาดใหญ่ผ่านระบบอัตโนมัติเต็มรูปแบบ อาจเป็นสิ่งที่ควรพิจารณา
- อาจพิจารณาใช้เบราว์เซอร์ anti-detection เชิงพาณิชย์อย่าง Multilogin หรือ GoLogin ได้เช่นกัน แต่มีประเด็นเรื่องค่าไลเซนส์
ยังไม่มีความคิดเห็น