User-Agent Rotation Cho Web Scraping: Tại Sao Và Cách Làm
User-Agent là một trong những signals đầu tiên websites check để detect bots. Bài viết hướng dẫn rotate User-Agent hiệu quả.
User-Agent Là Gì?
User-Agent là header HTTP cho biết browser và OS của bạn:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Tại Sao Phải Rotate?
- 1 User-Agent + nhiều requests = suspicious
- Default Python UA bị block ngay
- Websites log và pattern match
- Rotation = giả lập nhiều users
User-Agent Nên Tránh
# ❌ Default Python - bị block ngay
python-requests/2.28.0
# ❌ Quá cũ
Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/50.0
# ❌ Headless giveaway
HeadlessChrome/120.0.0.0
User-Agents Nên Dùng (2026)
user_agents = [
# Chrome Windows
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
# Chrome Mac
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
# Firefox Windows
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0",
# Safari Mac
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15",
# Edge
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0"
]
Python Implementation
import requests
import random
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
]
def get_random_headers():
return {
"User-Agent": random.choice(user_agents),
"Accept": "text/html,application/xhtml+xml",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br"
}
response = requests.get(url, headers=get_random_headers())
Thư Viện Hữu Ích
# fake-useragent - tự động generate
pip install fake-useragent
from fake_useragent import UserAgent
ua = UserAgent()
print(ua.random) # Random UA mỗi lần
Best Practices
- Dùng UA mới nhất (update thường xuyên)
- Match UA với Accept headers
- Consistency trong session
- Kết hợp với proxy rotation
VinaProxy + User-Agent Rotation
- Residential IP + rotating UA = stealth
- Bypass detection hiệu quả
- Giá chỉ $0.5/GB
