Lựa chọn thay thế playwright-stealth mã nguồn mở
playwright-stealth là cách nhanh nhất để thêm stealth cho Playwright trong Python: chỉ cần một wrapper là mọi trang đều được gắn một bộ evasion JavaScript. Nhưng các evasion đó là lớp ghi đè trên trình duyệt nguyên bản, và chính maintainer gọi nó là một bản proof of concept. Clearcote thì đặt các giá trị đó một cách native ngay trong engine, nên trang web không có lớp ghi đè nào để tìm ra.
playwright-stealth là gì?
playwright-stealth là bản port sang Python cho Playwright của puppeteer-extra-plugin-stealth. Bản port gốc của AtuboDad không được cập nhật từ giữa năm 2024; tên package trên PyPI hiện do một fork đang được bảo trì tích cực (Mattwmaster58) tiếp quản, và fork này đã ra bản 2.0 với API gọn hơn, đồng thời merge các pull request còn tồn đọng. Dự án dùng giấy phép MIT và được dùng rất rộng rãi: khoảng 2,4 triệu lượt tải PyPI mỗi tháng.
Nó hoạt động bằng cách đăng ký init script cho mọi context, mỗi script vá một dấu hiệu: navigator.webdriver, navigator.languages, plugin, WebGL vendor, chrome.runtime, v.v. Maintainer nói thẳng về giới hạn của nó. README khuyên đừng kỳ vọng nó vượt qua được gì ngoài những cơ chế phát hiện bot đơn giản nhất, và mô tả nó là một điểm khởi đầu. Nguyên nhân nằm ở cấu trúc: một lớp ghi đè JavaScript có thể bị bắt bằng Function.prototype.toString hoặc bằng cách kiểm tra property descriptor, init script của trang không chạm tới Web Worker, và không có gì trong package động đến tác dụng phụ CDP của chính driver Playwright hay tầng mạng.
Clearcote vs playwright-stealth
| Tính năng | Clearcote | playwright-stealth |
|---|---|---|
| Cách tiếp cận | Patch C++ ở cấp engine: giá trị native | Init script JavaScript trên trình duyệt nguyên bản |
| Điểm lộ có thể bị phát hiện | Không có: native trong trang, iframe và worker | Ghi đè lộ ra qua toString, descriptor và việc đọc lại từ worker |
| Danh tính fingerprint | Persona nhất quán từ một seed (canvas, WebGL, font, navigator) | Vài giá trị đặt tay chồng lên giá trị thật của máy |
| Tác dụng phụ của driver / CDP | Được chặn ngay khi khởi chạy (isolated world) và trong engine | Không xử lý; driver Playwright nguyên bản |
| Tính nhất quán TLS / mạng | ClientHello theo phiên bản Chrome tự nhận | Không xử lý |
| Framework | Playwright & Puppeteer (Python, Node, .NET) | Playwright (Python) |
| Cài đặt | Đổi binary trình duyệt | Bọc Playwright bằng một dòng code |
| Chi phí | Bản build mở miễn phí; bản build mới nhất miễn phí với GitHub; Pro $49/tháng | Miễn phí & mã nguồn mở (MIT) |
Bảng so sánh được tổng hợp ngày tháng 9 năm 2026. playwright-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 playwright-stealth thay một hàm thật của trình duyệt bằng một hàm JavaScript, và sự thay thế đó có thể bị quan sát thấy. Clearcote thay đổi giá trị ngay bên trong Chromium, nên hàm mà trang web kiểm tra chính là hàm native thật.
Cùng một câu trả lời ở mọi realm
Init script chỉ vá trang. Đọc lại cùng giá trị đó từ một Web Worker hoặc một iframe mới là bạn nhận được giá trị gốc chưa vá. Giá trị ở cấp engine thì khớp ở mọi nơi.
Cả một danh tính, không phải vài trường lẻ tẻ
Một seed --fingerprint tạo ra một cỗ máy nhất quán trên canvas, WebGL, audio, font, màn hình và phần cứng, thay vì vài lớp ghi đè đắp lên máy thật.
Giữ nguyên code Playwright
Clearcote là một binary Chromium. Trỏ executable_path vào nó, hoặc dùng launch() của SDK, còn phần còn lại của script Playwright giữ nguyên.
Khi nào playwright-stealth có thể là lựa chọn tốt hơn
- Bạn muốn thử nhanh trong năm phút trên một trang mục tiêu dễ tính và không muốn phải quản lý binary trình duyệt.
- Các trang mục tiêu của bạn chỉ kiểm tra những dấu hiệu hiển nhiên như
navigator.webdriver. - Bạn đã chạy Clearcote và muốn biết mình có còn cần nó không: không cần. Các evasion của nó lặp lại những giá trị mà engine đã đặt sẵn, và việc đắp thêm lớp ghi đè JavaScript lên trên sẽ mang trở lại chính điểm lộ mà engine đã loại bỏ.
Câu hỏi thường gặp
playwright-stealth còn dùng được không?
Nó vẫn cài và chạy được, và bản fork đang được bảo trì (2.x) vẫn có cập nhật. Có đủ hay không thì tùy trang mục tiêu. Chính README của nó cảnh báo rằng nó chỉ xử lý được những cơ chế phát hiện đơn giản nhất, vì ghi đè bằng JavaScript có thể bị phát hiện và nó không động đến tầng driver lẫn tầng mạng.
playwright-stealth và Clearcote khác nhau thế nào?
playwright-stealth chèn JavaScript vào một Chromium nguyên bản để ghi đè một số giá trị. Clearcote là một Chromium đã chỉnh sửa, nơi các giá trị đó là native, nhất quán giữa các frame và worker, bên dưới là một TLS fingerprint tương ứng. Cả hai đều được điều khiển bằng Playwright thông thường.
Có nên dùng playwright-stealth cùng với Clearcote không?
Không. Engine đã báo cáo các giá trị nhất quán, và việc đắp thêm lớp ghi đè JavaScript lên trên sẽ thay các hàm native bằng những hàm có thể bị phát hiện. Hãy khởi chạy Clearcote bằng Playwright thuần.
Có playwright-stealth cho Node.js không?
Bản tương đương trên Node là playwright-extra kèm plugin stealth của puppeteer-extra, với cùng thiết kế ghi đè bằng JavaScript. Clearcote hoạt động như nhau từ Python, Node và .NET.
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ẻ.