Lựa chọn thay thế puppeteer-extra-plugin-stealth mã nguồn mở
Stealth plugin vẫn là cách được cài nhiều nhất để gắn evasion vào Puppeteer, với khoảng 840.000 lượt tải mỗi tuần, nhưng đã không có bản phát hành mới nào từ tháng 3/2023. Mỗi evasion là một patch JavaScript trên Chrome nguyên bản, và patch JavaScript thì tự để lộ mình. Clearcote đặt các giá trị đó một cách native ngay trong engine.
puppeteer-extra-plugin-stealth là gì?
puppeteer-extra-plugin-stealth (của berstend) là một bộ module evasion JavaScript được chèn bằng page.evaluateOnNewDocument trước khi script của trang chạy. Mỗi module vá một dấu hiệu: navigator.webdriver, plugin, chrome.runtime, WebGL vendor, iframe, codec và nhiều thứ khác. Plugin dùng giấy phép MIT và cực kỳ phổ biến, với khoảng 840.000 lượt tải npm mỗi tuần, và cách tiếp cận của nó đã được port sang playwright-stealth và selenium-stealth.
Trên thực tế, plugin cũng không còn được bảo trì: bản phát hành npm cuối (2.11.2) ra vào tháng 3/2023, và repository không thay đổi từ giữa năm 2024. Giới hạn về cấu trúc thì đã có từ trước đó. Đây là các lớp ghi đè JavaScript trên một engine nguyên bản, và lớp ghi đè tự để lộ mình qua Function.prototype.toString, qua property descriptor bị thay đổi, và qua việc đọc lại từ Web Worker hoặc iframe cross-origin, nơi không có patch. Nó không thay đổi giá trị native, không động đến TLS hay HTTP/2, và không xử lý lỗ rò CDP Runtime.enable. Chính README của nó cũng thừa nhận rằng việc ngăn chặn mọi cách phát hiện Chromium headless có lẽ là bất khả thi.
Clearcote vs puppeteer-extra-plugin-stealth
| Tính năng | Clearcote | puppeteer-extra-plugin-stealth |
|---|---|---|
| Cách tiếp cận | Patch C++ ở cấp engine: giá trị native | Evasion JavaScript chèn vào từng document |
| Điểm lộ có thể bị phát hiện | Không có: native ở mọi realm (trang, worker, iframe) | Lộ ra qua toString, descriptor, việc đọc lại từ worker và iframe |
| Tính nhất quán TLS / mạng | Theo phiên bản Chrome tự nhận (JA3/JA4 + HTTP/2) | Không xử lý |
| Framework | Playwright & Puppeteer (Python, Node, .NET) | Puppeteer (Node); playwright-extra cho Playwright |
| Bảo trì | Đang phát triển tích cực | Bản phát hành cuối: tháng 3/2023 |
| Giấy phép | Bản build mở: BSD-3 | MIT |
| Chi phí | Bản build mở miễn phí; bản build mới nhất miễn phí với GitHub | Miễn phí & mã nguồn mở |
Bảng so sánh được tổng hợp ngày tháng 9 năm 2026. puppeteer-extra-plugin-stealth là Mã nguồn mở (MIT); thông tin có thể thay đổi — hãy xem trang dự án của nó để có thông tin mới nhất.
Vì sao các team chọn Clearcote
Native, không phải ghi đè
Mỗi evasion của stealth plugin là một lớp ghi đè JavaScript mà công cụ phát hiện có thể bắt được. Clearcote đặt các giá trị ngay trong engine, nên chúng hiện ra như native và không có lớp ghi đè nào để tìm.
Nhất quán giữa các realm
Các patch JavaScript áp vào trang sẽ bị lệch trong Web Worker và iframe cross-origin. Giá trị ở cấp engine khớp ở mọi nơi, khép lại cả nhóm dấu hiệu đó.
Tầng mạng
Plugin không có quyền truy cập TLS hay HTTP/2. Handshake của Clearcote theo đúng phiên bản Chrome tự nhận, nên những gì đi trên đường truyền khớp với JavaScript.
Được bảo trì và kiểm chứng
Clearcote được kiểm tra bằng các bài test công khai ở mỗi bản phát hành. Các evasion của plugin có từ đầu năm 2023, và Chrome đã tiến thêm hàng chục phiên bản kể từ đó.
Khi nào puppeteer-extra-plugin-stealth có thể là lựa chọn tốt hơn
- Bạn đang dùng Puppeteer và muốn một bộ evasion chỉ cần một dòng code cho các trang mục tiêu dễ tính.
- Bạn cần một thứ theo giấy phép MIT để gắn vào một scraper Node sẵn có.
- Với các trang test công khai và các cơ chế phát hiện cũ, nó nhanh và đôi khi là đủ.
Câu hỏi thường gặp
puppeteer-extra-plugin-stealth còn được bảo trì không?
Không còn tích cực. Bản phát hành npm cuối cùng, 2.11.2, ra từ tháng 3/2023 và repository không được cập nhật từ tháng 7/2024. Nó vẫn cài được và được dùng rất nhiều, nhưng các evasion đã không theo kịp Chrome.
Vì sao các patch stealth bằng JavaScript bị phát hiện?
Vì chúng là lớp ghi đè lên một hàm thật. Công cụ phát hiện có thể chuyển hàm đó thành chuỗi (hàm native sẽ hiện [native code]; hàm ghi đè lộ ra mã nguồn của chính nó), kiểm tra property descriptor, hoặc đọc lại giá trị từ một iframe hay Web Worker mới, nơi patch không được áp dụng. Thay đổi ở cấp engine tránh được điều này vì giá trị là native ở mọi nơi.
Clearcote khác stealth plugin ở điểm nào?
Plugin chèn các evasion JavaScript vào Chrome nguyên bản; Clearcote là một Chromium đã chỉnh sửa, nơi các giá trị là native trong engine, nhất quán giữa worker và iframe, cùng một persona TLS/HTTP-2 mà plugin không có quyền truy cập.
Có phiên bản cho Playwright không?
Có: playwright-extra có thể nạp cùng plugin đó trong Node, còn playwright-stealth port nó sang Python. Cả hai có chung thiết kế ghi đè bằng JavaScript.
Bài đọc liên quan
Dùng thử lựa chọn thay thế Chromium mã nguồn mở
Miễn phí và mã nguồn mở, thay thế drop-in cho Playwright & Puppeteer, nhất quán đến tận TLS handshake.
Miễn phí cho một trình duyệt với GitHub. Không cần thẻ.