Quay lại blog

Tại sao một số trang web không mở được qua proxy: hướng dẫn đầy đủ

Proxy là một công cụ mạnh mẽ, nhưng đôi khi các trang web từ chối mở qua chúng. Tìm hiểu lý do tại sao điều này xảy ra và cách khắc phục.

📅8 tháng 12, 2025
```html

Tại sao một số trang web không mở được qua proxy: hướng dẫn đầy đủ

Proxy là một công cụ không thể thiếu cho web scraping, kiểm tra, tự động hóa SMM và vượt qua các hạn chế địa lý. Nhưng đôi khi thay vì nội dung, bạn sẽ thấy lỗi 403, timeout hoặc trang trống. Hãy cùng tìm hiểu tại sao điều này xảy ra và cách khắc phục.

1. Phát hiện và chặn proxy

Đây là nguyên nhân phổ biến nhất. Các ứng dụng web hiện đại sử dụng các dịch vụ đặc biệt để phát hiện lưu lượng proxy. Trang web phân tích:

  • ASN (Autonomous System Number) — nhiều nhà cung cấp proxy sử dụng các dải ASN được biết đến, dễ dàng bị chặn
  • Hành vi người dùng — chuyển đổi IP nhanh chóng không thể, thiếu cookies, các mẫu nhấp chuột lạ
  • Dấu vân tay TLS — trình duyệt gửi dữ liệu duy nhất về phiên bản SSL, tiện ích mở rộng, thứ tự mã hóa
  • Dấu vân tay WebGL và Canvas — thậm chí JavaScript cũng có thể tiết lộ việc sử dụng proxy
Ví dụ: Trang web thấy rằng 100 trang sản phẩm đã được tải trong 10 giây từ IP của bạn. Rõ ràng đây không phải là một người — chặn là không thể tránh khỏi.

2. Hạn chế địa lý

Trang web kiểm tra vị trí địa lý của IP và từ chối truy cập nếu nó không phù hợp với kỳ vọng:

  • Các ngân hàng và dịch vụ tài chính chặn quyền truy cập từ các quốc gia nhất định
  • Các dịch vụ phát trực tuyến (Netflix, YouTube) hạn chế nội dung theo khu vực
  • Các trang web chính phủ có thể không thể truy cập từ bên ngoài
  • Các nền tảng thương mại điện tử thay đổi ngôn ngữ và tiền tệ dựa trên IP

Nếu bạn sử dụng proxy trung tâm dữ liệu từ Hoa Kỳ, nhưng trang web yêu cầu quyền truy cập chỉ từ Châu Âu — bạn sẽ nhận được lỗi 403 hoặc chuyển hướng.

3. Danh tiếng địa chỉ IP

Mỗi IP đều có lịch sử. Nếu địa chỉ đã được sử dụng trước đó cho spam, phân tích cú pháp hoặc các cuộc tấn công DDoS, các trang web sẽ chặn nó:

  • Danh sách đen — IP rơi vào cơ sở dữ liệu Project Honey Pot, Spamhaus, AbuseIPDB
  • Điểm số thấp trong các dịch vụ như IPQualityScore — các trang web sử dụng các dịch vụ như vậy để lọc
  • Vi phạm trước đó — nếu IP đã bị chặn trên trang web, nó có thể vẫn nằm trong danh sách đen trong thời gian dài

Bạn có thể kiểm tra danh tiếng IP trên abuseipdb.com hoặc ipqualityscore.com.

4. Tiêu đề và cấu hình không chính xác

Thường xuyên các trang web chặn yêu cầu do thiếu hoặc sai tiêu đề HTTP:

Tiêu đề Vấn đề
User-Agent Thiếu hoặc lạ (như Python-requests/2.25.1)
Referer Không khớp với logic điều hướng trang web
Accept-Language Thiếu hoặc không khớp với vị trí địa lý IP
X-Forwarded-For Tiết lộ việc sử dụng proxy hoặc VPN

Giải pháp: Sử dụng tiêu đề trình duyệt thực. Đây là ví dụ trên Python:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1'
}

proxy = 'http://your-proxy:port'
response = requests.get('https://example.com', 
                       headers=headers, 
                       proxies={'http': proxy, 'https': proxy})

5. Vấn đề về giao thức và cổng

Một số proxy chỉ hỗ trợ HTTP, nhưng bạn đang cố gắng truy cập vào trang web HTTPS. Hoặc cổng bị chặn ở cấp độ mạng:

  • HTTP vs HTTPS — đảm bảo rằng proxy hỗ trợ cả hai giao thức
  • Cổng — tiêu chuẩn 80 (HTTP) và 443 (HTTPS), nhưng một số trang web sử dụng cổng không chuẩn
  • SOCKS vs HTTP — các loại proxy khác nhau có những hạn chế khác nhau
Mẹo: Nếu trang web không mở được qua proxy HTTP, hãy thử SOCKS5. Nó hoạt động ở cấp độ thấp hơn và tốt hơn trong việc vượt qua một số hạn chế.

6. Giới hạn tốc độ và bảo vệ DDoS

Nếu bạn thực hiện nhiều yêu cầu liên tiếp, ngay cả qua các IP khác nhau, trang web có thể chặn bạn:

  • 429 Too Many Requests — bạn đã vượt quá giới hạn yêu cầu
  • Chặn tạm thời — thường là 1-24 giờ
  • Chặn vĩnh viễn — nếu bạn tiếp tục tấn công máy chủ
  • Cloudflare, WAF — các hệ thống bảo vệ chuyên dụng phân biệt bot với con người

7. Giải pháp thực tế

✓ Sử dụng proxy dân cư thay vì trung tâm dữ liệu

Proxy dân cư là các địa chỉ IP thực của người dùng nhà. Chúng khó phát hiện hơn nhiều vì trông giống như lưu lượng bình thường. Các trung tâm dữ liệu thường bị chặn vì ASN của chúng được biết đến.

✓ Thêm độ trễ giữa các yêu cầu

import time
import random

for url in urls:
    response = requests.get(url, headers=headers, proxies=proxies)
    # Độ trễ ngẫu nhiên từ 1 đến 5 giây
    time.sleep(random.uniform(1, 5))

✓ Xoay vòng proxy

Không sử dụng một IP cho tất cả các yêu cầu. Chuyển đổi giữa các địa chỉ khác nhau:

proxies_list = [
    'http://proxy1:port',
    'http://proxy2:port',
    'http://proxy3:port',
]

for i, url in enumerate(urls):
    proxy = proxies_list[i % len(proxies_list)]
    response = requests.get(url, proxies={'http': proxy, 'https': proxy})

✓ Kiểm tra IP trước khi sử dụng

Đảm bảo rằng IP không nằm trong danh sách đen:

import requests

def check_ip_reputation(ip):
    response = requests.get(f'https://ipqualityscore.com/api/json/ip/{ip}')
    data = response.json()
    return data.get('fraud_score', 0)

# Chỉ sử dụng IP có điểm số thấp
if check_ip_reputation(proxy_ip) < 75:
    # IP an toàn
    pass

✓ Sử dụng tự động hóa trình duyệt cho các trang web phức tạp

Nếu trang web sử dụng JavaScript và bảo vệ phức tạp, các yêu cầu HTTP thông thường sẽ không giúp ích. Sử dụng Selenium hoặc Puppeteer:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=http://proxy:port')

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

✓ Sử dụng proxy di động cho các trang web di động

Proxy di động hoạt động thông qua các mạng di động thực (4G/5G). Chúng đáng tin cậy hơn cho các ứng dụng di động và thường không bị chặn bởi các trang web hạn chế quyền truy cập cho PC.

✓ Xử lý lỗi một cách chính xác

try:
    response = requests.get(url, proxies=proxies, timeout=10)
    response.raise_for_status()
except requests.exceptions.ProxyError:
    print("Lỗi proxy — IP có thể bị chặn")
except requests.exceptions.Timeout:
    print("Timeout — máy chủ không phản hồi")
except requests.exceptions.HTTPError as e:
    if response.status_code == 403:
        print("Quyền truy cập bị từ chối — hãy thử proxy khác")

Tóm tắt

Các trang web chặn proxy vì nhiều lý do: từ phát hiện các mẫu lưu lượng đến danh tiếng IP đơn giản. Không có giải pháp phổ quát, nhưng sự kết hợp của các proxy tốt, tiêu đề chính xác, độ trễ và xoay vòng IP sẽ giải quyết hầu hết các vấn đề.

Để phân tích cú pháp và tự động hóa nên sử dụng proxy dân cư chất lượng cao, trông giống như lưu lượng thực từ người dùng nhà. Chúng đắt hơn các trung tâm dữ liệu, nhưng hoạt động đáng tin cậy hơn và hiếm khi bị chặn.

```