Scarnox · Blog

Browser fingerprinting คืออะไรสำหรับนักทำ scraping

Browser fingerprinting คือการระบุตัวผู้เข้าชมจากลักษณะรวมของเบราว์เซอร์ ไม่ใช่จาก cookie หรือบัญชี เว็บใช้มันเพื่อจดจำผู้เข้าชมที่กลับมาซ้ำ ตรวจจับการฉ้อโกง และรู้จัก automation หากคุณทำ scraping บนเว็บ คุณจะเจอเรื่องนี้แน่นอน คู่มือนี้อธิบายว่ามีการวัดอะไรบ้าง ทำไมความไม่สอดคล้องเพียงจุดเดียวจึงสร้างปัญหา และวิธีรักษาโปรไฟล์เดียวที่สอดคล้องกันและเป็นมิตรต่อเว็บสำหรับเก็บข้อมูลสาธารณะ นอกจากนี้ยังอธิบายขีดจำกัดของสิ่งที่การปรับ fingerprint ทำได้และควรทำ

fingerprint ประกอบด้วยอะไรบ้าง

ไม่มีค่าเดียวที่ระบุเบราว์เซอร์ได้ด้วยตัวเอง แต่ค่าเล็ก ๆ หลายค่ารวมกันมักระบุได้ ข้อมูลที่พบบ่อยได้แก่

สคริปต์ fingerprinting จะรวมค่าเหล่านี้เป็น hash หรือคะแนน ยิ่งมีสัญญาณที่เสถียรและผิดปกติมากเท่าใด ผลลัพธ์ก็ยิ่งระบุตัวตนได้มากขึ้น

ทำไมความไม่สอดคล้องถึงเด่นชัด

เบราว์เซอร์จริงมีความสอดคล้องภายในกันเอง ระบบปฏิบัติการตรงกับฟอนต์ เขตเวลาตรงกับการตั้งค่าภาษา และขนาดหน้าจอตรงกับอุปกรณ์ที่ใช้งาน scraper มักทำลายความสอดคล้องนี้โดยไม่ตั้งใจ

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

ขั้นที่ 1: วัดการตั้งค่าของคุณเอง

คุณดูได้ว่าหน้าเว็บเรียนรู้อะไรเกี่ยวกับ client ของคุณได้โดยโหลดหน้าทดสอบ fingerprint ที่คุณควบคุม หรือหน้าวินิจฉัยที่คุณรันในเครื่อง ให้ดูค่าเหล่านั้นและถามตัวเองว่าค่าทั้งหมดอธิบายเครื่องเดียวที่สอดคล้องกันหรือไม่ นี่คือตัวอย่าง Playwright แบบสั้นที่พิมพ์ค่าบางส่วนออกมา

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context(locale="en-GB", timezone_id="Europe/London")
    page = context.new_page()
    page.goto("https://example.com")  # เปลี่ยนเป็นหน้าที่คุณเป็นเจ้าของ
    print(page.evaluate("""() => ({
        language: navigator.language,
        timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
        platform: navigator.platform,
        viewport: [innerWidth, innerHeight]
    })"""))
    browser.close()

ขั้นที่ 2: มีหนึ่งตัวตนต่อหนึ่งโปรไฟล์

นิสัยที่มีประโยชน์ที่สุดคือถือว่าตัวตนของการ scraping แต่ละตัวเป็นโปรไฟล์หนึ่งชุด กำหนดลักษณะชุดเดียวและคงไว้ตลอดอายุการใช้งาน

การเปลี่ยนค่าเหล่านี้ทีละคำขอน่าสงสัยกว่าการคงค่าไว้ให้เหมือนเดิม ความสอดคล้องคือสิ่งที่ทำให้โปรไฟล์ดูธรรมดา

ขั้นที่ 3: ทำให้จังหวะของโปรไฟล์เหมือนผู้เข้าชม

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

ขั้นที่ 4: รู้ขีดจำกัด

การปรับ fingerprint ไม่สามารถทำให้โปรไฟล์อัตโนมัติดูเหมือนคนที่ไม่ได้อยู่ตรงนั้นได้ เว็บที่พึ่ง fingerprinting มักใช้ร่วมกับการจำกัดอัตรา การตรวจสอบบัญชี และบางครั้งก็ captcha เมื่อ captcha ปรากฏ คุณต้องการ token จาก solver ไม่ใช่การปรับ fingerprint เพิ่มเติม ประเภท captcha แบบสดที่ Scarnox รองรับคือ PopularCaptcha และ คู่มือ PopularCaptcha ด้วย Python แสดงคำขอไว้ สำหรับภาพรวมของ widget ทั้งหมดที่มี ให้อ่าน ประเภทของ captcha

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

การ scrape อย่างรับผิดชอบ

ไปต่อที่ไหน

หากเป้าหมายของคุณอยู่หลังการตรวจสอบระดับเบราว์เซอร์ ให้เริ่มที่ การตรวจจับ headless browser ซึ่งครอบคลุมสัญญาณเฉพาะของเบราว์เซอร์อัตโนมัติ หน้าที่ต้องใช้ JavaScript เพื่อแสดงเนื้อหาครอบคลุมอยู่ใน การ scrape เว็บที่ใช้ JavaScript

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

ขั้นตอนถัดไป