Scarnox · Blog

Browser fingerprinting được giải thích cho scraper

Browser fingerprinting là cách nhận diện khách truy cập dựa trên tổng hợp các đặc điểm của trình duyệt, chứ không dựa vào cookie hay tài khoản. Website dùng nó để nhận ra khách quay lại, phát hiện gian lận và nhận diện tự động hóa. Nếu bạn scrape web, bạn sẽ gặp nó. Hướng dẫn này giải thích những gì được đo, vì sao chỉ một chỗ không khớp cũng gây rắc rối, và cách giữ một hồ sơ trình duyệt nhất quán, cư xử đúng mực để thu thập dữ liệu công khai. Nó cũng giải thích giới hạn của việc tinh chỉnh fingerprint nên đến đâu.

Một fingerprint được tạo từ những gì

Không có giá trị đơn lẻ nào tự nhận diện được một trình duyệt, nhưng nhiều giá trị nhỏ ghép lại thường làm được điều đó. Các đầu vào phổ biến gồm:

Các script fingerprint gộp chúng thành một hash hoặc một điểm số. Càng nhiều tín hiệu ổn định và bất thường, kết quả càng dễ nhận diện.

Vì sao một chỗ không khớp dễ lộ

Một trình duyệt thật luôn nhất quán về nội bộ. Hệ điều hành khớp với phông chữ, múi giờ khớp với cài đặt ngôn ngữ, và kích thước màn hình khớp với thiết bị đang chạy nó. Scraper thường phá vỡ sự nhất quán đó mà không cố ý:

Mỗi chỗ không khớp là một tín hiệu nhỏ. Gộp lại, chúng có thể đưa một yêu cầu từ "khách truy cập bình thường" sang "cần xem xét kỹ hơn".

Bước 1: đo thiết lập của chính bạn

Bạn có thể xem trang biết gì về client của mình bằng cách tải một trang kiểm tra fingerprint mà bạn kiểm soát, hoặc một trang chẩn đoán chạy cục bộ. Hãy nhìn các giá trị và tự hỏi liệu chúng có mô tả một máy tính nhất quán hay không. Đây là một ví dụ Playwright tối thiểu in ra vài giá trị trong số đó:

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")  # thay bằng một trang bạn sở hữu
    print(page.evaluate("""() => ({
        language: navigator.language,
        timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
        platform: navigator.platform,
        viewport: [innerWidth, innerHeight]
    })"""))
    browser.close()

Bước 2: mỗi hồ sơ chỉ giữ một danh tính

Thói quen hữu ích nhất là coi mỗi danh tính scraping là một hồ sơ. Gán cho nó một bộ đặc điểm duy nhất và giữ chúng trong suốt vòng đời của nó:

Thay đổi một trong các yếu tố này cho mỗi yêu cầu đáng ngờ hơn là giữ chúng ổn định. Sự nhất quán là thứ khiến một hồ sơ trông bình thường.

Bước 3: điều tiết hồ sơ như một khách truy cập

Fingerprint chỉ là một đầu vào. Website cũng theo dõi tốc độ một hồ sơ di chuyển qua trang. Một hồ sơ tải hai trăm trang sản phẩm trong một phút không phải là người, bất kể fingerprint của nó ra sao. Hãy trải đều yêu cầu, lưu cache kết quả, và dừng lại khi một trang báo hiệu bạn nên làm vậy. Checklist scrape mà không bị chặn trình bày kỹ hơn về việc điều tiết tốc độ.

Bước 4: biết giới hạn

Việc tinh chỉnh fingerprint không thể khiến một bản tự động hóa trông như một người không có mặt ở đó. Các website dựa vào fingerprint thường kết hợp nó với giới hạn tần suất, kiểm tra tài khoản và đôi khi là captcha. Khi captcha xuất hiện, bạn cần một token từ bộ giải chứ không phải thêm nhiều chỉnh sửa fingerprint. Loại captcha đang chạy tại Scarnox là PopularCaptcha; hướng dẫn Python cho PopularCaptcha trình bày yêu cầu. Để có bức tranh rộng hơn về các widget hiện có, hãy đọc các loại captcha được giải thích.

Quan trọng hơn, việc né fingerprint không phải là giấy phép để phớt lờ quy định của website. Nếu chủ website đã hạn chế truy cập tự động, việc đúng đắn là dừng lại, chứ không phải làm hồ sơ của bạn khó bị nhận ra hơn. Fingerprinting cũng là một vấn đề về quyền riêng tư. Một số website dùng nó để theo dõi người dùng qua nhiều lần truy cập, và đó là một lý do nữa để chỉ thu thập những gì dự án của bạn cần.

Thu thập dữ liệu có trách nhiệm

Nên đi tiếp đâu

Nếu mục tiêu của bạn nằm sau một kiểm tra ở mức trình duyệt, hãy bắt đầu với phát hiện trình duyệt headless, trình bày các tín hiệu đặc thù của trình duyệt tự động. Các trang cần JavaScript để hiển thị nội dung được trình bày trong scraping website dùng JavaScript.

Bắt đầu với tín dụng dùng thử miễn phí, không cần thẻ: tạo tài khoản và thử luồng PopularCaptcha trên một trang bạn sở hữu. Để biết giá hiện tại, xem trang bảng giá.

Các bước tiếp theo