7 Framework và Thời gian Chạy Web Scraping Tốt Nhất Năm 2026
Expert in Web Scraping Technologies
TL;DR:
- Trình duyệt Trích xuất Không vết là runtime quản lý tốt nhất khi thực thi trình duyệt, định tuyến proxy và tính nhất quán phiên cần hoạt động cùng nhau. Nó bổ sung cho mã ứng dụng mà không yêu cầu một đội ngũ duy trì hạ tầng trình duyệt.
- Scrapy là framework thu thập dữ liệu Python mạnh nhất. Việc lập lịch yêu cầu, đường ống đối tượng và mô hình mở rộng của nó rất phù hợp với các thu thập dữ liệu có cấu trúc lớn.
- Playwright là thư viện tự động hóa trình duyệt tổng quát tốt nhất. Nó hỗ trợ Chromium, Firefox và WebKit với các nguyên lý chờ đợi hiện đại và phân cách.
- Crawlee là một lớp điều phối mạnh mẽ cho các trình thu thập dữ liệu JavaScript và TypeScript. Nó kết hợp các hàng đợi yêu cầu, lưu trữ và các trình thu thập dữ liệu trình duyệt hoặc HTTP.
- Puppeteer là lựa chọn tập trung cho tự động hóa gia đình Chrome. Mô hình điều khiển trình duyệt trực tiếp của nó hoạt động tốt cho các nhóm tập trung vào Chromium.
- Selenium vẫn quan trọng cho tự động hóa WebDriver đa ngôn ngữ. Hệ sinh thái rộng lớn của nó giúp các nhóm tái sử dụng kiến thức kiểm tra trình duyệt.
- Cheerio là lựa chọn nhẹ cho HTML tĩnh trong Node.js. Nó phân tích cú pháp đánh dấu mà không chạy JavaScript trên trang.
Các Framework và Runtime Trích Xuất Web Tốt Nhất
| Hạng | Công cụ | Danh mục | Tốt nhất cho | Chạy JavaScript trên trang |
|---|---|---|---|---|
| 1 | Trình duyệt Trích xuất Không vết | Runtime trình duyệt quản lý | Thực thi trình duyệt sản xuất và các hoạt động phiên | Có |
| 2 | Scrapy | Framework thu thập dữ liệu Python | Thu thập dữ liệu có cấu trúc với thông lượng cao | Không tự nó |
| 3 | Playwright | Thư viện tự động hóa trình duyệt | Tương tác đa trình duyệt hiện đại | Có |
| 4 | Crawlee | Framework điều phối trình thu thập dữ liệu | Hàng đợi, lưu trữ và trình thu thập dữ liệu trình duyệt/HTTP hỗn hợp | Tùy chọn |
| 5 | Puppeteer | Thư viện tự động hóa trình duyệt | Tự động hóa tập trung vào Chromium | Có |
| 6 | Selenium | Framework tự động hóa WebDriver | Kiểm soát trình duyệt đa ngôn ngữ | Có |
| 7 | Cheerio | Thư viện phân tích cú pháp HTML | Trích xuất trang tĩnh nhanh trong Node.js | Không |
Các công cụ này giải quyết các lớp khác nhau. Một trình phân tích chuyển đổi HTML thành một cây có thể truy vấn. Một trình thu thập dữ liệu lập lịch các URL và lưu trữ kết quả. Một thư viện trình duyệt thực thi một trình duyệt cục bộ. Một runtime quản lý điều hành trình duyệt, mạng và phiên cho ứng dụng. So sánh chúng chỉ bằng tốc độ hoặc ngôn ngữ sẽ che giấu quyết định quan trọng nhất: yêu cầu của trang mục tiêu là gì.
Framework Trích Xuất Web Là Gì?
Một framework trích xuất web cung cấp các thành phần có thể tái sử dụng cho việc lấy các trang, khám phá các liên kết, trích xuất các trường, điều khiển phạm vi thu thập và xử lý đầu ra. Một số framework bao phủ toàn bộ vòng đời thu thập dữ liệu. Những cái khác chuyên về điều khiển trình duyệt hoặc phân tích cú pháp HTML và dựa vào mã ứng dụng cho hàng đợi, lưu trữ và giám sát.
Việc kết xuất phía khách hàng tạo ra sự chia tách chính. Mô hình kịch bản HTML mô tả cách các kịch bản chạy bên trong một ngữ cảnh duyệt và có thể thay đổi tài liệu sau phản hồi ban đầu. Các trình phân tích tĩnh chỉ thấy các đánh dấu mà chúng nhận được. Các công cụ trình duyệt thực thi trang và phơi bày trạng thái kết quả của nó.
Các Framework Trích Xuất Web Hoạt Động Như Thế Nào?
Hầu hết các hệ thống trích xuất kết hợp năm giai đoạn:
- Hạt giống một hoặc nhiều URL công khai đã được phê duyệt.
- Lấy HTML hoặc mở trang trong trình duyệt.
- Khám phá các URL bổ sung bên trong một ranh giới thu thập xác định.
- Trích xuất các trường vào một sơ đồ ổn định.
- Xác thực, biến đổi và lưu trữ các bản ghi.
Các framework khác nhau ở nơi mà các giai đoạn đó tồn tại. Scrapy bao gồm lập lịch và đường ống đối tượng. Cheerio tập trung vào phân tích cú pháp. Playwright, Puppeteer và Selenium tập trung vào trình duyệt. Crawlee thêm điều phối xung quanh các trình thu thập HTTP và trình duyệt. Scrapeless cung cấp một lớp thực thi trình duyệt quản lý mà mã ứng dụng có thể gọi khi các hoạt động trình duyệt cục bộ trở thành nút thắt cổ chai.
Cách Chúng Tôi Đánh Giá Những Công Cụ Này
Xếp hạng sử dụng bảy tiêu chí thực tế:
- Phạm vi tiếp cận. Công cụ có thể xử lý phản hồi tĩnh, các trang được kết xuất hoặc cả hai không?
- Kiểm soát thu thập. Liệu có hàng đợi URL, quy tắc phạm vi, đồng thời và loại bỏ trùng lặp được tích hợp?
- Ergonomics trích xuất. Các nhà phát triển có thể thể hiện các bộ chọn và chuẩn hóa các trường bị thiếu một cách rõ ràng không?
- Xử lý phiên. Công cụ có giữ lại cookies, trạng thái trình duyệt và danh tính mạng khi cần không?
- Ngôn ngữ và hệ sinh thái. Nó có phù hợp với runtime, đóng gói và mô hình triển khai của nhóm không?
- Gánh nặng vận hành. Ai sở hữu các nhị phân trình duyệt, ống dẫn proxy, bộ nhớ, nhật ký và dọn dẹp quy trình?
- Đường dẫn đầu ra. Các bản ghi có thể di chuyển một cách trơn tru vào các tệp, cơ sở dữ liệu, hàng đợi hoặc quy trình làm việc của đại lý không?
Lựa chọn hàng đầu không phải là phổ quát. Các trang danh mục tĩnh ưu tiên một trình phân tích hoặc trình thu thập dữ liệu. Các ứng dụng tương tác ưu tiên tự động hóa trình duyệt. Các nhóm sản xuất thường kết hợp một trình thu thập dữ liệu với một trình duyệt quản lý cho một tập hợp các trang cần kết xuất.
1. Trình duyệt Trích xuất Không vết: Runtime Quản lý Tốt Nhất
Scrapeless Scraping Browser không phải là một framework mã nguồn mở. Đây là một môi trường thực thi trình duyệt được quản lý, cung cấp cho một ứng dụng khả năng thực thi trình duyệt, định tuyến proxy khu vực, trạng thái phiên và điều khiển dấu vân tay thông qua một ranh giới dịch vụ.
Sự phân biệt đó là hữu ích. Một framework vẫn sở hữu logic khám phá, trích xuất và lưu trữ, trong khi Scrapeless vận hành quy trình trình duyệt và môi trường mạng. Các nhóm có thể giữ ngôn ngữ và bộ thu thập dữ liệu ưa thích của họ trong khi chuyển các phiên trình duyệt khó khăn nhất ra khỏi cơ sở hạ tầng địa phương.
Kết Nối Môi Trường Thực Thi
Tạo một phiên Scraping Browser từ bảng điều khiển Scrapeless hoặc đường dẫn SDK, sau đó kết nối ứng dụng với điểm cuối trình duyệt trả về. Giữ thông tin xác thực API bên ngoài mã nguồn và đóng các phiên khi công việc giới hạn của chúng hoàn tất.
Cách Sử Dụng Thực Tế: Nhắc Nhở Hoặc Lập Trình Công Việc
Đối với một nhiệm vụ được kiểm soát bởi tác nhân, xác định giới hạn thu thập và đầu ra:
Mở URL danh mục công khai mà tôi cung cấp trong trình duyệt được quản lý. Chờ danh sách sản phẩm được render, thu thập chỉ trang đầu tiên và trả về
name,price,detail_url, vàsource_url. Xem giá thiếu như null và không vào các khu vực chỉ dành cho tài khoản.
Một ứng dụng thông thường có thể diễn đạt cùng một giới hạn trong mã và sử dụng bộ phân tích hoặc kiểm tra cấu trúc hiện có của nó sau khi trang được render.
Ví Dụ Thực Tế
Xem xét một bộ thu thập dữ liệu xử lý hầu hết các URL với các yêu cầu HTTP trực tiếp. Khi một trang trả về một shell mà không có hàng sản phẩm, định tuyến URL đó đến một trình duyệt được quản lý, chờ phần tử danh sách mong đợi, chụp HTML đã render, và gửi nó qua cùng một chức năng trích xuất. Điều này giữ cho một cấu trúc trong khi sử dụng hai con đường thu thập.
Bài Kiểm Tra 60 Giây
Mở https://example.com/ trong một phiên được quản lý và đọc tiêu đề trang và URL cuối cùng. Một kiểm tra đạt yêu cầu sẽ trả về "Example Domain," giữ cho URL mong đợi, và đóng phiên một cách sạch sẽ. Sau đó lặp lại mẫu với một trang mục tiêu được phê duyệt trước khi giới thiệu hàng đợi hoặc công việc song song.
Giới thiệu về Scraping Browser giải thích ranh giới môi trường thực thi. Hướng dẫn web scraping JavaScript cho thấy cách các đường dẫn tĩnh và trình duyệt phù hợp với một quyết định.
Bắt đầu thu thập dữ liệu với Scrapeless
Nâng cao quy trình thu thập dữ liệu và tự động hóa trang web của bạn với Scrapeless!
Đăng ký hôm nay và nhận 5 USD tín dụng miễn phí — không cần thẻ tín dụng.Nhận tín dụng miễn phí của bạn ngay bây giờ trong Scrapeless Dashboard.
2. Scrapy: Framework thu thập dữ liệu Python tốt nhất
Scrapy là một framework ứng dụng để thu thập dữ liệu từ các trang web và trích xuất dữ liệu có cấu trúc. Các con nhện định nghĩa các yêu cầu và logic phân tích, trong khi động cơ phối hợp lập lịch, tải xuống, xử lý mục, và các phần mở rộng.
Điểm mạnh của nó là vòng đời thu thập dữ liệu. Khám phá URL, loại bỏ trùng lặp, đồng thời, ống dẫn, và xuất khẩu không cần phải được xây dựng lại xung quanh một bộ phân tích. Scrapy không thực thi JavaScript trang một mình, vì vậy các mục tiêu động cần một tích hợp trình duyệt hoặc một đường dẫn render riêng.
Tốt nhất cho: Các đội Python thu thập nhiều trang liên kết với quy tắc yêu cầu và trích xuất ổn định.
3. Playwright: Thư viện tự động hóa trình duyệt tổng quát tốt nhất
Playwright tự động hóa Chromium, Firefox và WebKit thông qua một API. Các ngữ cảnh trình duyệt cung cấp cookie và lưu trữ cách ly, trong khi các định vị và tự động đợi giúp các ứng dụng tương tác với trạng thái trang đang thay đổi.
Đây là một lựa chọn mạnh mẽ cho các trang động, môi trường kiểm tra xác thực, và quy trình làm việc cần nhấp chuột, biểu mẫu, tải xuống, hoặc kiểm tra DOM đã render. Nhóm vẫn chịu trách nhiệm về việc triển khai trình duyệt, cấu hình proxy, giới hạn tài nguyên, và dọn dẹp phiên trừ khi nó kết nối Playwright với một môi trường thực thi được quản lý.
Tốt nhất cho: tự động hóa trình duyệt hiện đại trên hơn một động cơ trình duyệt.
4. Crawlee: Tốt nhất cho việc điều phối JavaScript và TypeScript
Crawlee kết hợp hàng đợi yêu cầu, lưu trữ, định tuyến, và các lớp bộ thu thập cho công việc dựa trên HTTP và trình duyệt. Một dự án có thể bắt đầu với một bộ thu thập HTTP nhẹ và gán các đường dẫn động cho Playwright hoặc Puppeteer.
Thiết kế lai này hữu ích khi chỉ một phần của một trang yêu cầu render trong trình duyệt. Nó cũng cung cấp cho các đội Node.js một nơi có cấu trúc để vòng đời và sự kiên trì của URL thay vì phân tán những mối quan tâm đó trên các tập lệnh.
Tốt nhất cho: Các đội JavaScript hoặc TypeScript xây dựng các ống dẫn thu thập dữ liệu hỗn hợp.
5. Puppeteer: Tốt nhất cho Tự động hóa Trung tâm Chromium
Puppeteer cung cấp một API cấp cao cho tự động hóa Chrome và Firefox, với danh tính mạnh mẽ nhất xung quanh Giao thức DevTools của Chrome và quy trình làm việc Chromium. Nó xử lý điều hướng, tương tác, chụp màn hình, kiểm tra mạng và đánh giá trang.
Chọn nó khi việc triển khai chuẩn hóa trên các trình duyệt thuộc Chrome và đội ngũ đánh giá API tập trung. Giống như các thư viện trình duyệt khác, độ tin cậy sản xuất cũng phụ thuộc vào quản lý quy trình, định tuyến mạng và đồng thời giới hạn.
Tốt nhất cho: các ứng dụng Node.js tập trung vào tự động hóa Chrome và các khái niệm DevTools.
6. Selenium: Tốt nhất cho Các Nhóm WebDriver Đa Ngôn Ngữ
Selenium thực hiện tự động hóa trình duyệt thông qua mô hình WebDriver và hỗ trợ một số ngôn ngữ lập trình và trình duyệt khác nhau. Nhiều đội ngũ kỹ sư đã sử dụng nó cho việc kiểm thử, điều này có thể rút ngắn con đường tới một công cụ quét nội bộ.
Tính tương thích rộng rãi của nó là lợi thế chính. Đối với một dự án quét chỉ sử dụng JavaScript mới, Playwright hoặc Puppeteer có thể cung cấp trải nghiệm phát triển trực tiếp hơn. Selenium vẫn hấp dẫn khi tính bao trùm ngôn ngữ, triễn khai Grid, hoặc chuyên môn WebDriver hiện có quyết định lựa chọn.
Đặc tả W3C WebDriver định nghĩa giao diện điều khiển từ xa hỗ trợ cách tiếp cận này.
Tốt nhất cho: các tổ chức có cơ sở hạ tầng Selenium đã được thiết lập hoặc yêu cầu trình duyệt đa ngôn ngữ.
7. Cheerio: Tốt nhất cho HTML Tĩnh trong Node.js
Cheerio tải HTML và cung cấp một API chọn lựa quen thuộc mà không cần khởi động trình duyệt. Nó nhanh, gọn và hiệu quả khi phản hồi máy chủ đã chứa các trường cần thiết.
Nó không thực thi JavaScript hoặc tái tạo hành vi trình duyệt. Giới hạn đó là một lợi thế trên các trang tĩnh vì chi phí thiết lập và thời gian chạy vẫn ở mức thấp. Xác nhận rằng các trường tồn tại trong phản hồi trước khi chọn nó.
Tham chiếu DOMParser cung cấp một phép so sánh phía trình duyệt để chuyển đổi đánh dấu thành cây tài liệu; Cheerio cung cấp một mô hình phân tích phía máy chủ giống jQuery cho Node.js.
Tốt nhất cho: việc trích xuất nhanh từ các phản hồi HTML đầy đủ.
So Sánh Bên Cạnh
| Công cụ | Lớp chính | Ngôn ngữ | Hàng đợi quét tích hợp sẵn | Động cơ trình duyệt | Chủ sở hữu hạ tầng |
|---|---|---|---|---|---|
| Scrapeless Scraping Browser | Thời gian chạy trình duyệt được quản lý | Bất kỳ khách hàng nào có thể sử dụng đường dẫn kết nối được hỗ trợ | Không | Thời gian chạy dựa trên Chromium được quản lý | Scrapeless vận hành hạ tầng trình duyệt |
| Scrapy | Trình thu thập đầy đủ | Python | Có | Không có riêng | Đội ngũ của bạn |
| Playwright | Tự động hóa trình duyệt | JavaScript/TypeScript, Python, Java, .NET | Không | Chromium, Firefox, WebKit | Đội ngũ của bạn hoặc một dịch vụ trình duyệt |
| Crawlee | Điều phối trình thu thập | JavaScript/TypeScript | Có | Thông qua Playwright hoặc Puppeteer | Đội ngũ của bạn |
| Puppeteer | Tự động hóa trình duyệt | JavaScript/TypeScript | Không | Hỗ trợ Chrome và Firefox | Đội ngũ của bạn hoặc một dịch vụ trình duyệt |
| Selenium | Tự động hóa WebDriver | Nhiều ngôn ngữ | Không | Các trình duyệt chính | Đội ngũ của bạn hoặc nhà cung cấp Grid |
| Cheerio | Phân tích HTML | JavaScript/TypeScript | Không | Không có | Đội ngũ của bạn |
Làm Thế Nào Để Chọn Framework Đúng?
Xem xét một phản hồi đại diện trước khi chọn công cụ. Nếu các trường cần thiết xuất hiện trong HTML trả về, hãy sử dụng một trình phân tích hoặc trình thu thập và tránh chi phí từ trình duyệt. Nếu trang cần tập lệnh hoặc tương tác, hãy chọn một thư viện trình duyệt hoặc thời gian chạy được quản lý.
Sau đó, khớp với hệ thống xung quanh:
- Chọn Scrapy khi việc quét và đường ống mục là vấn đề chính.
- Chọn Cheerio khi phân tích HTML tĩnh trong Node.js là toàn bộ công việc.
- Chọn Playwright hoặc Puppeteer khi mã ứng dụng cần kiểm soát trang trực tiếp.
- Chọn Selenium khi tính tương thích WebDriver hoặc hạ tầng hiện có là quyết định.
- Chọn Crawlee khi một ứng dụng Node.js cần hàng đợi và các loại trình thu thập hỗn hợp.
- Thêm Scrapeless khi việc vận hành trình duyệt, định tuyến proxy hoặc tính nhất quán phiên cần được quản lý bên ngoài ứng dụng.
Các Tình Huống Sử Dụng Thông Thường cho Các Framework Quét Web
- Giám sát danh mục. Khám phá các trang sản phẩm và chuẩn hóa trường giá công khai hoặc tính khả dụng.
- Tổng hợp nội dung. Thu thập tiêu đề, ngày, tác giả và URL chính từ các phần công khai.
- Đảm bảo chất lượng. So sánh các trang đã phản hồi với nội dung, siêu dữ liệu và liên kết mong đợi.
- Dữ liệu nghiên cứu. Thu thập các hồ sơ công khai có ràng buộc với các URL nguồn và ghi lại bối cảnh.
- Ngữ cảnh đại lý. Biến các trang hiện tại thành đầu vào có cấu trúc trong khi bảo tồn nguồn có thể theo dõi.
Giữ phạm vi quét rõ ràng và khối lượng yêu cầu tỷ lệ với nhau. Tôn trọng các điều khoản của trang, trách nhiệm về quyền riêng tư, và các điều khiển truy cập kỹ thuật. Các khách hàng HTTP cũng nên xác thực trạng thái, chuyển hướng và các loại phương tiện mong đợi theo các đặc điểm về ngữ nghĩa HTTP.
Tại sao việc chọn framework web scraping lại khó?
Nhiều so sánh công cụ coi các framework là thay thế cho nhau khi chúng nằm ở các lớp khác nhau. Một parser không thể nhấp vào nút. Một thư viện trình duyệt không tự động cung cấp biên giới thu thập dữ liệu. Một crawler không loại bỏ chi phí hoạt động của trình duyệt. Một runtime được quản lý không định nghĩa lược đồ trích xuất của ứng dụng.
Kiến trúc rõ ràng nhất gán một chủ sở hữu cho mỗi vấn đề: khám phá, thu thập, kết xuất, trích xuất, xác thực và lưu trữ. Một công việc tĩnh nhỏ có thể sử dụng một thư viện cho một số trong số đó. Một công việc động trong sản xuất thường kết hợp một crawler, runtime trình duyệt và pipeline dữ liệu.
Kết luận: chọn lớp trước khi chọn thư viện
Scrapeless Scraping Browser đứng đầu cho các đội cần thực hiện trình duyệt được quản lý, trong khi Scrapy vẫn là crawler đầy đủ mạnh nhất trong Python. Playwright, Crawlee, Puppeteer, Selenium và Cheerio mỗi cái phù hợp với một lớp và sở thích ngôn ngữ riêng biệt.
Bắt đầu với phản hồi mục tiêu, không phải là biểu đồ độ phổ biến. Xác nhận xem dữ liệu có trong HTML ban đầu không, liệt kê các tương tác mà trang yêu cầu và quyết định ai sẽ vận hành hạ tầng trình duyệt. Framework phù hợp sẽ dễ dàng xác định hơn sau khi những sự thật đó đã được biết đến.
Sẵn sàng chạy công việc trình duyệt mà không quản lý hạ tầng trình duyệt?
Xem xét giá Scrapeless, khám phá Scraping Browser, hoặc tham gia vào cộng đồng Discord của Scrapeless và cộng đồng Telegram.
Câu hỏi thường gặp
Q: Framework web scraping tốt nhất cho người mới bắt đầu là gì?
Cheerio là một điểm bắt đầu đơn giản khi trang là tĩnh và người học biết JavaScript. Scrapy cung cấp cấu trúc hơn cho người dùng Python. Playwright dễ biện minh hơn khi mục tiêu đầu tiên đã yêu cầu tương tác với trình duyệt.
Q: Framework nào tốt nhất cho các trang web nặng về JavaScript?
Playwright và Puppeteer đều thực thi JavaScript trang. Selenium cũng điều khiển trình duyệt thật, trong khi Crawlee có thể điều phối các crawler Playwright hoặc Puppeteer. Scrapeless hữu ích khi runtime trình duyệt và lớp mạng cần được quản lý.
Q: Beautiful Soup có phải là một framework web scraping không?
Beautiful Soup chủ yếu là một thư viện phân tích HTML và XML. Nó hữu ích cho việc trích xuất sau khi một thành phần khác lấy trang, nhưng nó không cung cấp một crawler hoàn chỉnh hay thực thi JavaScript của trình duyệt.
Q: Scrapy có nhanh hơn tự động hóa trình duyệt không?
Crawl HTTP trực tiếp thường sử dụng ít tài nguyên hơn là chạy một trình duyệt. So sánh có ý nghĩa phụ thuộc vào việc phản hồi máy chủ có chứa dữ liệu cần thiết hay không. Một yêu cầu nhanh hơn không hữu ích khi các trường cần thiết chỉ xuất hiện sau khi kết xuất.
Q: Có thể sử dụng Scrapy và Playwright cùng nhau không?
Có. Một crawler có thể sử dụng các yêu cầu trực tiếp cho các tuyến tĩnh và gửi các trang động đã chọn qua một con đường trình duyệt. Giữ lược đồ trích xuất nhất quán giữa cả hai con đường.
Q: Tôi có cần dịch vụ trình duyệt được quản lý không?
Không phải cho mọi dự án. Tự động hóa trình duyệt cục bộ là hợp lý cho phát triển và các công việc giới hạn. Một runtime được quản lý trở nên hữu ích khi việc triển khai trình duyệt, định tuyến proxy, tính nhất quán phiên, và năng lực tiêu tốn nhiều công sức hơn là logic trích xuất.
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.



