Mới! |Một lần gọi API, nhận dữ liệu sạch. Không cần scraper.Nhận 10,000 token miễn phí →

Selenium Python (3). Cách Vượt Qua Phát Hiện Selenium Bằng Python: User Agents và Thực Thi Nền

Tìm hiểu cách vượt qua phát hiện duyệt tự động bằng Python, user agents và thực thi nền. Nâng cao kỹ năng web scraping và tự động hóa của bạn.

Đã đăng3 tháng 6, 2024
Thời gian đọc4 phút
Tác giảBrandon Perry

Quét web và tự động hóa trình duyệt đã trở thành một phần không thể thiếu đối với nhiều doanh nghiệp và nhà phát triển. Tuy nhiên, hiện nay nhiều trang web phát hiện và chặn tính năng duyệt tự động. Bài viết này sẽ khám phá cách vượt qua tính năng phát hiện Selenium bằng Python bằng cách thao tác tác nhân người dùng và chạy Selenium ở chế độ nền. Chúng tôi sẽ đi sâu vào các bước, công cụ và phương pháp hay nhất chi tiết để đảm bảo việc quét web thành công.

Hiểu Về Phát Hiện Selenium#

Trước khi chúng ta vượt qua phát hiện, hãy tìm hiểu cách nó hoạt động. Các trang web có thể phát hiện Selenium bằng cách kiểm tra sự có mặt của các web driver flags và thuộc tính nhất định. Khi một trang web xác định được các flags này, nó có thể chặn truy cập hoặc hiển thị dữ liệu sai lệch. Chẳng hạn, khi bạn mở một trang web bằng trình duyệt Chrome tiêu chuẩn, nó phản hồi như mong đợi. Tuy nhiên, khi bạn mở cùng trang web bằng Selenium, trang web có thể phát hiện sự tự động hóa và chặn nó. Phát hiện này xảy ra vì Selenium đặt các flags cụ thể mà các trang web có thể tìm kiếm.

Thay Đổi WebDriver Flags#

Để bỏ qua việc phát hiện Selenium, một phương pháp hiệu quả là sửa đổi cờ WebDriver.

  1. Cấu Hình Firefox: Mở trang cấu hình Firefox bằng cách nhập about:config trong thanh địa chỉ. Xác định vị trí cờ liên quan đến WebDriver và đặt nó thành false.
  2. Triển khai Code:
from selenium import webdriver

# Set Firefox preferences
options = webdriver.FirefoxOptions()
options.set_preference("dom.webdriver.enabled", False)
options.set_preference('useAutomationExtension', False)

driver = webdriver.Firefox(options=options)

Script này vô hiệu hóa cờ phát hiện WebDriver, làm cho trình duyệt trông giống như một phiên bản do người dùng điều khiển thông thường.

Tác nhân người dùng#

User agent là một chuỗi ký tự mà trình duyệt gửi tới máy chủ web để nhận dạng chính nó. Thay đổi chuỗi user agent có thể làm cho các yêu cầu Selenium không thể phân biệt với các yêu cầu trình duyệt thông thường.

Các bước để thay đổi tác nhân người dùng:

  1. Xác định chuỗi tác nhân người dùng phổ biến: Ví dụ: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  2. Triển khai Thay đổi trong Selenium:
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)

Bằng cách đặt tác nhân người dùng tùy chỉnh, chúng tôi có thể bỏ qua nhiều phát hiện cơ bản.

Chạy Selenium ở Chế độ Nền#

Chạy trình duyệt ở chế độ nền là một khía cạnh quan trọng khác để tránh bị phát hiện. Điều này có thể đạt được bằng cách chạy trình duyệt ở chế độ không đầu.

Thực hiện:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(options=options)

Chạy ở chế độ không đầu có nghĩa là không hiển thị giao diện đồ họa, điều này rất cần thiết để chạy các tác vụ tự động trên máy chủ.

Tắt thông báo và âm thanh của trình duyệt#

Duyệt web tự động thường liên quan đến việc xử lý các cửa sổ pop-up và thông báo không mong muốn. Vô hiệu hóa những điều này có thể hợp lý hóa quy trình.

Ví dụ về mã:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument("--mute-audio")

driver = webdriver.Chrome(options=options)

Script này vô hiệu hóa thông báo và tắt âm thanh, đảm bảo tự động hóa không bị gián đoạn.

Ví dụ về Phân tích Dữ liệu#

Hãy xem xét một ví dụ thực tế về phân tích biệt danh từ một trang web tạo ra các tên người dùng ngẫu nhiên.

bước:

  1. Tải trang web và tương tác với các phần tử:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

# Locate the username field and extract nicknames
usernames = []
for _ in range(10):
    nickname = driver.find_element(By.ID, "nickname").text
    usernames.append(nickname)
    driver.find_element(By.ID, "generate").click()
print(usernames)

Phần kết luận#

Bằng cách thao tác các cờ WebDriver, thay đổi user agent, chạy Selenium ở chế độ nền và vô hiệu hóa thông báo của trình duyệt, bạn có thể hiệu quả vượt qua phát hiện Selenium. Những kỹ thuật này là cần thiết để thực hiện web scraping và tự động hóa không bị phát hiện một cách liền mạch. Việc triển khai những phương pháp này đảm bảo rằng các tác vụ tự động hóa của bạn tiếp tục hoạt động không bị gián đoạn và hiệu quả. Hãy nhớ luôn sử dụng web scraping và tự động hóa một cách đạo đức, tôn trọng điều khoản dịch vụ của website và luật bảo vệ dữ liệu cá nhân. Để tìm hiểu thêm các kỹ thuật nâng cao và cập nhật thường xuyên, hãy theo dõi blog của chúng tôi trên FineProxy.org. Vui lòng chia sẻ ý tưởng và phản hồi của bạn trong phần bình luận bên dưới. Nếu bạn thích bài viết này, đừng quên đăng ký kênh của chúng tôi và bấm nút like. Chúc bạn scraping vui vẻ!

Bằng cách triển khai các bước này và điều chỉnh cài đặt khi cần thiết, bạn có thể đảm bảo các dự án tự động hóa của mình chạy mịn màng và không bị phát hiện.