Quay lại blog

Vì sao Playwright bị phát hiện: giao thức, runtime và nhịp hành vi

Một script có thể chạy tốt ở máy local nhưng sau khi triển khai lại gặp CAPTCHA, lỗi 403 hoặc đăng nhập thất bại. Thông thường, nền tảng không nhận diện một công cụ cụ thể mà đánh giá các khác biệt có thể quan sát của tự động hóa ở lớp giao thức, runtime, fingerprint, mạng và nhịp hành vi.

Một tình huống lặp đi lặp lại là script chạy rất tốt ở local, nhưng sau khi triển khai lại bắt đầu gặp xác minh người dùng, lỗi 403 hoặc đăng nhập thất bại. Phản ứng đầu tiên thường là cho rằng công cụ đã bị nhận diện.

Tuy nhiên, các nền tảng hiếm khi tập trung vào việc xác định chính xác bạn dùng công cụ nào. Điều họ đánh giá là sự khác biệt giữa lượt truy cập này và lượt truy cập của người dùng thật. Playwright điều khiển browser; nếu environment mà nó khởi chạy khác rõ rệt so với browser một người thường dùng, lưu lượng có thể bị xếp vào nhóm tự động hóa. Những khác biệt này phân bố trên nhiều lớp, và tách từng lớp ra sẽ giúp xác định nguyên nhân rõ hơn.

自动化访问从协议、运行时、指纹、网络和行为时序五层累积风险信号

Lớp giao thức đã lên tiếng trước khi trang được render

Ở lớp giao thức, thứ được quan sát không phải nội dung trang mà là hình dạng của chính request: tổ hợp request headers, phiên bản browser và kiến trúc nền tảng trong UA Client Hints, cùng thứ tự parameters trong quá trình thiết lập connection.

Automation environment thường trông quá sạch hoặc quá đồng đều ở những điểm này. Có thể thiếu header lẽ ra phải có, hoặc mọi giá trị đều cố định đến mức không giống một máy đã được con người sử dụng lâu dài. Lớp này có chi phí đánh giá thấp và có thể đưa ra kết luận trước khi trang render, vì vậy nó được dùng rất phổ biến.

Runtime variables là lớp thứ hai

Sau khi page scripts bắt đầu chạy, một nhóm environment variables khác có thể được đọc. Theo chuẩn WebDriver, navigator.webdriver thường trả về true khi browser được điều khiển bởi công cụ automation. Các tín hiệu cùng loại còn gồm automation flags trong launch arguments, việc window.chrome có tồn tại hay không, mức độ đầy đủ của navigator.plugins và navigator.permissions, chế độ headless, và danh sách plugins hoặc extensions có rỗng hay không.

Browser thật thường có một số mục mặc định, vì vậy một danh sách rỗng tự nó cũng có thể trở thành đặc trưng. Các phương pháp phát hiện ban đầu tập trung nhiều vào lớp này vì dễ quan sát. Hiện nay, ít nền tảng chỉ xem một property duy nhất; phần lớn đánh giá nhiều giá trị cùng lúc.

Fingerprint xem tính nhất quán, không chỉ từng giá trị riêng lẻ

Tiếp theo là các parameters phía thiết bị: kết quả render của Canvas và WebGL, khác biệt xử lý AudioContext, danh sách fonts, screen parameters, time zone, language và hardware information. Từng giá trị riêng lẻ có thể hoàn toàn bình thường, nhưng khi kết hợp lại chúng tạo thành một device profile tương đối ổn định.

Có hai kiểu có thể gây nghi ngờ. Thứ nhất, các parameters không khớp với nhau — chẳng hạn rendering result giống một loại GPU nhưng font set lại giống một operating system khác. Thứ hai, nhiều environment giống hệt nhau. Nếu mọi task đều bắt đầu từ cùng một configuration, fingerprints cũng sẽ giống nhau. Khi đó, nền tảng không nhìn thấy một trăm thiết bị mà là cùng một thiết bị truy cập một trăm lần.

Network egress và địa lý là những ràng buộc cứng

Các yếu tố phía network ít liên quan trực tiếp đến browser: IP thuộc data center hay residential connection, proxy address có từng bị lạm dụng quy mô lớn hay không, ASN thuộc cloud provider hay ISP, DNS configuration có khớp với khu vực IP không, và IP có thường xuyên nhảy qua lại giữa các quốc gia không.

Một request có time zone ở United States nhưng network egress tại Germany có thể bị nhận ra mà không cần advanced detection. Mâu thuẫn địa lý là một trong những điểm bất nhất rẻ nhất và dễ phát hiện nhất trong toàn bộ hệ thống.

Nhịp hành vi tích lũy dần theo thời gian

Hành vi con người không đều: có thể dừng ngắn trước khi click, tốc độ gõ thay đổi và đôi khi người dùng quay lại để sửa. Script thường có nhịp chính xác và lặp lại, đường truy cập cố định, không tạo hành động ngoài mục tiêu và có request density cao hơn con người một cách rõ rệt.

Trong hai năm gần đây, cách đánh giá vẫn tiếp tục thay đổi. Năm 2026, một số nhà cung cấp bảo vệ đưa vào hoạt động continuous behavioral-verification engines, không còn chỉ quyết định một lần ở lượt truy cập đầu tiên. Thay vào đó, chúng liên tục thu thập mouse movement, click rhythm, scroll trajectory và thời gian ở lại trang trong suốt session, rồi gửi dữ liệu về server theo real time để chấm risk score. Refresh trang hoặc chuyển sang trang tiếp theo không làm các behavioral signals đã tích lũy trở về 0; chúng tiếp tục được cộng dồn. Điều đó có nghĩa là đặc trưng của một lần page load không còn đủ — hành vi là một quá trình.

Vì sao nền tảng coi các khác biệt này là tín hiệu rủi ro

Từ góc nhìn của nền tảng, điều cần phân biệt không phải khách truy cập dùng công cụ gì, mà là lượt truy cập có giống một người thật đang sử dụng dịch vụ bình thường hay không. Spam registrations, bulk scraping và abusive requests tạo ra chi phí, nên mâu thuẫn ở bất kỳ dimension nào cũng có thể làm risk score tăng, và nhiều mâu thuẫn cùng lúc sẽ càng dễ thấy.

Ngược lại, chỉ xóa bớt các features cũng không phải hướng đúng. Fingerprint của thiết bị thật đầy đủ và tự nhất quán; một fingerprint bị cố ý bỏ đi vài phần cũng có thể trông bất thường. Tiêu chí gần thực tế hơn gồm ba câu hỏi: features có đầy đủ không, parameters có nhất quán với nhau không, và giữa các environment khác nhau có mức khác biệt hợp lý hay không?

Xác định nguyên nhân khác với vượt qua biện pháp bảo vệ

Tách nguyên nhân đến mức này nhằm biết vấn đề nằm ở lớp nào, không phải để giải thích cách vượt qua biện pháp bảo vệ. Giảm xác suất bị phát hiện về mặt kỹ thuật không đồng nghĩa với việc được phép thu thập dữ liệu hay tự động hóa dịch vụ. Ranh giới rất rõ: tuân thủ robots rules và terms of service của target site, không thu thập personal information, không vượt qua technical protection measures, kiểm soát request frequency và không ảnh hưởng đến hoạt động bình thường của dịch vụ. Nguyên tắc này độc lập với giải pháp kỹ thuật nhưng có mức ưu tiên cao nhất.