Giảm giá bất ngờ: Thưởng thức Giảm 90% Đăng ký của bạn!

⚡️ Nstproxy - Hơn 110 triệu IP cho việc Cào Dữ liệu và Tự động hóa Siêu Tốc, Bắt đầu từ $0.1/GB.

  • Định giá
  • Tài liệu
VI
Liên hệ

© 2025 NST LABS TECH LTD. ALL RIGHTS RESERVED

Sản phẩm

Trình duyệt chống vân tay
Nstbrowser RPA
Vượt qua đám mây
Trình mở khóa web

Giải pháp

Trình duyệt chống vân tay dựa trên đám mây
Quản lý nhiều tài khoản
Rút trích nội dung trang web
Phát hiện chống bot

Nguồn

Định giá
Tải xuống
Thị trường RPA
Chương trình liên kết
Đối tác
Blog
Ghi chú phát hành

Ủng hộ

Liên hệ

Tài liệu

Hợp pháp

Điều kiện
Chính sách bảo mật
Chính sách cookie

Sản phẩmGiải phápNguồnỦng hộHợp pháp

Sản phẩmGiải phápNguồn

Ủng hộHợp pháp

© 2025 NST LABS TECH LTD. ALL RIGHTS RESERVED

Quay lại Blog
headlesschrome
Headless Browser

Trình duyệt không đầu: Làm thế nào để chạy nó trong Playwright?

Một chrome không đầu là gì? Ưu điểm và nhược điểm của nó như thế nào? Trong blog này, chúng ta có thể tìm thấy tất cả thông tin về nó và tìm hiểu cách sử dụng Nstbrowserless để thực hiện quét web.
Jul 16, 2024Tạ Quí Lĩnh

Trình duyệt truyền thống với giao diện đồ họa (GUI) thường tiêu tốn nhiều tài nguyên hệ thống khi tải trọng công việc tăng lên. Ngoài ra, nó yêu cầu một cửa sổ hiển thị để hiển thị các trang web, điều này làm chậm quá trình thử nghiệm và hạn chế khả năng mở rộng.

Headlesschrome là công cụ có thể xử lý nội dung động mà không cần trình duyệt thực.

Nó giải quyết vấn đề thử nghiệm tốn tài nguyên, cho phép thử nghiệm hiệu quả hơn và cải thiện khả năng mở rộng.

Làm thế nào để chạy trình duyệt headless trong Python và Selenium?

Hãy bắt đầu đọc bài viết này ngay bây giờ!

Python Headlesschrome là gì?

Trình duyệt của chúng ta là một chương trình máy tính cho phép người dùng truy cập và tương tác với các trang web. Ngược lại, trình duyệt headless không có giao diện đồ họa. Vậy nó có thể làm gì? Nó có khác biệt nhiều không? Đúng vậy! Các tính năng này giúp Python headlesschrome:

  • Truy cập bất kỳ trang web nào trên Internet.
  • Hiển thị các tệp JavaScript được cung cấp bởi trang web.
  • Tương tác với các thành phần của trang web đó.

Chờ đã, bạn có thể thắc mắc làm thế nào chúng ta có thể tương tác với Headlesschrome vì nó không có GUI!

Đừng lo lắng. Hãy để tôi giới thiệu cho bạn về Web Driver.

Thêm một câu hỏi nữa là nó là gì? Web Driver là một framework. Nó cho phép chúng ta điều khiển các trình duyệt web khác nhau thông qua lập trình.

Có ví dụ nào điển hình không? Đúng vậy, chúng ta đều quen thuộc với Selenium. Chúng ta thường sử dụng nó, nhưng bạn có biết rằng nó cũng là một trình duyệt headless quan trọng không?

Ưu điểm của Python headlesschrome:

  1. Tự động hóa các tác vụ. Trình duyệt headless có thể tự động thực hiện các hành động của trình duyệt như nhấp chuột, điền vào biểu mẫu, gửi v.v. Điều này phù hợp cho thử nghiệm tự động và tự động hóa tác vụ.
  2. Tiêu thụ ít tài nguyên hơn. Nó không cần hiển thị các thành phần đồ họa cho trình duyệt và trang web.
  3. Rất nhanh. Headlesschrome không cần chờ tải trang hoàn chỉnh, điều này tăng tốc đáng kể quá trình thu thập dữ liệu.
  4. Mô phỏng hành vi người dùng thực tế. Nó có thể mô phỏng môi trường và hành vi của người dùng trình duyệt, giúp vượt qua các biện pháp chống bot.
  5. Linh hoạt. Nó có thể dễ dàng điều khiển hành vi của trình duyệt thông qua lập trình, chẳng hạn như đặt các tiêu đề yêu cầu, xử lý cookie, xử lý các thành phần trang v.v. Điều này rất hữu ích cho việc thu thập dữ liệu phức tạp hoặc các hoạt động.
  6. Thích ứng. Headlesschrome có khả năng xử lý nhiều loại trang web và nội dung động khác nhau, chẳng hạn như các ứng dụng trang đơn (SPA) hoặc các trang yêu cầu hiển thị JavaScript.

Nhược điểm của Python headlesschrome:

  1. Thiếu hiển thị trực quan để gỡ lỗi và thử nghiệm. Trình duyệt headless không hiển thị trang trực quan trong quá trình thử nghiệm, điều này gây khó khăn cho việc gỡ lỗi và thử nghiệm.
  2. Vấn đề ổn định và độ tin cậy. Do sự thay đổi trong cấu trúc trang web hoặc các vấn đề mạng, headlesschrome cần được xử lý kịp thời.
  3. Cập nhật và bảo trì. Sự phụ thuộc vào các thư viện của bên thứ ba và các bản cập nhật phiên bản trình duyệt có thể yêu cầu cập nhật mã định kỳ để thích ứng với các tính năng mới của trình duyệt hoặc sửa lỗi.
  4. Biện pháp chống thu thập dữ liệu. Các trang web luôn phát hiện và chặn truy cập tự động. Do đó, cần áp dụng một số biện pháp để vượt qua bảo vệ chống bot, chẳng hạn như cấu hình các tiêu đề yêu cầu phù hợp, mô phỏng hành vi con người v.v.

Nstbrowser có thể mô phỏng hành vi con người cao để vượt qua bảo vệ chống bot và mở khóa trang web! Hãy thử miễn phí ngay bây giờ!
Bạn có suy nghĩ hoặc câu hỏi nào về việc thu thập dữ liệu web và Browseless không?
Hãy đến xem những gì các nhà phát triển khác đang chia sẻ trên Discord và Telegram!

6 trình duyệt headless được Python Selenium hỗ trợ

Selenium mạnh mẽ đến mức nào! Nó hỗ trợ bao nhiêu trình duyệt headless? Hãy nêu ra 6 trình duyệt ngay bây giờ! Chúng được điều khiển và thao tác chủ yếu thông qua WebDriver.

  • Chrome
  • Firefox
  • Edge
  • Safari
  • Opera
  • Chromium

3 lựa chọn thay thế tốt nhất cho Python headlesschrome?

Python Selenium headlesschrome không phải là trình duyệt headless duy nhất!

Hãy xem xét các lựa chọn thay thế khác. Một số cung cấp chỉ một ngôn ngữ lập trình, trong khi số khác có thể cung cấp API cho nhiều ngôn ngữ.

1. Puppeteer

Puppeteer là một thư viện Node.js được phát triển bởi Google. Nó cung cấp API cấp cao để điều khiển trình duyệt Chrome hoặc Chromium headless. Puppeteer cung cấp các tính năng mạnh mẽ để tự động hóa các tác vụ của trình duyệt, tạo ảnh chụp màn hình và PDF, cũng như thực hiện mã JavaScript trên các trang web.

2. Playwright

Playwright là một công cụ khác để tự động hóa trang web, được phát triển bởi các thành viên của Microsoft. Về cơ bản, nó cũng là một thư viện Node.js để tự động hóa trình duyệt, nhưng nó cung cấp API cho các ngôn ngữ khác, chẳng hạn như Python, .NET và Java. Nó tương đối nhanh hơn so với Python Selenium.

3. Nstbrowser

Nstbrowser là gì?

Nstbrowser là trình duyệt chống phát hiện hoàn toàn miễn phí. Nó cho phép thực hiện web scraping ở chế độ headless, hoàn toàn giải phóng khỏi các hạn chế tài nguyên cục bộ. Dễ dàng thực hiện web scraping và tự động hóa quy trình.

  • Thực hiện các tác vụ song song hàng loạt một cách dễ dàng, tiết kiệm tài nguyên và thời gian hiệu quả.
  • Thực hiện bất kỳ script và thực hiện các tác vụ phức tạp của trình duyệt hoặc tác vụ web scraping bằng trình duyệt headless.
  • Giám sát sử dụng RAM, CPU và GPU để đảm bảo trình duyệt tiêu thụ đúng lượng tài nguyên.
  • Phản ứng với sự gia tăng lưu lượng đột ngột bằng cách phân bổ tài nguyên một cách linh hoạt để cân bằng và mở rộng tải.
  • Cung cấp các phiên bản máy chủ chuyên dụng để có hiệu suất cao hơn, các tùy chọn cấu hình linh hoạt hơn và sự cô lập tốt hơn.

Cách sử dụng Nstbrowserless để đạt được Headless?

Dưới đây là cách sử dụng Nstbrowserless, sử dụng trình duyệt chống phát hiện Nstbrowser trong container docker và cấu hình chế độ headless để scraping dữ liệu web, cụ thể là scraping ảnh đại diện của người dùng trên trang chủ Explore page TikTok:

Bước 1. Phân tích trang

  • Truy cập trang chủ TikTok.
  • Mở bảng điều khiển phần tử của trang.
  • Tìm phần tử Explore của trang.

Sau đó, bạn sẽ phát hiện rằng phần tử này là phần tử a liên kết với thuộc tính data-e2e="nav-explore".

Phân tích trang

Sau khi nhấp vào phần tử Explore, chúng ta phát hiện rằng trên trang không có ảnh đại diện của người dùng, và chúng ta chỉ có thể lấy tên người dùng.

Tại sao lại như vậy?

Đó là vì chúng ta cần nhấp vào tên người dùng để chuyển đến trang chủ người dùng trước khi có thể lấy ảnh đại diện của người dùng.

Vì vậy, chúng ta cần truy cập trang chủ của mỗi người dùng, sau đó tìm phần tử với thuộc tính data-e2e="explore-item-list", đó là danh sách người dùng động:

Phân tích trang

Bây giờ chúng ta cần hoàn thành phân tích bổ sung.

Trong phần tử div dưới danh sách, có phần tử với thuộc tính data-e2e="explore-card-desc" chứa thẻ a với thuộc tính data-e2e="explore-card-user-link".

Giá trị của thuộc tính href của thẻ a là ID người dùng. Thêm tên miền của TikTok vào trước sẽ dẫn đến trang chủ người dùng.

Chúng ta chuyển đến trang chủ người dùng và

có thể dễ dàng tìm thấy ảnh đại diện người dùng với thuộc tính div[data-e2e="user-page"] div[data-e2e="user-avatar"] span img trong src.

Bước 2. Tải xuống Docker container

shell Copy
docker pull nstbrowser/browserless:0.0.1-beta

Bước 3. Chạy Nstbrowserless container:

shell Copy
docker run -it -e TOKEN=xxx -e SERVER_PORT=8848 -p 8848:8848 --name nstbrowserless nstbrowser/browserless:0.0.1-beta

Bước 4. Cấu hình trình duyệt headless (Python-Playwright):

Python Copy
import json
from urllib.parse import urlencode

from playwright.async_api import async_playwright


async def main():
    async with async_playwright() as playwright:
        config = {
            "once": True,
            "headless": True,  # thiết lập chế độ headless
            "autoClose": True,
            "args": {"--disable-gpu": "", "--no-sandbox": ""},  # Các tham số của trình duyệt cần là một từ điển
            "fingerprint": {
                "name": 'tiktok_scraper',
                "platform": 'windows',  # Hỗ trợ: windows, mac, linux
                "kernel": 'chromium',  # Hỗ trợ chỉ: chromium
                "kernelMilestone": '120',
                "hardwareConcurrency": 8,  # Hỗ trợ: 2, 4, 8, 10, 12, 14, 16
                "deviceMemory": 8,  # Hỗ trợ: 2, 4, 8
            },
        }
        query = {'config': json.dumps(config)}
        profileUrl = f"ws://127.0.0.1:8848/ws/connect?{urlencode(query)}"
        print("URL hồ sơ: ", profileUrl)
        browser = await playwright.chromium.connect_over_cdp(endpoint_url=profileUrl)
        try:
            page = await browser.new_page()
            await page.goto("chrome://version")
            await page.wait_for_load_state('networkidle')
            await page.screenshot(path="chrome_version.png")
        finally:
            await browser.close()


if __name__ == "__main__":
    import asyncio

    asyncio.run(main())

Chạy mã trên, bạn sẽ nhận được thông tin trên trang chrome://version:

kết quả

Tham số --headless trong dòng lệnh khởi động nhân chỉ định rằng nhân chạy trong chế độ headless.

Mã để scraping dữ liệu:

Python Copy
import json
from urllib.parse import urlencode

from playwright.async_api import async_playwright


async def scrape_user_profile(browser, user_home_page):
    # truy cập trang chủ của người dùng và scraping ảnh đại diện của người dùng
    user_page = await browser.new_page()
    try:
        await user_page.goto(user_home_page)
        await user_page.wait_for_load_state('networkidle')
        user_avatar_element = await user_page.query_selector(
            'div[data-e2e="user-page"] div[data-e2e="user-avatar"] span img')
        if user_avatar_element:
            user_avatar = await user_avatar_element.get_attribute('src')
            if user_avatar:
                print(user_avatar)
                # TODO
    finally:
        await user_page.close()


async def main():
    async with async_playwright() as playwright:
        config = {
            "once": True,
            "headless": True,  # hỗ trợ: true hoặc false
            "autoClose": True,
            "args": {"--disable-gpu": "", "--no-sandbox": ""},  # Các tham số của trình duyệt cần là một từ điển
            "fingerprint": {
                "name": 'tiktok_scraper',
                "platform": 'windows',  # Hỗ trợ: windows, mac, linux
                "kernel": 'chromium',  # Hỗ trợ chỉ: chromium
                "kernelMilestone": '120',
                "hardwareConcurrency": 8,  # Hỗ trợ: 2, 4, 8, 10, 12, 14, 16
                "deviceMemory": 8,  # Hỗ trợ: 2, 4, 8
            },
            "proxy": "",  # thiết lập proxy phù hợp nếu bạn không thể truy cập trang web TikTok
        }
        query = {
            'config': json.dumps(config)
        }
        profile_url = f"ws://127.0.0.1:8848/ws/connect?{urlencode(query)}"
        browser = await playwright.chromium.connect_over_cdp(endpoint_url=profile_url)
        tiktok_url = "https://www.tiktok.com"
        try:
            page = await browser.new_page()
            await page.goto(tiktok_url)
            await page.wait_for_load_state('networkidle')
            explore_elem = await page.query_selector('[data-e2e="nav-explore"]')
            if explore_elem:
                await explore_elem.click()
                ul_element = await page.query_selector('[data-e2e="explore-item-list"]')
                if ul_element:
                    li_elements = await ul_element.query_selector_all('div')
                    tasks = []
                    for li in li_elements:
                        # tìm URL liên kết trang chủ người dùng
                        a_element = await li.query_selector('[data-e2e="explore-card-desc"]')
                        if a_element:
                            user_link = await li.query_selector('a[data-e2e="explore-card-user-link"]')
                            if user_link:
                                href = await user_link.get_attribute('href')
                                if href:
                                    tasks.append(scrape_user_profile(browser, tiktok_url + href))
                    await asyncio.gather(*tasks)
        finally:
            await browser.close()


if __name__ == "__main__":
    import asyncio

    asyncio.run(main())

Chạy chương trình:

Chạy chương trình

Như vậy, chúng ta đã hoàn thành việc scraping dữ liệu ảnh đại diện của người dùng trên trang Explore của TikTok home page bằng cách sử dụng Python-Playwright qua Nstbrowserless.

Kết luận

Các trình duyệt headless sở hữu các tính năng mạnh mẽ và phương pháp sử dụng tiện lợi. Chúng có thể dễ dàng và nhanh chóng thực hiện việc scraping dữ liệu web và tự động hóa quy trình.

Trong bài viết này, chúng ta đã tìm hiểu:

  1. Python headlesschrome là gì?
  2. Ưu điểm và nhược điểm của Python headlesschrome.
  3. Cách sử dụng Nstbrowserless để nhanh chóng và hiệu quả scraping dữ liệu web.

Bắt đầu sử dụng Nstbrowser miễn phí ngay bây giờ để thực hiện tất cả các nhiệm vụ của bạn!

Hơn
Cách sử dụng Browserless của Nstbrowser để tự động giải quyết Cloudflare Turnstile (2025)
BrowserlessCloudflare BypassHeadless Browser
Cách sử dụng Browserless của Nstbrowser để tự động giải quyết Cloudflare Turnstile (2025)
Tìm hiểu cách bỏ qua Cloudflare Turnstile bằng dịch vụ Browserless của Nstbrowser và Puppeteer. Hướng dẫn này sẽ hướng dẫn bạn thiết lập, triển khai và những lợi thế của việc tự động hóa các tác vụ thu thập dữ liệu web đồng thời đảm bảo sự tuân thủ và hiệu quả.
Mar 07, 2025Triệu Lệ Chi
Cách sử dụng Browserless của Nstbrowser để vượt qua thử thách Cloudflare 5s (2025)
BrowserlessCloudflare BypassHeadless Browser
Cách sử dụng Browserless của Nstbrowser để vượt qua thử thách Cloudflare 5s (2025)
Tìm hiểu cách bỏ qua Thử thách 5s của Cloudflare bằng dịch vụ Browserless của Nstbrowser và Puppeteer. Hướng dẫn này sẽ hướng dẫn bạn thiết lập, triển khai và những lợi thế của việc tự động hóa các tác vụ thu thập dữ liệu web đồng thời đảm bảo sự tuân thủ và hiệu quả.
Mar 06, 2025Robin Brown
Sử dụng docker Nstbrowser để tự động thích TikTok
Headless Browser
Cách sử dụng Nstbrowser docker để tự động thích và click TikTok?
Hướng dẫn này trình bày cách sử dụng Nstbrowser docker để tự động nhấn "thích" trên TikTok
Jan 08, 2025Carlos Rivera
cạo-youtube-docker
Headless Browser
Cách sử dụng Nstbrowser docker để crawl video YouTube?
Hướng dẫn này sử dụng ảnh Docker Nstbrowser để trình diễn việc thu thập liên kết video YouTube
Jan 08, 2025Tạ Quí Lĩnh
trình duyệt không đầu, không có trình duyệt
Headless Browser
Kiểm tra trình duyệt không đầu: Nó là gì và cách thực hiện?
Kiểm tra trình duyệt không đầu là cách nhanh hơn, đáng tin cậy hơn và hiệu quả hơn để kiểm tra ứng dụng web trong trình duyệt. Đọc blog này và tìm hướng dẫn chi tiết về kiểm tra trình duyệt không đầu.
Sep 12, 2024Triệu Lệ Chi
headlesschrome
Headless Browser
Trình duyệt không đầu: Làm thế nào để chạy nó trong Puppeteer?
Quét web thật dễ dàng với headlesschrome! Trình duyệt không đầu là gì? Tại sao Puppeteer thích hợp cho việc quét web? Tìm hiểu thông tin cụ thể từ hướng dẫn này.
Jul 18, 2024Tạ Quí Lĩnh
Mục lục