Các trang web tin tức là một trong những tài nguyên được bảo vệ nhiều nhất trên internet. Cloudflare, giới hạn tốc độ, chặn theo IP - tất cả những điều này khiến việc thu thập tin tức trở thành một thách thức kỹ thuật nghiêm trọng. Trong hướng dẫn này, chúng ta sẽ xem xét cách thiết lập proxy đúng cách để thu thập dữ liệu ổn định từ các cổng thông tin tin tức, loại proxy nào nên chọn cho các nhiệm vụ khác nhau và cách vượt qua các hệ thống bảo vệ hiện đại.
Tại sao các trang web tin tức chặn các trình thu thập dữ liệu
Các cổng thông tin tin tức đặc biệt nhạy cảm với việc thu thập dữ liệu tự động vì một số lý do. Thứ nhất, nội dung là tài sản chính của họ, mà họ kiếm tiền thông qua quảng cáo và đăng ký. Việc thu thập dữ liệu hàng loạt cho phép các đối thủ sao chép tài liệu và giảm lượng truy cập độc nhất. Thứ hai, tải cao từ bot làm tăng chi phí cho máy chủ và CDN.
Các trang web tin tức hiện đại sử dụng bảo vệ nhiều lớp:
- Cloudflare và các dịch vụ tương tự - kiểm tra JavaScript, dấu vân tay TLS của trình duyệt, mẫu hành vi
- Giới hạn tốc độ - giới hạn số lượng yêu cầu từ một IP (thường là 10-50 yêu cầu mỗi phút)
- Chặn theo User-Agent - cấm các tiêu đề tiêu chuẩn của thư viện (Python-requests, curl)
- CAPTCHA - hiển thị khi có hoạt động nghi ngờ
- Chặn theo địa lý - một số cổng thông tin tin tức chỉ có sẵn từ một số quốc gia nhất định
Các dấu hiệu điển hình mà các trang web tin tức phát hiện ra các trình thu thập dữ liệu: IP giống nhau thực hiện nhiều yêu cầu liên tiếp, không có JavaScript, thứ tự tiêu đề HTTP không chuẩn, tốc độ yêu cầu quá nhanh (con người không thể mở 10 trang mỗi giây), không có cookies và referrer.
Quan trọng: Việc thu thập dữ liệu từ các trang web tin tức nằm trong vùng xám. Luôn kiểm tra robots.txt và Điều khoản Dịch vụ của tài nguyên mục tiêu. Đối với việc sử dụng dữ liệu thương mại, nên sử dụng API chính thức hoặc ký kết thỏa thuận đối tác.
Loại proxy nào nên chọn cho việc thu thập tin tức
Việc chọn loại proxy phụ thuộc vào quy mô nhiệm vụ, ngân sách và mức độ bảo vệ của các trang web mục tiêu. Chúng ta sẽ xem xét ba tùy chọn chính và tính khả thi của chúng cho việc thu thập tin tức.
| Loại proxy | Tốc độ | Chi phí | Khi nào sử dụng |
|---|---|---|---|
| Proxy trung tâm dữ liệu | Cao (50-100 ms) | Thấp | Các trang web không có Cloudflare, khối lượng dữ liệu lớn, thử nghiệm |
| Proxy cư trú | Trung bình (200-500 ms) | Cao | Các trang web có Cloudflare, bảo vệ nghiêm ngặt, nhắm mục tiêu địa lý |
| Proxy di động | Trung bình (300-600 ms) | Rất cao | Bảo vệ tối đa, phiên bản di động của các trang web tin tức |
Proxy trung tâm dữ liệu cho việc thu thập tin tức
Phù hợp cho việc thu thập dữ liệu từ các trang web tin tức không có bảo vệ nghiêm ngặt: các ấn phẩm khu vực, blog, các cổng thông tin thông tin nhỏ. Ưu điểm: tốc độ cao (quan trọng khi thu thập từ hàng trăm nguồn), chi phí thấp (có thể thuê một nhóm từ 50-100 IP), kết nối ổn định.
Nhược điểm: dễ bị phát hiện theo ASN (thuộc về trung tâm dữ liệu), thường đã bị đưa vào danh sách đen của các trang web lớn, không vượt qua Cloudflare Challenge trong 70% trường hợp. Sử dụng proxy trung tâm dữ liệu cho việc thu thập hàng loạt từ các nguồn RSS, sitemap.xml, API endpoints hoặc để thu thập siêu dữ liệu (tiêu đề, ngày xuất bản) mà không tải toàn bộ nội dung.
Proxy cư trú - tiêu chuẩn vàng
Proxy cư trú là các địa chỉ IP của người dùng thực tế, được cung cấp bởi các nhà cung cấp dịch vụ internet. Đối với các trang web tin tức, chúng trông giống như những người truy cập thông thường, điều này rất quan trọng khi làm việc với các tài nguyên được bảo vệ.
Khi nào proxy cư trú là bắt buộc: thu thập dữ liệu từ các cổng thông tin tin tức lớn (CNN, BBC, Reuters, RBK, Kommersant), các trang web có Cloudflare hoặc bảo vệ tương tự, thu thập dữ liệu từ các quốc gia cụ thể (nhắm mục tiêu địa lý), các phiên dài với xác thực. Proxy cư trú vượt qua các kiểm tra JavaScript của Cloudflare, có danh tiếng IP sạch, hỗ trợ các phiên dính (giữ IP trong 10-30 phút).
Lời khuyên thực tế: sử dụng proxy cư trú với xoay vòng theo thời gian (các phiên dính), thay vì theo yêu cầu. Ví dụ, một IP hoạt động trong 10 phút, thu thập 20-30 bài viết, sau đó thay đổi. Điều này trông tự nhiên hơn so với việc thay đổi IP cho mỗi yêu cầu.
Proxy di động cho các trường hợp đặc biệt
Proxy di động sử dụng IP của các nhà mạng di động (MTS, Beeline, Tele2). Chúng có độ tin cậy tối đa, vì hàng triệu người sử dụng internet di động để đọc tin tức. Sử dụng chúng cho việc thu thập dữ liệu từ các phiên bản di động của các trang web tin tức (thường có bảo vệ đơn giản hơn), các trang web có bảo vệ cực kỳ nghiêm ngặt, các trang AMP của Google News.
Đặc điểm của proxy di động: IP thường thay đổi tự động (các nhà mạng di động sử dụng CGNAT), một IP có thể được hàng trăm người dùng sử dụng đồng thời, điều này làm cho việc chặn trở nên vô nghĩa. Nhược điểm - giá cao, vì vậy chỉ sử dụng chúng cho các mục tiêu được bảo vệ nhất.
Vượt qua Cloudflare và các hệ thống chống bot khác
Cloudflare là kẻ thù chính của các trình thu thập dữ liệu từ các trang web tin tức. Khoảng 40% các cổng thông tin tin tức lớn sử dụng Cloudflare để bảo vệ chống lại bot. Các thư viện tiêu chuẩn (requests, urllib) không vượt qua kiểm tra, vì Cloudflare phân tích dấu vân tay TLS, thực thi JavaScript, thứ tự tiêu đề HTTP, mẫu hành vi.
Chiến lược vượt qua Cloudflare
1. Trình duyệt không giao diện (Selenium, Playwright, Puppeteer)
Giả lập trình duyệt thực với việc thực thi JavaScript. Cloudflare thấy dấu vân tay TLS chính xác của Chrome/Firefox và cho phép yêu cầu. Nhược điểm: chậm (2-5 giây cho mỗi trang), yêu cầu nhiều tài nguyên (RAM, CPU).
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Thiết lập proxy cho Selenium
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://username:password@proxy.example.com:8080')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://news-site.com/article')
# Chờ tải JavaScript
driver.implicitly_wait(10)
html = driver.page_source
driver.quit()
2. Thư viện với dấu vân tay TLS (curl_cffi, tls-client)
Giả lập dấu vân tay TLS của trình duyệt thực mà không cần khởi động trình duyệt không giao diện. Hoạt động nhanh hơn Selenium từ 10-20 lần, nhưng không thực thi JavaScript. Phù hợp cho các trang web với kiểm tra cơ bản của Cloudflare (không có thử thách JS).
from curl_cffi import requests
proxies = {
'http': 'http://username:password@proxy.example.com:8080',
'https': 'http://username:password@proxy.example.com:8080'
}
response = requests.get(
'https://news-site.com/article',
proxies=proxies,
impersonate='chrome110' # Giả lập dấu vân tay TLS của Chrome 110
)
print(response.text)
3. Dịch vụ vượt qua Cloudflare (scraperapi, scrapingbee)
API trả phí, tự động vượt qua Cloudflare. Bạn gửi URL, họ trả về HTML đã sẵn sàng. Ưu điểm: không cần tìm hiểu chi tiết kỹ thuật, xoay vòng proxy tự động, xử lý CAPTCHA. Nhược điểm: đắt khi khối lượng lớn (từ $50/tháng cho 100K yêu cầu).
Tiêu đề HTTP đúng
Ngay cả với proxy, việc gửi tiêu đề chính xác là rất quan trọng, nếu không trang web sẽ phát hiện bot qua User-Agent không chuẩn hoặc thiếu Accept-Language.
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'vi-VN,vi;q=0.9,en-US;q=0.8,en;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Cache-Control': 'max-age=0'
}
Thỉnh thoảng cập nhật User-Agent - sử dụng các phiên bản trình duyệt hiện tại. Kiểm tra dấu vân tay của bạn trên các trang web whoer.net hoặc browserleaks.com.
Thiết lập xoay vòng IP và quản lý yêu cầu
Việc xoay vòng proxy đúng cách là chìa khóa để thu thập dữ liệu ổn định mà không bị chặn. Các trang web tin tức theo dõi tần suất yêu cầu từ một IP, và việc vượt quá giới hạn sẽ dẫn đến việc bị cấm tạm thời hoặc vĩnh viễn.
Các loại xoay vòng proxy
Xoay vòng theo yêu cầu - mỗi yêu cầu đi qua một IP mới. Phù hợp cho việc thu thập nhanh từ nhiều trang web khác nhau, giảm thiểu rủi ro bị cấm do tần suất yêu cầu. Nhược điểm: không phù hợp cho các trang web có phiên (cookies, xác thực), có thể trông nghi ngờ đối với một số bảo vệ.
Xoay vòng theo thời gian (các phiên dính) - một IP được sử dụng trong một khoảng thời gian cố định (5-30 phút), sau đó thay đổi. Phù hợp cho việc thu thập dữ liệu từ một cổng thông tin tin tức với nhiều trang, giữ cookies và phiên, trông giống như hành vi của người dùng thực. Được khuyến nghị cho hầu hết các nhiệm vụ thu thập tin tức.
Xoay vòng theo địa lý - thay đổi IP từ các quốc gia/thành phố khác nhau. Sử dụng cho việc thu thập nội dung phụ thuộc vào địa lý (tin tức khu vực), vượt qua các chặn địa lý.
Tần suất yêu cầu tối ưu
Ngay cả với việc xoay vòng proxy, không thể thực hiện yêu cầu quá thường xuyên. Các khoảng thời gian an toàn cho các loại trang web khác nhau:
- Các cổng thông tin tin tức lớn (RBK, Kommersant, Vedomosti) - 2-5 giây giữa các yêu cầu từ một IP
- Các trang web trung bình - 1-3 giây
- Các blog nhỏ và ấn phẩm khu vực - 0.5-1 giây
Thêm độ trễ ngẫu nhiên (randomization) để mẫu yêu cầu trông tự nhiên:
import time
import random
def fetch_article(url, proxies):
response = requests.get(url, proxies=proxies, headers=headers)
# Độ trễ ngẫu nhiên từ 2 đến 5 giây
delay = random.uniform(2, 5)
time.sleep(delay)
return response.text
Ví dụ về xoay vòng proxy từ nhóm
Nếu bạn có danh sách proxy, có thể thực hiện một vòng xoay đơn giản bằng tay:
import itertools
import requests
# Nhóm proxy
proxy_list = [
'http://user:pass@proxy1.example.com:8080',
'http://user:pass@proxy2.example.com:8080',
'http://user:pass@proxy3.example.com:8080',
]
# Tạo một bộ lặp vô hạn
proxy_pool = itertools.cycle(proxy_list)
def get_next_proxy():
proxy = next(proxy_pool)
return {'http': proxy, 'https': proxy}
# Sử dụng
urls = ['https://news1.com/article', 'https://news2.com/article']
for url in urls:
proxies = get_next_proxy()
response = requests.get(url, proxies=proxies, headers=headers)
print(f'Fetched {url} via {proxies["http"]}')
Ví dụ mã: Python + Scrapy + proxy
Scrapy là một framework chuyên nghiệp cho việc thu thập dữ liệu, hỗ trợ proxy, middleware, xoay vòng và xử lý lỗi ngay từ đầu. Chúng ta sẽ xem xét một ví dụ đầy đủ về một trình thu thập dữ liệu của một trang web tin tức với việc xoay vòng proxy.
Cài đặt các phụ thuộc
pip install scrapy scrapy-rotating-proxies
Cấu hình Scrapy với proxy (settings.py)
# settings.py
# Bật middleware cho việc xoay vòng proxy
ROTATING_PROXY_LIST = [
'http://user:pass@proxy1.example.com:8080',
'http://user:pass@proxy2.example.com:8080',
'http://user:pass@proxy3.example.com:8080',
]
DOWNLOADER_MIDDLEWARES = {
'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}
# Cấu hình để vượt qua các chặn
CONCURRENT_REQUESTS = 8 # Không quá 8 yêu cầu đồng thời
DOWNLOAD_DELAY = 2 # Độ trễ 2 giây giữa các yêu cầu
RANDOMIZE_DOWNLOAD_DELAY = True # Độ trễ ngẫu nhiên
# User-Agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
# Số lần thử lại khi có lỗi
RETRY_TIMES = 3
RETRY_HTTP_CODES = [500, 502, 503, 504, 408, 429]
Spider cho việc thu thập tin tức
# news_spider.py
import scrapy
from datetime import datetime
class NewsSpider(scrapy.Spider):
name = 'news_parser'
# Danh sách các trang web tin tức để thu thập
start_urls = [
'https://example-news.com/latest',
]
def parse(self, response):
# Thu thập danh sách bài viết trên trang chính
articles = response.css('article.news-item')
for article in articles:
article_url = article.css('a.title::attr(href)').get()
if article_url:
# Chuyển đến trang bài viết
yield response.follow(article_url, callback=self.parse_article)
def parse_article(self, response):
# Trích xuất dữ liệu bài viết
yield {
'url': response.url,
'title': response.css('h1.article-title::text').get(),
'date': response.css('time.published::attr(datetime)').get(),
'author': response.css('span.author::text').get(),
'text': ' '.join(response.css('div.article-body p::text').getall()),
'tags': response.css('a.tag::text').getall(),
'scraped_at': datetime.now().isoformat(),
}
Chạy trình thu thập dữ liệu
# Lưu vào JSON
scrapy crawl news_parser -o news_data.json
# Lưu vào CSV
scrapy crawl news_parser -o news_data.csv
Trình thu thập đơn giản bằng requests + BeautifulSoup
Nếu không cần logic phức tạp, có thể sử dụng kết hợp requests + BeautifulSoup:
import requests
from bs4 import BeautifulSoup
import time
import random
# Thiết lập proxy
proxies = {
'http': 'http://user:pass@proxy.example.com:8080',
'https': 'http://user:pass@proxy.example.com:8080'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
def parse_news_article(url):
try:
response = requests.get(url, proxies=proxies, headers=headers, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
# Trích xuất dữ liệu (các bộ chọn phụ thuộc vào trang web)
title = soup.find('h1', class_='article-title').text.strip()
date = soup.find('time', class_='published')['datetime']
text = ' '.join([p.text for p in soup.find_all('p', class_='article-text')])
return {
'url': url,
'title': title,
'date': date,
'text': text
}
except Exception as e:
print(f'Lỗi khi thu thập {url}: {e}')
return None
# Thu thập danh sách bài viết
urls = [
'https://news-site.com/article-1',
'https://news-site.com/article-2',
]
for url in urls:
article_data = parse_news_article(url)
if article_data:
print(article_data)
# Độ trễ giữa các yêu cầu
time.sleep(random.uniform(2, 4))
Những lỗi thường gặp khi thu thập tin tức
Ngay cả với việc thiết lập proxy đúng cách, các trình thu thập dữ liệu thường bị chặn do các lỗi kỹ thuật. Chúng ta sẽ xem xét những vấn đề thường gặp nhất và cách giải quyết chúng.
Lỗi 1: Tần suất yêu cầu quá cao
Triệu chứng: HTTP 429 (Quá nhiều yêu cầu), cấm IP tạm thời, CAPTCHA. Nguyên nhân: trình thu thập dữ liệu thực hiện 10-50 yêu cầu mỗi giây từ một IP. Giải pháp: thêm độ trễ (time.sleep()), sử dụng DOWNLOAD_DELAY trong Scrapy, giới hạn CONCURRENT_REQUESTS.
Lỗi 2: Sử dụng một proxy cho tất cả các yêu cầu
Triệu chứng: proxy nhanh chóng bị cấm, ngay cả với độ trễ. Nguyên nhân: một IP thực hiện hàng trăm yêu cầu đến một trang web. Giải pháp: sử dụng nhóm proxy với xoay vòng, đối với các trang web lớn - tối thiểu 10-20 proxy, cho các phiên dính thay đổi IP mỗi 10-15 phút.
Lỗi 3: Bỏ qua cookies
Nhiều trang web tin tức thiết lập cookies khi truy cập lần đầu và kiểm tra sự hiện diện của chúng trong các yêu cầu tiếp theo. Thiếu cookies là dấu hiệu của bot. Giải pháp: sử dụng requests.Session() để tự động lưu cookies, trong Scrapy bật COOKIES_ENABLED = True.
import requests
session = requests.Session()
session.proxies = {'http': 'http://proxy.com:8080', 'https': 'http://proxy.com:8080'}
# Yêu cầu đầu tiên - nhận cookies
response1 = session.get('https://news-site.com')
# Các yêu cầu tiếp theo tự động gửi cookies
response2 = session.get('https://news-site.com/article')
Lỗi 4: Xử lý chuyển hướng không đúng cách
Các trang web tin tức thường sử dụng chuyển hướng (301, 302) cho các phiên bản di động, các miền phụ khu vực, các trang AMP. Nếu trình thu thập dữ liệu không theo dõi các chuyển hướng, nó sẽ nhận được trang trống. Giải pháp: trong requests đã được bật theo mặc định (allow_redirects=True), kiểm tra URL cuối cùng qua response.url.
Lỗi 5: Thu thập nội dung động mà không có JavaScript
Nhiều trang web tin tức hiện đại tải nội dung qua JavaScript (React, Vue). Thư viện requests nhận được khung HTML trống mà không có bài viết. Giải pháp: sử dụng Selenium/Playwright để thực thi JavaScript, kiểm tra Network trong DevTools - có thể dữ liệu được tải qua API (có thể thu thập trực tiếp JSON).
Mở rộng: thu thập dữ liệu từ hàng trăm nguồn
Khi cần thu thập không chỉ một trang web tin tức mà hàng trăm nguồn cùng một lúc (các trang tổng hợp tin tức, giám sát truyền thông), cần một kiến trúc có thể mở rộng.
Thu thập phân tán với Scrapy Cloud
Scrapy Cloud (từ những người sáng tạo Scrapy) cho phép chạy các trình thu thập dữ liệu trên đám mây với khả năng mở rộng tự động. Ưu điểm: không cần máy chủ riêng, xoay vòng proxy tự động, giám sát và nhật ký. Chi phí: từ $9/tháng cho gói cơ bản.
Hàng đợi tác vụ (Celery + Redis)
Để tự triển khai, sử dụng Celery - hệ thống tác vụ phân tán. Kiến trúc: Redis lưu trữ hàng đợi URL để thu thập, một vài worker (máy chủ) lấy tác vụ từ hàng đợi và thu thập đồng thời, mỗi worker sử dụng nhóm proxy riêng.
# tasks.py
from celery import Celery
import requests
app = Celery('news_parser', broker='redis://localhost:6379/0')
@app.task
def parse_article(url, proxy):
proxies = {'http': proxy, 'https': proxy}
response = requests.get(url, proxies=proxies, timeout=10)
# Thu thập và lưu dữ liệu
return response.text
# Thêm tác vụ vào hàng đợi
urls = ['https://news1.com/article', 'https://news2.com/article']
proxies = ['http://proxy1.com:8080', 'http://proxy2.com:8080']
for url in urls:
proxy = random.choice(proxies)
parse_article.delay(url, proxy) # Thực hiện bất đồng bộ
Giám sát và xử lý lỗi
Khi thu thập dữ liệu quy mô lớn, việc giám sát là rất quan trọng: bao nhiêu URL đã được xử lý, bao nhiêu lỗi, các proxy nào đã bị cấm. Sử dụng Sentry để theo dõi lỗi Python, Grafana + Prometheus cho các chỉ số (yêu cầu mỗi giây, thời gian phản hồi), ghi nhật ký trong ELK Stack (Elasticsearch, Logstash, Kibana).
Lời khuyên: Tạo hệ thống kiểm tra tự động cho proxy. Mỗi 5-10 phút gửi yêu cầu thử nghiệm qua mỗi proxy đến whoer.net hoặc httpbin.org. Nếu proxy không phản hồi hoặc bị cấm - loại bỏ nó khỏi nhóm và thêm mới.
Tối ưu hóa chi phí cho proxy
Khi thu thập dữ liệu từ hàng trăm nguồn, chi phí cho proxy có thể lên đến hàng nghìn đô la mỗi tháng. Các chiến lược tối ưu hóa: sử dụng proxy trung tâm dữ liệu cho các trang web đơn giản (RSS, API), proxy cư trú - chỉ cho các trang được bảo vệ, lưu trữ dữ liệu - không thu thập cùng một bài viết hai lần, thu thập vào giờ thấp điểm (ban đêm tải trên các trang web thấp hơn, ít rủi ro bị cấm).
Ví dụ: để thu thập 500 trang web tin tức, có thể sử dụng 80% proxy trung tâm dữ liệu (cho RSS và các trang đơn giản) và 20% proxy cư trú (cho 100 trang bảo vệ hàng đầu). Điều này sẽ giảm chi phí từ 3-5 lần.
Kết luận
Việc thu thập dữ liệu từ các trang web tin tức là một nhiệm vụ kỹ thuật phức tạp, đòi hỏi lựa chọn proxy đúng, thiết lập xoay vòng và vượt qua các hệ thống chống bot. Những điểm chính từ bài viết: đối với các cổng thông tin tin tức được bảo vệ (Cloudflare, giới hạn tốc độ nghiêm ngặt) sử dụng proxy cư trú với các phiên dính, cho việc thu thập hàng loạt từ hàng trăm nguồn, proxy trung tâm dữ liệu với xoay vòng nhanh là phù hợp, luôn thêm độ trễ giữa các yêu cầu (2-5 giây) và tiêu đề HTTP chính xác, để vượt qua Cloudflare, sử dụng trình duyệt không giao diện (Selenium, Playwright) hoặc các thư viện với dấu vân tay TLS.
Khi mở rộng, hãy sử dụng các hệ thống phân tán (Celery, Scrapy Cloud) và giám sát lỗi. Hãy nhớ rằng việc thu thập dữ liệu phải có đạo đức - tuân thủ robots.txt, không tạo ra tải quá mức trên các máy chủ và tôn trọng quyền tác giả đối với nội dung.
Nếu bạn dự định thu thập dữ liệu từ các cổng thông tin tin tức lớn với bảo vệ Cloudflare, chúng tôi khuyên bạn nên sử dụng proxy cư trú - chúng cung cấp mức độ tin cậy cao và rủi ro bị chặn tối thiểu. Đối với các nhiệm vụ mà tốc độ và khối lượng dữ liệu quan trọng (thu thập RSS, API endpoints), các proxy trung tâm dữ liệu sẽ phù hợp.