Quay lại blog

Proxy cho việc thu thập dữ liệu Aviasales, Booking và Skyscanner: cách thu thập giá mà không bị chặn

Hướng dẫn đầy đủ về cách chọn và cấu hình proxy để theo dõi giá trên các trang tổng hợp du lịch: loại proxy nào nên sử dụng, cách tránh bị chặn và thu thập dữ liệu từ Aviasales, Booking, Skyscanner.

📅9 tháng 3, 2026
```html

Các trang tổng hợp du lịch như Aviasales, Booking, Skyscanner đang tích cực bảo vệ mình khỏi việc thu thập dữ liệu tự động - chặn IP sau 10-20 yêu cầu, hiển thị captcha, làm sai lệch giá cho bot. Nếu bạn đang theo dõi giá vé máy bay hoặc khách sạn cho dịch vụ của mình, chương trình đối tác hoặc phân tích thị trường, nếu không có proxy được cấu hình đúng, bạn sẽ bị cấm chỉ sau vài phút hoạt động của trình thu thập dữ liệu.

Trong hướng dẫn này, chúng ta sẽ xem xét loại proxy nào cần thiết cho việc thu thập dữ liệu ổn định từ các trang du lịch, cách cấu hình xoay vòng IP, vượt qua các hệ thống chống bot của Cloudflare và Akamai, và những lỗi nào dẫn đến việc bị chặn ngay cả khi sử dụng proxy.

Tại sao các trang tổng hợp du lịch chặn việc thu thập dữ liệu và họ làm điều đó như thế nào

Các trang tổng hợp du lịch chịu thiệt hại thực sự từ việc thu thập dữ liệu: mỗi yêu cầu đến API của họ tốn tiền (họ phải trả cho các hãng hàng không và khách sạn để có quyền truy cập vào dữ liệu), và các đối thủ sử dụng giá đã thu thập để thu hút khách hàng. Do đó, Aviasales, Booking, Skyscanner, Kayak đầu tư hàng triệu vào việc bảo vệ chống bot.

Các phương pháp chính để phát hiện việc thu thập dữ liệu

1. Phân tích tần suất yêu cầu từ một IP. Người dùng thông thường thực hiện 3-5 yêu cầu tìm kiếm trong một phiên, trong khi trình thu thập dữ liệu thực hiện hàng trăm yêu cầu mỗi phút. Nếu từ IP của bạn có hơn 15-20 yêu cầu trong một phút, hệ thống sẽ đánh dấu nó là nghi ngờ. Sau 50-100 yêu cầu - sẽ bị chặn trong 24 giờ hoặc vĩnh viễn.

2. Nhận diện trình duyệt. Các trang du lịch thu thập hàng chục tham số: độ phân giải màn hình, múi giờ, phông chữ đã cài đặt, dấu vân tay WebGL, dấu vân tay canvas, ngữ cảnh âm thanh. Nếu các tham số này không khớp với vị trí địa lý được khai báo của IP (ví dụ, IP từ Moscow nhưng múi giờ là UTC+8) - đây là dấu hiệu của proxy hoặc VPN.

3. Kiểm tra độ tin cậy của IP. Các trang web sử dụng cơ sở dữ liệu của các nhà cung cấp proxy nổi tiếng, trung tâm dữ liệu, máy chủ VPN. Nếu IP của bạn có trong các cơ sở dữ liệu như vậy (ví dụ, MaxMind GeoIP2, IPQualityScore, SEON), các yêu cầu sẽ bị chặn hoặc hiển thị captcha. Booking và Skyscanner đặc biệt nghiêm ngặt với IP từ các dải Amazon AWS, Google Cloud, DigitalOcean.

4. Phân tích hành vi. Các hệ thống chống bot theo dõi chuyển động chuột, tốc độ cuộn, thời gian dừng giữa các lần nhấp chuột. Selenium và Puppeteer mà không có các bản vá bổ sung để lại dấu vết: thuộc tính navigator.webdriver, không có plugin, kích thước cửa sổ không điển hình. Ngay cả với proxy, lưu lượng truy cập như vậy cũng dễ dàng bị nhận diện.

5. Nhận diện TLS. Các hệ thống chống bot hiện đại (Cloudflare, Akamai) phân tích các tham số của quá trình bắt tay TLS: thứ tự cipher suites, mở rộng, phiên bản giao thức. Thư viện Python requests và các thư viện tiêu chuẩn có dấu vân tay TLS khác với các trình duyệt - điều này ngay lập tức tiết lộ bot.

Trường hợp thực tế: Một trong những khách hàng của chúng tôi đã thu thập giá trên Booking qua 100 proxy từ trung tâm dữ liệu (DigitalOcean). Sau 2 giờ làm việc, tất cả các IP đã bị chặn vĩnh viễn - Booking đã phát hiện dải địa chỉ IP của trung tâm dữ liệu và đưa vào danh sách đen. Chuyển sang proxy cư trú đã giải quyết vấn đề: trong một tháng làm việc - không có lần nào bị chặn.

Các loại proxy nào phù hợp cho việc theo dõi giá: so sánh

Để thu thập dữ liệu từ các trang tổng hợp du lịch, có ba loại proxy được sử dụng: proxy cư trú, proxy di động và proxy trung tâm dữ liệu. Mỗi loại có những ưu điểm, nhược điểm và kịch bản sử dụng riêng. Việc lựa chọn phụ thuộc vào khối lượng thu thập dữ liệu, ngân sách và yêu cầu về tính ẩn danh.

Loại proxy Mức độ tin cậy của các trang web Tốc độ Chi phí (tương đối) Tốt nhất cho
Proxy cư trú Rất cao (IP của người dùng tại nhà) Trung bình (300-800 ms) $$$ (theo lưu lượng) Booking, Expedia, Airbnb - các trang web có bảo vệ nghiêm ngặt
Proxy di động Tối đa (IP của nhà mạng di động) Thấp (500-1500 ms) $$$$ (đắt nhất) Thu thập dữ liệu từ các phiên bản di động, yêu cầu API, vượt qua Cloudflare
Proxy trung tâm dữ liệu Thấp (dễ bị phát hiện) Rất cao (50-150 ms) $ (rẻ nhất) API Aviasales, các trang tổng hợp ít được bảo vệ hơn, thử nghiệm

Đặc điểm lựa chọn cho các trang du lịch cụ thể

Aviasales và Skyscanner - tương đối thân thiện với việc thu thập dữ liệu qua API (nếu bạn có quyền truy cập đối tác). Đối với thu thập dữ liệu từ web, chỉ cần proxy cư trú với việc xoay vòng mỗi 5-10 yêu cầu. Proxy trung tâm dữ liệu hoạt động, nhưng yêu cầu một lượng lớn IP (tối thiểu 500 địa chỉ) và xoay vòng chậm (không thường xuyên hơn 1 yêu cầu trong 30 giây từ một IP).

Booking.com và Expedia - sử dụng Cloudflare Enterprise với các quy tắc nghiêm ngặt. Proxy trung tâm dữ liệu bị chặn trong 90% trường hợp ngay cả khi thu thập dữ liệu chậm. Chỉ cần proxy cư trú hoặc di động, cộng với mô phỏng trình duyệt thực (Selenium Stealth, Puppeteer Extra với các plugin). Xoay vòng IP - sau mỗi 3-5 yêu cầu.

Airbnb - một trong những trang web được bảo vệ nhất. Yêu cầu proxy cư trú với vị trí địa lý khớp với yêu cầu tìm kiếm (nếu tìm kiếm khách sạn ở Paris - IP phải là của Pháp). Cookies, referrer, tiêu đề trình duyệt là bắt buộc. Proxy di động cho kết quả tốt nhất cho việc thu thập dữ liệu qua API di động.

Kayak và Momondo - mức độ bảo vệ trung bình. Proxy cư trú là lựa chọn tối ưu. Có thể sử dụng proxy trung tâm dữ liệu, nhưng phải có việc xoay vòng và độ trễ giữa các yêu cầu (tối thiểu 10-15 giây).

Proxy cư trú vs proxy trung tâm dữ liệu: chọn cái nào cho các trang du lịch

Sự khác biệt chính giữa proxy cư trú và proxy trung tâm dữ liệu là nguồn gốc của địa chỉ IP. Proxy cư trú sử dụng IP của các nhà cung cấp dịch vụ Internet tại nhà thực (Rostelecom, MTS, Comcast, Verizon), trong khi proxy trung tâm dữ liệu sử dụng IP của các máy chủ từ các công ty lưu trữ (AWS, Google Cloud, OVH). Các trang du lịch tin tưởng vào IP cư trú vì chúng được sử dụng bởi người dùng thông thường.

Khi nào proxy cư trú là bắt buộc

1. Thu thập dữ liệu từ các trang sử dụng Cloudflare/Akamai. Booking, Expedia, Airbnb sử dụng các hệ thống này - chúng tự động chặn 95% IP từ trung tâm dữ liệu. Proxy cư trú vượt qua kiểm tra vì IP của chúng không có trong các cơ sở dữ liệu của các nhà cung cấp proxy.

2. Thu thập giá có liên quan đến địa lý. Các trang du lịch hiển thị các mức giá khác nhau cho người dùng từ các quốc gia và thành phố khác nhau (do thuế, tỷ giá hối đoái, khuyến mãi địa phương). Nếu bạn cần giá cho một khu vực cụ thể (ví dụ, giá cho cư dân Đức), proxy cư trú với IP của Đức là lựa chọn duy nhất đáng tin cậy.

3. Thu thập dữ liệu lâu dài mà không bị chặn. Nếu bạn theo dõi giá 24/7 trong nhiều tháng, proxy cư trú sẽ có lợi - bạn không phải mất thời gian thay thế các IP bị chặn và cấu hình các proxy mới.

Khi nào có thể sử dụng proxy trung tâm dữ liệu

1. Thu thập dữ liệu qua API chính thức. Nếu bạn có quyền truy cập đối tác vào API của Aviasales, API của Skyscanner - loại proxy không quan trọng, API ít nhạy cảm với nguồn IP. Proxy trung tâm dữ liệu sẽ cung cấp tốc độ cao và chi phí thấp.

2. Thử nghiệm và phát triển trình thu thập dữ liệu. Trong giai đoạn viết và gỡ lỗi mã, hãy sử dụng proxy trung tâm dữ liệu - chúng rẻ hơn, nhanh hơn và không tiếc nếu một vài IP bị cấm.

3. Thu thập dữ liệu từ các trang tổng hợp ít bảo vệ hơn. Một số trang du lịch khu vực hoặc các trang tổng hợp vé xe buýt không sử dụng bảo vệ chống bot tiên tiến. Đối với chúng, proxy trung tâm dữ liệu với một lượng lớn IP và xoay vòng chậm hoàn toàn phù hợp.

Lời khuyên: Kết hợp các loại proxy. Sử dụng proxy cư trú cho các yêu cầu quan trọng (tìm kiếm đầu tiên, nhận token, vượt qua captcha), và proxy trung tâm dữ liệu cho các yêu cầu hàng loạt đến API hoặc các điểm cuối ít bảo vệ hơn. Điều này sẽ giảm chi phí từ 40-60% trong khi vẫn giữ được tính ổn định.

Chiến lược xoay vòng IP: bao lâu thì thay đổi proxy khi thu thập dữ liệu

Việc xoay vòng IP đúng cách là chìa khóa cho việc thu thập dữ liệu lâu dài mà không bị chặn. Nếu thay đổi IP quá thường xuyên, bạn sẽ nhanh chóng cạn kiệt lượng địa chỉ và phải chịu chi phí lưu lượng cao. Nếu quá hiếm - bạn sẽ tích lũy hoạt động nghi ngờ trên một IP và bị cấm.

Các loại xoay vòng proxy

1. Xoay vòng theo yêu cầu (proxy xoay vòng). IP sẽ tự động thay đổi sau mỗi yêu cầu hoặc sau một số lượng yêu cầu nhất định. Hầu hết các nhà cung cấp proxy cư trú đều cung cấp chế độ này: bạn kết nối với một điểm cuối (ví dụ, gate.proxycove.com:8000), và IP sẽ thay đổi ở phía nhà cung cấp.

Ưu điểm: Dễ dàng cấu hình, không cần quản lý lượng IP bằng tay, rủi ro bị chặn một IP là tối thiểu.
Nhược điểm: Không thể kiểm soát các phiên (nếu cần lưu cookies hoặc token), mỗi yêu cầu = IP mới = chi phí lưu lượng mới.

2. Phiên cố định (proxy phiên). IP sẽ được gán cho phiên của bạn trong một khoảng thời gian nhất định (thường là 10-30 phút). Bạn thực hiện một vài yêu cầu từ một IP, sau đó nó sẽ tự động thay đổi. Cấu hình qua các tham số của proxy (ví dụ, thêm session-id123 vào tên đăng nhập).

Ưu điểm: Có thể lưu cookies và token trong phiên, giảm chi phí lưu lượng (một IP = nhiều yêu cầu).
Nhược điểm: Nếu IP bị cấm trong khi phiên đang diễn ra, tất cả các yêu cầu tiếp theo trong phiên đó sẽ bị chặn.

3. Xoay vòng thủ công từ lượng IP. Bạn nhận được một danh sách địa chỉ IP (ví dụ, 1000 cái) và quản lý việc xoay vòng trong mã của trình thu thập dữ liệu: chọn một IP ngẫu nhiên từ danh sách, thực hiện N yêu cầu, chuyển sang cái tiếp theo. Điều này thường thấy ở proxy trung tâm dữ liệu.

Ưu điểm: Kiểm soát hoàn toàn việc xoay vòng, có thể loại trừ các IP bị chặn khỏi lượng.
Nhược điểm: Cần viết logic xoay vòng trong mã, quản lý trạng thái của IP (cái nào đã sử dụng, cái nào bị chặn).

Tần suất xoay vòng được khuyến nghị cho các trang du lịch

Trang web Loại proxy Tần suất xoay vòng Số yêu cầu tối đa từ 1 IP
Booking.com Proxy cư trú Sau 3-5 yêu cầu 5-7
Expedia Proxy cư trú Sau 5-8 yêu cầu 8-10
Airbnb Proxy cư trú/di động Sau 2-4 yêu cầu 3-5
Aviasales Proxy cư trú/trung tâm dữ liệu Sau 10-15 yêu cầu 15-20
Skyscanner Proxy cư trú/trung tâm dữ liệu Sau 8-12 yêu cầu 12-15
Kayak Proxy cư trú Sau 5-10 yêu cầu 10-12

Quan trọng: Đây là các giá trị trung bình. Các giới hạn thực tế phụ thuộc vào thời gian trong ngày (vào ban đêm, các hệ thống chống bot nghiêm ngặt hơn), loại yêu cầu (tìm kiếm vé máy bay = tải nặng hơn cho API so với xem khách sạn), chất lượng mô phỏng trình duyệt. Bắt đầu với các giá trị bảo thủ (ít yêu cầu trên IP), sau đó từ từ tăng lên, theo dõi tỷ lệ bị chặn.

Nhắm mục tiêu địa lý của proxy: tại sao quốc gia và thành phố của địa chỉ IP lại quan trọng

Các trang du lịch hiển thị các mức giá khác nhau tùy thuộc vào vị trí địa lý của người dùng. Đây không phải là lỗi mà là mô hình kinh doanh: các hãng hàng không và khách sạn thiết lập các mức giá khác nhau cho các thị trường khác nhau. Ví dụ, vé máy bay từ Moscow đến New York có thể có giá $600 cho người dùng từ Nga và $750 cho người dùng từ Mỹ (do thuế, cạnh tranh, sức mua).

Cách các trang web xác định vị trí địa lý

1. Theo địa chỉ IP. Phương pháp chính. Các trang web sử dụng cơ sở dữ liệu GeoIP (MaxMind, IP2Location), liên kết IP với thành phố, khu vực, quốc gia. Độ chính xác của việc xác định thành phố là 70-90%, quốc gia là 95-99%.

2. Theo ngôn ngữ trình duyệt và múi giờ. Nếu IP cho thấy Đức, nhưng ngôn ngữ trình duyệt là tiếng Nga và múi giờ là UTC+3 (Moscow) - đây là dấu hiệu của proxy. Trang web có thể hiển thị captcha hoặc chặn yêu cầu.

3. Theo tiền tệ và cài đặt tài khoản. Nếu bạn đã đăng nhập vào tài khoản Booking, trang web đã ghi nhớ quốc gia của bạn khi đăng ký. Thay đổi IP sang một quốc gia khác sẽ gây nghi ngờ - Booking có thể yêu cầu xác nhận danh tính hoặc chặn tài khoản.

Cách chọn vị trí địa lý của proxy đúng cách

Để thu thập giá của một thị trường cụ thể: Sử dụng IP của quốc gia mà bạn quan tâm đến giá cả. Nếu bạn đang theo dõi giá cho thị trường Nga - hãy sử dụng proxy cư trú của Nga. Đối với thị trường châu Âu - proxy từ các quốc gia EU (Đức, Pháp, Ba Lan). Đối với Mỹ - proxy của Mỹ.

Để vượt qua các chặn địa lý: Một số trang du lịch hoặc ưu đãi đặc biệt chỉ có sẵn từ một số quốc gia nhất định. Ví dụ, các chuyến bay nội địa ở Mỹ thường rẻ hơn khi đặt từ IP của Mỹ. Sử dụng proxy của quốc gia cần thiết + cấu hình ngôn ngữ trình duyệt và múi giờ theo quốc gia đó.

Để thu thập dữ liệu toàn cầu: Nếu bạn cần giá cho tất cả các thị trường (ví dụ, cho phân tích), hãy sử dụng một nhóm proxy từ các quốc gia khác nhau. Xoay vòng vị trí địa lý cùng với IP: yêu cầu từ IP của Đức → giá của Đức, yêu cầu từ IP của Pháp → giá của Pháp.

Lỗi: Sử dụng IP của một quốc gia, nhưng tìm kiếm khách sạn/vé ở một quốc gia khác với tiền tệ không khớp. Ví dụ, IP từ Nga, tìm kiếm khách sạn ở Thái Lan, tiền tệ - euro. Điều này trông rất nghi ngờ. Hoặc sử dụng IP của quốc gia đích, hoặc IP của quốc gia thực của bạn với tiền tệ của nó.

Cấu hình proxy cho các trình thu thập dữ liệu và kịch bản phổ biến

Hãy xem xét cách cấu hình proxy cho các công cụ thu thập dữ liệu phổ biến nhất từ các trang du lịch. Các ví dụ được đưa ra cho proxy cư trú với xoay vòng, nhưng cũng phù hợp cho các loại khác.

Python + requests / httpx

Giải pháp đơn giản nhất để thu thập dữ liệu từ API hoặc các trang đơn giản không có JavaScript. Phù hợp cho API của Aviasales, API của Skyscanner, các điểm cuối đơn giản không có Cloudflare.

import requests

# Dữ liệu proxy (thay thế bằng của bạn)
proxy_host = "gate.proxycove.com"
proxy_port = "8000"
proxy_user = "your_username"
proxy_pass = "your_password"

proxies = {
    "http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
    "https": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
}

# Tiêu đề trình duyệt (bắt buộc!)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    "Accept-Language": "en-US,en;q=0.9",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Referer": "https://www.google.com/"
}

# Yêu cầu qua proxy
response = requests.get(
    "https://www.aviasales.com/search",
    proxies=proxies,
    headers=headers,
    timeout=30
)

print(response.status_code)
print(response.text[:500])  # 500 ký tự đầu tiên của phản hồi

Quan trọng: Đối với proxy cư trú với xoay vòng, mỗi yêu cầu mới sẽ tự động nhận được một IP mới. Nếu cần phiên cố định (một IP cho nhiều yêu cầu), hãy thêm ID phiên vào tên đăng nhập: your_username-session-12345.

Selenium (cho các trang có JavaScript)

Booking, Expedia, Airbnb sử dụng JavaScript để hiển thị nội dung và kiểm tra chống bot. Selenium mô phỏng trình duyệt thực, nhưng cần cấu hình bổ sung để vượt qua phát hiện.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

# Cài đặt Chrome
chrome_options = Options()

# Proxy
proxy_host = "gate.proxycove.com"
proxy_port = "8000"
proxy_user = "your_username"
proxy_pass = "your_password"

# Định dạng proxy cho Chrome
chrome_options.add_argument(f'--proxy-server=http://{proxy_host}:{proxy_port}')

# Ẩn tự động hóa
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)

# User-Agent
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36')

driver = webdriver.Chrome(options=chrome_options)

# Xóa thuộc tính webdriver
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

# Xác thực proxy (nếu cần)
# Đối với Chrome, cần tạo một tiện ích mở rộng với xác thực, xem selenium-wire hoặc đơn giản hơn là sử dụng Puppeteer

driver.get("https://www.booking.com/")
print(driver.title)
driver.quit()

Vấn đề: Chrome không hỗ trợ xác thực proxy qua login:password trực tiếp. Giải pháp: sử dụng thư viện selenium-wire (thêm proxy với xác thực), tạo một tiện ích mở rộng Chrome cho xác thực, hoặc sử dụng Puppeteer (Node.js).

Puppeteer (Node.js) - lựa chọn tốt nhất cho các trang phức tạp

Puppeteer mô phỏng trình duyệt tốt hơn Selenium và dễ dàng cấu hình với xác thực proxy. Được khuyến nghị cho Booking, Airbnb, Expedia.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: true,
    args: [
      '--proxy-server=http://gate.proxycove.com:8000',
      '--disable-blink-features=AutomationControlled',
      '--no-sandbox'
    ]
  });

  const page = await browser.newPage();

  // Xác thực proxy
  await page.authenticate({
    username: 'your_username',
    password: 'your_password'
  });

  // Ẩn webdriver
  await page.evaluateOnNewDocument(() => {
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    });
  });

  // User-Agent
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');

  await page.goto('https://www.booking.com/', { waitUntil: 'networkidle2' });
  
  const title = await page.title();
  console.log('Title:', title);

  await browser.close();
})();

Để có bảo vệ tốt hơn khỏi việc phát hiện, hãy sử dụng plugin puppeteer-extra-plugin-stealth - nó tự động ẩn tất cả các dấu hiệu của tự động hóa.

Giải pháp có sẵn: Scrapy, Crawlee

Scrapy (Python) - framework cho việc thu thập dữ liệu quy mô lớn. Hỗ trợ proxy qua middleware. Ví dụ cấu hình trong settings.py:

# settings.py
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
}

# Trong spider
class TravelSpider(scrapy.Spider):
    def start_requests(self):
        proxy = "http://your_username:your_password@gate.proxycove.com:8000"
        yield scrapy.Request(
            url="https://www.aviasales.com/",
            meta={'proxy': proxy},
            callback=self.parse
        )

Crawlee (Node.js) - framework hiện đại với việc xoay vòng proxy tích hợp, vượt qua các hệ thống chống bot, tự động retry. Rất phù hợp cho các trang du lịch.

Vượt qua các hệ thống chống bot của Cloudflare, PerimeterX, Akamai

Ngay cả với các proxy cư trú chất lượng cao, bạn có thể gặp phải các chặn nếu không vượt qua các hệ thống chống bot đúng cách. Booking sử dụng Cloudflare, Airbnb - PerimeterX, một số trang - Akamai Bot Manager. Những hệ thống này phân tích không chỉ IP mà còn hành vi, dấu vân tay của trình duyệt, quá trình bắt tay TLS.

Cloudflare: các phương pháp chính để vượt qua

1. Sử dụng tự động hóa trình duyệt. Cloudflare kiểm tra thử thách JavaScript, được thực hiện trong trình duyệt. Các yêu cầu HTTP đơn giản (requests, curl) sẽ không vượt qua kiểm tra. Cần sử dụng Puppeteer, Playwright hoặc Selenium với các cài đặt đúng.

2. Ẩn các dấu hiệu của tự động hóa. Cài đặt puppeteer-extra-plugin-stealth (Node.js) hoặc undetected-chromedriver (Python). Những thư viện này sẽ sửa đổi trình duyệt, loại bỏ các thuộc tính navigator.webdriver, window.chrome, thay đổi các quyền API.

3. Dấu vân tay TLS đúng cách. Cloudflare phân tích quá trình bắt tay TLS. Sử dụng các thư viện mô phỏng TLS của các trình duyệt: curl-impersonate (mô phỏng TLS của Chrome/Firefox), tls-client (Go), hrequests (Python).

4. Giải quyết captcha tự động. Nếu Cloudflare hiển thị captcha (Turnstile), hãy sử dụng các dịch vụ giải captcha: 2Captcha, Anti-Captcha, CapSolver. Chúng tích hợp qua API và có giá từ $1-3 cho 1000 giải pháp.

PerimeterX (Airbnb, một số trang du lịch)

PerimeterX là một trong những hệ thống chống bot phức tạp nhất. Nó phân tích hành vi của người dùng (chuyển động chuột, nhấp chuột, cuộn trang), tạo dấu vân tay của thiết bị, kiểm tra cookies và localStorage.

Các phương pháp vượt qua:

1. Mô phỏng hành vi của người dùng. Thêm thời gian ngẫu nhiên giữa các hành động (2-5 giây), di chuyển chuột, cuộn trang. Trong Puppeteer, sử dụng thư viện ghost-cursor để có chuyển động chuột thực tế.

2. Lưu cookies và localStorage. PerimeterX tạo ra các token được lưu trữ trong cookies (_px3, _pxhd) và localStorage. Nếu bạn thay đổi IP nhưng vẫn lưu cookies - điều này sẽ gây nghi ngờ. Hoặc thay đổi IP + xóa cookies, hoặc sử dụng phiên cố định (một IP = một phiên với cookies).

3. Sử dụng proxy di động. PerimeterX nghiêm ngặt hơn với IP từ trung tâm dữ liệu. Proxy di động cho kết quả tốt hơn trong việc vượt qua PerimeterX.

Akamai Bot Manager

Akamai phân tích dữ liệu cảm biến (gia tốc kế, con quay hồi chuyển trên di động), dấu vân tay WebGL, ngữ cảnh âm thanh, hiệu suất của thiết bị. Việc vượt qua yêu cầu mô phỏng trình duyệt tiên tiến.

Khuyến nghị: Sử dụng trình duyệt thực (không headless), proxy di động, thêm độ trễ ngẫu nhiên, mô phỏng các sự kiện cảm ứng (touch events). Đối với các trường hợp phức tạp - sử dụng các trang trại trình duyệt (BrowserStack, LambdaTest) hoặc trình duyệt chống phát hiện (AdsPower, Multilogin).

Những lỗi phổ biến khi thu thập dữ liệu từ các trang du lịch qua proxy

Ngay cả những nhà phát triển có kinh nghiệm cũng mắc phải những lỗi dẫn đến việc bị chặn. Dưới đây là những vấn đề thường gặp nhất và giải pháp của chúng.

Lỗi 1: Sử dụng một User-Agent cho tất cả các yêu cầu

Nếu tất cả các yêu cầu của bạn đến từ cùng một User-Agent (ví dụ, Python requests tiêu chuẩn: python-requests/2.28.0), điều này ngay lập tức tiết lộ bot. Ngay cả khi bạn thay đổi IP, trang web vẫn thấy UA giống nhau và liên kết các yêu cầu.

Giải pháp: Sử dụng danh sách các User-Agent thực tế của các trình duyệt (Chrome, Firefox, Safari) và xoay vòng chúng. Thư viện fake-useragent (Python) tự động tạo ra các UA ngẫu nhiên.

Lỗi 2: Tốc độ yêu cầu quá cao

Trình thu thập dữ liệu thực hiện 100 yêu cầu mỗi giây - điều này về mặt vật lý là không thể đối với con người. Ngay cả với các IP khác nhau, các hệ thống chống bot phát hiện hoạt động bất thường qua các mẫu (tất cả các yêu cầu đến chính xác sau 0.01 giây).

Giải pháp: Thêm độ trễ ngẫu nhiên giữa các yêu cầu: time.sleep(random.uniform(2, 5)). Đối với các trang du lịch, tối ưu là: 2-5 giây giữa các yêu cầu từ một IP, 0.5-2 giây giữa các yêu cầu từ các IP khác nhau.

Lỗi 3: Bỏ qua cookies và phiên

Các trang du lịch sử dụng cookies để theo dõi các phiên, lưu trữ token của các hệ thống chống bot, cá nhân hóa giá cả. Nếu bạn thực hiện mỗi yêu cầu mà không có cookies (như một người dùng mới), điều này sẽ gây nghi ngờ.

Giải pháp: Sử dụng requests.Session() (Python) hoặc lưu cookies giữa các yêu cầu trong Puppeteer. Đối với các phiên cố định (một IP = nhiều yêu cầu), nhất thiết phải lưu cookies.

Lỗi 4: Không khớp vị trí địa lý của IP và các tham số của trình duyệt

IP từ Đức, nhưng ngôn ngữ trình duyệt là tiếng Nga, múi giờ là UTC+3, tiền tệ là ruble. Các hệ thống chống bot thấy sự không khớp này và chặn yêu cầu.

Giải pháp: Đồng bộ hóa các tham số của trình duyệt với vị trí địa lý của proxy. Nếu sử dụng IP của Đức - hãy đặt ngôn ngữ Đức (Accept-Language: de-DE), múi giờ Europe/Berlin, tiền tệ EUR.

Lỗi 5: Sử dụng proxy miễn phí hoặc chất lượng thấp

Các proxy miễn phí và các proxy công cộng giá rẻ đã bị chặn trên tất cả các trang du lịch lớn. Các IP của chúng có trong danh sách đen, có uy tín kém (đã được sử dụng cho spam, DDoS).

Giải pháp: Sử dụng các proxy cư trú hoặc di động chất lượng cao từ các nhà cung cấp đáng tin cậy. Kiểm tra uy tín của IP qua các dịch vụ IPQualityScore, Scamalytics trước khi sử dụng.

Danh sách kiểm tra trước khi khởi động trình thu thập dữ liệu:
✅ Proxy - cư trú hoặc di động, với vị trí địa lý cần thiết
✅ User-Agent - trình duyệt thực, được xoay vòng
✅ Cookies - được lưu trong phiên
✅ Độ trễ - 2-5 giây giữa các yêu cầu
✅ Xoay vòng IP - sau 3-10 yêu cầu (tùy thuộc vào trang web)

```