Crawl4AI và Firecrawl đã trở thành cách mặc định để đưa dữ liệu web vào các pipeline LLM — chúng thu thập, render và trả về Markdown sạch mà mô hình của bạn thực sự dùng được. Rồi bạn hướng chúng vào một mục tiêu thật và khám phá ra điều mà mọi scraper rốt cuộc đều học được: lớp trích xuất chưa bao giờ là phần khó. Phần khó là crawler của bạn chạy từ một IP datacenter duy nhất, và web có thể nhìn thấy điều đó.
Hướng dẫn này trình bày cấu hình proxy hoạt động được cho cả hai công cụ — Crawl4AI tự host và cả hai chế độ của Firecrawl — cùng với chiến lược session giúp các tác vụ thu nạp dữ liệu RAG không chết ở trang thứ 50. Nó mở rộng hướng dẫn proxy cho AI agent và hướng dẫn browser-use của chúng tôi sang các framework thu thập dữ liệu.
Crawl4AI (mã nguồn mở, tự host) nhận proxy ở cấp BrowserConfig — một proxy cho mỗi instance crawler:
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig
browser_cfg = BrowserConfig(
headless=True,
proxy_config={
"server": "us.jibaoproxy.com:913",
"username": "USERNAME",
"password": "PASSWORD",
},
)
async with AsyncWebCrawler(config=browser_cfg) as crawler:
result = await crawler.arun(
url="https://example.com/docs",
config=CrawlerRunConfig(),
)
print(result.markdown[:500])
Với các lượt crawl sâu, hãy xoay danh tính theo từng instance crawler, không phải theo từng trang — các trang trong cùng một lượt thăm một site nên dùng chung một IP exit (một con người không đổi thành phố giữa trang 3 và trang 4):
def crawler_for(site_id: str) -> BrowserConfig:
# Sticky session per site: cookies + IP move together
return BrowserConfig(
headless=True,
proxy_config={
"server": "us.jibaoproxy.com:913",
"username": f"USERNAME-session-{site_id}",
"password": "PASSWORD",
},
)
# site A crawled through exit A, site B through exit B, in parallel
Cloud API: proxy là một tham số của request — Firecrawl định tuyến qua các pool riêng của nó. Bạn kiểm soát hạng chất lượng, không phải các IP:
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="fc-YOUR-KEY")
result = app.scrape_url(
"https://example.com/pricing",
params={"proxy": "stealth"}, # basic | stealth | auto
)
Cái bẫy: các request hạng stealth bị tính phí gấp nhiều lần credit cơ bản, và bạn không thể ghim quốc gia một cách chính xác hay giữ sticky session xuyên các lần gọi. Ổn cho vài trang lẻ tẻ; đắt đỏ và thiếu chính xác ở quy mô thu nạp dữ liệu.
Firecrawl tự host: bạn cung cấp proxy của riêng mình qua biến môi trường, với toàn quyền kiểm soát:
# .env for self-hosted Firecrawl
PROXY_SERVER=http://us.jibaoproxy.com:1000
PROXY_USERNAME=USERNAME
PROXY_PASSWORD=PASSWORD
Tự host + cổng residential của riêng bạn là thiết lập hợp lý về chi phí một khi bạn thu nạp dữ liệu ở quy mô lớn: bạn trả tiền theo GB cho băng thông thay vì theo credit-trên-mỗi-trang với hệ số nhân stealth.
semaphore_count / delay của Crawl4AI tồn tại vì lý do này — 2–4 trang đồng thời cho mỗi site là đủ; thay vào đó hãy trải song song trên nhiều site.ETag/Last-Modified ở những nơi framework cho phép.| Thiết lập | Bạn trả tiền cho | Tốt nhất khi |
|---|---|---|
| Firecrawl cloud, proxy stealth | Credit theo trang × hệ số nhân stealth | Khối lượng thấp, không cần vận hành |
| Firecrawl tự host + GB residential | Chỉ băng thông (~$10/GB) | Khối lượng thu nạp ổn định |
| Crawl4AI + GB residential | Chỉ băng thông, toàn quyền kiểm soát | Pipeline tùy chỉnh, crawl sâu |
Một trang nhiều chữ điển hình tốn 100–300 KB qua proxy — tương đương khoảng 3.000–10.000 trang mỗi GB. Các vòng lặp chặn-rồi-retry mới là thứ làm cháy ngân sách, đó là thêm một lý do để khắc phục chuyện bị phát hiện trước khi tăng quy mô.
proxy_config trong BrowserConfig; danh tính sticky cho mỗi site, xoay vòng giữa các site.proxy: "stealth", đắt ở quy mô lớn; tự host: cổng riêng của bạn qua biến môi trường.Exit residential, sticky session, định giá theo GB — tặng 500MB lưu lượng miễn phí, không cần thẻ.
Bắt đầu dùng thử miễn phíNgười dùng mới nhận 500MB khi đăng ký, cùng tiền thưởng cho lần nạp đầu tiên. Ưu đãi có thời hạn.