
Anh Tuan
Data Science Expert

Khi thực hiện web scraping, sử dụng user agent sai có thể dẫn đến bị chặn ngay lập tức. Các trang web thường dựa vào user agent để phân biệt giữa người dùng thực và bot. Để tránh bị phát hiện, điều quan trọng là phải sử dụng user agent được định dạng tốt và cập nhật thường xuyên trong các dự án web scraping của bạn.
Trong hướng dẫn này, bạn sẽ khám phá:
Hãy bắt đầu! 🚀
User Agent (UA) là một chuỗi được gửi trong tiêu đề yêu cầu HTTP để xác định trình duyệt, hệ điều hành và các chi tiết khác. Máy chủ web sử dụng thông tin này để hiển thị nội dung phù hợp cho thiết bị của người dùng.
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Mozilla/5.0 – Họ trình duyệt(Windows NT 10.0; Win64; x64) – Chi tiết hệ điều hànhAppleWebKit/537.36 (KHTML, like Gecko) – Công cụ hiển thịChrome/123.0.0.0 – Phiên bản trình duyệtSafari/537.36 – Khung tương thíchBằng cách sửa đổi user agent, bạn có thể làm cho web scraper của mình trông giống như một trình duyệt thực, giảm nguy cơ bị phát hiện.
Hầu hết các trang web phân tích user agent để lọc lưu lượng truy cập của bot. Nếu scraper của bạn gửi một user agent không hợp lệ hoặc lỗi thời, nó có thể bị chặn ngay lập tức.
Bằng cách sử dụng user agent phù hợp, bạn có thể:
Tuy nhiên, chỉ sử dụng một user agent lặp đi lặp lại vẫn có thể kích hoạt các hệ thống chống bot. Đó là lý do tại sao luân chuyển user agent rất quan trọng.
Dưới đây là danh sách được tuyển chọn các user agent hiệu quả để web scraping:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Mozilla/5.0 (Macintosh; Intel Mac OS X 14.4; rv:124.0) Gecko/20100101 Firefox/124.0
Mozilla/5.0 (X11; Linux i686; rv:124.0) Gecko/20100101 Firefox/124.0
Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.2420.81
💡 Mẹo: Bạn có thể kiểm tra user agent của mình bằng cách truy cập WhatIsMyUserAgent.
Nhiều trang web triển khai cơ chế phát hiện bot chặn các yêu cầu thiếu hoặc có tiêu đề user-agent không chính xác. Trong phần này, chúng ta hãy sử dụng các cách khác nhau để đặt và luân chuyển user agent hiệu quả.
requestsCách đơn giản nhất để định nghĩa user agent là sửa đổi tiêu đề của một yêu cầu bằng thư viện requests phổ biến.
Ví dụ: Đặt User Agent tĩnh
import requests
# Định nghĩa tiêu đề với User-Agent tùy chỉnh
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}
# Gửi yêu cầu với User-Agent tùy chỉnh
response = requests.get("https://httpbin.org/headers", headers=headers)
# In tiêu đề phản hồi
print(response.text)
Kết quả:
{
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}
}
Điều này xác nhận rằng máy chủ nhận và nhận dạng chuỗi user agent một cách chính xác.
Sử dụng một user agent duy nhất lặp đi lặp lại có thể dẫn đến bị chặn. Để tránh điều này, hãy luân chuyển user agent bằng cách sử dụng danh sách được xác định trước.
Ví dụ: Luân chuyển User Agent với random
import requests
import random
# Danh sách các user agent khác nhau
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0"
]
# Chọn một user agent ngẫu nhiên
headers = {"User-Agent": random.choice(user_agents)}
# Gửi yêu cầu với user agent được chọn ngẫu nhiên
response = requests.get("https://httpbin.org/headers", headers=headers)
print(response.text)
Bằng cách luân chuyển user agent, scraper của bạn trông giống người dùng hơn và giảm khả năng bị phát hiện.
fake_useragent để tạo User Agent độngThay vì duy trì một danh sách tĩnh, bạn có thể tạo user agent động bằng thư viện fake_useragent.
Cài đặt:
pip install fake-useragent
Ví dụ: Tạo User Agent ngẫu nhiên
from fake_useragent import UserAgent
import requests
# Tạo đối tượng UserAgent
ua = UserAgent()
# Tạo user agent ngẫu nhiên
headers = {"User-Agent": ua.random}
# Gửi yêu cầu với user agent được tạo động
response = requests.get("https://httpbin.org/headers", headers=headers)
print(response.text)
Phương pháp này cung cấp nhiều loại user agent hơn trong khi vẫn giữ cho chúng được cập nhật.
SeleniumKhi sử dụng Selenium để web scraping, việc đặt user agent yêu cầu sửa đổi tùy chọn trình duyệt.
Ví dụ: Đặt User Agent trong Chrome
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Cấu hình tùy chọn Chrome
chrome_options = Options()
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")
# Khởi chạy trình duyệt với user agent tùy chỉnh
driver = webdriver.Chrome(options=chrome_options)
# Mở trang kiểm tra để xác minh user agent
driver.get("https://httpbin.org/headers")
# Trích xuất và in nội dung trang
print(driver.page_source)
driver.quit()
Bằng cách sử dụng các công cụ tự động hóa trình duyệt như Selenium, bạn có thể mô phỏng hành vi của người dùng thực và bỏ qua các biện pháp chống bot nâng cao.
Để đảm bảo user agent của bạn được đặt chính xác, hãy sử dụng các phương pháp sau:
https://httpbin.org/headersVí dụ: Nhật ký User Agent trong vòng lặp
import requests
import random
import time
# Danh sách user agent
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0"
]
# Vòng lặp qua các yêu cầu
for i in range(5):
user_agent = random.choice(user_agents)
headers = {"User-Agent": user_agent}
response = requests.get("https://httpbin.org/headers", headers=headers)
print(f"Yêu cầu {i+1} - User-Agent: {user_agent}")
time.sleep(2) # Thêm độ trễ để tránh giới hạn tốc độ
Script này ghi lại các user agent khác nhau trên nhiều yêu cầu, giúp bạn gỡ lỗi các chiến lược luân chuyển.
Thay vì sử dụng một user agent tĩnh duy nhất, tốt hơn là luân chuyển chúng một cách động để tránh bị phát hiện. Dưới đây là cách bạn có thể luân chuyển user agent trong Python:
import requests
import random
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
]
headers = {"User-Agent": random.choice(user_agents)}
response = requests.get("https://httpbin.org/headers", headers=headers)
print(response.text)
Script này chọn ngẫu nhiên một user agent từ danh sách, làm cho scraper của bạn khó bị phát hiện hơn.
Ngay cả với các user agent tốt nhất, web scraping yêu cầu các kỹ thuật bổ sung để không bị phát hiện:
Ngay cả với việc luân chuyển user-agent và proxy và tất cả những lời khuyên đó, các trang web vẫn có thể triển khai các kỹ thuật phát hiện nâng cao, chẳng hạn như nhận dạng dấu vân tay, thử thách JavaScript và xác minh CAPTCHA. Đây là lúc CapSolver phát huy tác dụng.
CapSolver chuyên giải quyết các thử thách Capttcha, đảm bảo web scraping không bị gián đoạn. Bằng cách tích hợp CapSolver, bạn có thể tự động giải quyết CAPTCHA và giữ cho scraper của bạn hoạt động trơn tru
Nhận Mã khuyến mãi của bạn cho các giải pháp captcha hàng đầu - CapSolver: CAPTCHA. Sau khi đổi, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, Không giới hạn
Sử dụng user agent đúng là một bước quan trọng trong web scraping. Trong hướng dẫn này, chúng ta đã đề cập đến:
✅ User agent là gì và cách hoạt động của nó
✅ Danh sách các user agent hiệu quả để scraping
✅ Cách đặt và luân chuyển user agent trong Python
✅ Các thực tiễn tốt nhất bổ sung để không bị phát hiện
Bằng cách kết hợp việc luân chuyển user agent với các kỹ thuật chống phát hiện khác, bạn có thể thu thập dữ liệu thành công mà không bị chặn.
1. User agent trong web scraping là gì?
User agent là một chuỗi xác định trình duyệt hoặc phần mềm khách hàng cho máy chủ web. Trong web scraping, nó được sử dụng để bắt chước hoạt động của người dùng thực và tránh bị phát hiện.
2. Web scraping cho mục đích cá nhân có bất hợp pháp không?
Web scraping thường hợp pháp cho mục đích cá nhân, nhưng bạn phải tôn trọng điều khoản dịch vụ của trang web và tránh scraping dữ liệu nhạy cảm hoặc có bản quyền.
3. Mục đích của việc luân chuyển user agent trong web scraping là gì?
Việc luân chuyển user agent giúp tránh bị phát hiện và chặn bằng cách làm cho các yêu cầu trông như đến từ các trình duyệt hoặc thiết bị khác nhau.
4. Làm thế nào tôi có thể ngăn chặn việc bị chặn trong khi web scraping?
Để tránh bị chặn, hãy sử dụng luân chuyển IP, giải quyết CAPTCHA, độ trễ giữa các yêu cầu và đảm bảo tuân thủ robots.txt của trang web.
5. Web scraping có thể ảnh hưởng đến hiệu suất của trang web không?
Có, scraping quá thường xuyên có thể làm quá tải máy chủ của trang web. Điều quan trọng là phải scraping một cách có trách nhiệm với số lượng yêu cầu hạn chế.
So sánh các khung phần mềm đại diện AI tốt nhất cho tự động hóa web, giải CAPTCHA, tuân thủ và quy trình làm việc của đại diện sẵn sàng sản xuất vào năm 2026.

So sánh các thư viện quét trang web Java tốt nhất, bao gồm jsoup, Selenium, Playwright cho Java, HtmlUnit, Apache Nutch và các tùy chọn API.

Học cách giải CAPTCHA trong các quy trình tự động hóa trình duyệt AI bằng Hermes Agent và CapSolver. Hướng dẫn này giải thích cách tích hợp CapSolver để tự động xử lý reCAPTCHA, hCaptcha và các hệ thống CAPTCHA hiện đại khác trong môi trường duyệt web tự động mà không cần viết mã phức tạp.
