Ngiêm cấm sử đụng PROXY và VPS vào mục đích trái pháp luật bạn sẽ phải chịu toàn bộ trách nhiệm trước pháp luật khi sử dụng dịch vụ của chúng tôi tks!
Sử dụng Proxy training AI thu thập dữ liệu lớn không bị chặn

Sử dụng Proxy training AI thu thập dữ liệu lớn không bị chặn

SEO Administrator 06-13-2026 Đang tính... phút đọc

Proxy training AI là cách giúp anh em thu thập dữ liệu lớn ổn định hơn khi xây dựng mô hình AI. Trong bài viết này, ProxyVN sẽ cùng anh em đi từ nền tảng dễ hiểu đến cách chọn proxy, xoay vòng IP, xử lý chống bot, thiết kế hạ tầng và tối ưu chi phí. Mục tiêu là giúp quá trình crawl dữ liệu mượt hơn, ít lỗi hơn và dễ mở rộng hơn.

Proxy training AI quan trọng thế nào khi thu thập dữ liệu lớn

Đào tạo AI cần một lượng dữ liệu rất lớn. Với mô hình ngôn ngữ, dữ liệu có thể là bài viết, diễn đàn, tài liệu, mô tả sản phẩm hoặc nội dung mạng xã hội. Với mô hình thị giác máy tính, dữ liệu lại là hình ảnh, video hoặc metadata đi kèm.

Training AI với proxy

Training AI với proxy

Các kho dữ liệu mở như Common Crawl cho thấy web công khai là nguồn dữ liệu khổng lồ cho nghiên cứu và mô hình AI. Tuy nhiên, khi anh em tự thu thập dữ liệu, vấn đề không chỉ là “lấy được bao nhiêu”. Vấn đề lớn hơn là lấy ổn định, không bị chặn IP, không bị ngắt phiên và không lãng phí tài nguyên.

Nếu gửi quá nhiều request từ một IP, website rất dễ xem đó là hành vi bất thường. Khi đó, anh em có thể gặp lỗi 403, 429, CAPTCHA, giới hạn tốc độ hoặc chặn truy cập theo vùng.

Các nguyên nhân thường gặp gồm:

  • Rate limit: Website giới hạn số request từ một IP trong một khoảng thời gian.

  • Hệ thống chống bot: Cloudflare, Akamai hoặc các WAF khác kiểm tra hành vi truy cập.

  • Giới hạn địa lý: Một số nội dung chỉ hiển thị ở quốc gia nhất định.

  • Bảo vệ dữ liệu cạnh tranh: Sàn thương mại điện tử, trang giá, trang review thường kiểm soát crawl rất chặt.

Lúc này, proxy giúp phân bổ request qua nhiều IP khác nhau. Thay vì 1 IP gửi 1.000 request, hệ thống có thể chia thành 1-2 request trên nhiều IP. Cách này giúp hành vi truy cập tự nhiên hơn và giảm rủi ro bị chặn.

Proxy không thay thế quy trình crawl có trách nhiệm. Anh em vẫn cần tôn trọng robots.txt, điều khoản sử dụng của website và chỉ thu thập dữ liệu ở phạm vi được phép.

Kết luận phần này rất đơn giản: muốn làm dữ liệu AI lâu dài, anh em cần xem proxy là một phần của hạ tầng, không phải chỉ là công cụ đổi IP.

Chọn loại Proxy training AI phù hợp với từng nhiệm vụ

Không phải dữ liệu nào cũng cần cùng một loại proxy. Nếu chọn proxy quá mạnh, chi phí sẽ đội lên. Nếu chọn proxy quá yếu, tỷ lệ lỗi sẽ cao và cuối cùng vẫn tốn tiền vì phải chạy lại nhiều lần.

Dưới đây là cách ProxyVN thường phân loại cho anh em dễ hình dung.

Loại proxy

Tốc độ tham khảo

Độ tin cậy với website

Chi phí tham khảo

Nên dùng khi nào

Datacenter Proxy

100-1000 Mbit/s

Thấp đến trung bình

$0.5-2/IP

API mở, website tĩnh, nguồn ít bảo vệ

Residential Proxy

10-50 Mbit/s

Cao

$5-15/GB

Mạng xã hội, thương mại điện tử, website có Cloudflare

Mobile Proxy

5-30 Mbit/s

Rất cao

$10-30/GB

Ứng dụng mobile, kiểm thử môi trường 4G/5G

Datacenter proxy cho nguồn dữ liệu dễ thu thập

Datacenter proxy là IP đến từ máy chủ, trung tâm dữ liệu hoặc nhà cung cấp cloud. Ưu điểm lớn nhất là tốc độ nhanh, chi phí dễ kiểm soát và phù hợp với khối lượng lớn.

Datacenter Proxy

Datacenter Proxy

Loại này nên dùng cho:

  • API mở.

  • Website tĩnh, ít kiểm tra fingerprint.

  • Kho tài liệu công khai.

  • Trang tin tức không có lớp bảo vệ mạnh.

  • Dữ liệu nội bộ hoặc nguồn đã được cấp quyền truy cập.

Nếu website không yêu cầu JavaScript rendering và không kiểm tra hành vi trình duyệt quá sâu, datacenter proxy thường là lựa chọn hợp lý.

Tuy nhiên, điểm yếu là một số website có thể nhận diện dải IP datacenter. Với mạng xã hội, sàn thương mại điện tử hoặc các trang có WAF mạnh, datacenter proxy dễ bị giới hạn hơn.

Residential proxy cho nguồn dữ liệu có bảo vệ

Residential proxy sử dụng IP giống người dùng dân cư. Vì vậy, request trông tự nhiên hơn so với IP máy chủ.

Residential Proxy

Residential Proxy

Loại này phù hợp khi anh em crawl dữ liệu từ:

  • Mạng xã hội.

  • Website có Cloudflare hoặc WAF.

  • Sàn thương mại điện tử.

  • Trang review, giá bán, listing sản phẩm.

  • Nội dung bị giới hạn theo quốc gia.

Ví dụ, Cloudflare Bot Management được thiết kế để nhận diện lưu lượng tự động và hỗ trợ website xử lý bot. Vì vậy, nếu anh em crawl nguồn có hệ thống bảo vệ mạnh, chỉ đổi User-Agent là chưa đủ. Proxy, tốc độ request, fingerprint trình duyệt và logic phiên đều cần được thiết kế kỹ.

Điểm cần lưu ý là residential proxy thường tính theo GB. Nếu tải cả hình ảnh, CSS, font và video qua proxy, chi phí sẽ tăng rất nhanh.

Mobile proxy cho môi trường đặc thù

Mobile proxy dùng IP từ nhà mạng di động 4G/5G. Loại này thường dùng khi anh em cần kiểm thử ứng dụng mobile hoặc website hiển thị nội dung khác nhau giữa desktop và mobile.

Với phần lớn bài toán training AI trên web, mobile proxy không phải lựa chọn đầu tiên. Anh em chỉ nên dùng khi nguồn dữ liệu yêu cầu môi trường di động thật sự.

Kết luận phần chọn proxy: hãy chọn theo độ khó của nguồn dữ liệu, không chọn theo cảm tính.

Ứng dụng Proxy training AI theo từng loại dữ liệu

Dữ liệu cho AI không chỉ có một dạng. Mỗi loại dữ liệu có yêu cầu proxy khác nhau. Vì vậy, trước khi crawl, anh em nên chia nguồn thành từng nhóm rõ ràng.

Dữ liệu văn bản cho NLP

Dữ liệu văn bản thường dùng cho mô hình ngôn ngữ, chatbot, phân loại nội dung, tìm kiếm ngữ nghĩa hoặc hệ thống RAG.

Dữ liệu văn bản cho NLP

Dữ liệu văn bản cho NLP

Nguồn dữ liệu có thể gồm:

  • Blog.

  • Báo điện tử.

  • Diễn đàn.

  • Tài liệu kỹ thuật.

  • Trang hỏi đáp.

  • Mô tả sản phẩm.

  • Nội dung công khai trên web.

Với website tĩnh, anh em có thể dùng HTTP client như requests hoặc axios. Với website render bằng JavaScript, anh em nên dùng browser automation như Playwright hoặc Puppeteer.

Điểm quan trọng là giữ được cấu trúc dữ liệu. Khi lấy bài viết, anh em không chỉ cần nội dung chính, mà còn cần tiêu đề, heading, ngày đăng, tác giả, URL nguồn và metadata liên quan.

Dữ liệu hình ảnh cho computer vision

Dữ liệu hình ảnh thường nặng hơn văn bản rất nhiều. Một ảnh trung bình có thể vài trăm KB, thậm chí vài MB. Nếu anh em tải toàn bộ hình qua residential proxy, chi phí có thể tăng mạnh.

Cách tối ưu hơn là:

  • Bước 1: Dùng proxy để lấy danh sách URL hình ảnh.

  • Bước 2: Lọc ảnh theo định dạng, kích thước, chủ đề.

  • Bước 3: Chỉ tải ảnh đạt tiêu chí.

  • Bước 4: Nếu CDN cho phép, tải file trực tiếp hoặc dùng datacenter proxy để giảm chi phí.

Cách làm này giúp anh em giảm dữ liệu rác và tiết kiệm dung lượng.

Dữ liệu thương mại điện tử

Dữ liệu thương mại điện tử thường gồm tên sản phẩm, giá bán, đánh giá, tồn kho, hình ảnh, mô tả và thuộc tính sản phẩm.

Đây là nhóm dữ liệu có giá trị cao, nên nhiều website bảo vệ khá chặt. Với nhóm này, anh em nên dùng residential proxy, phiên cố định và tốc độ request vừa phải.

Đừng chỉ quan tâm tốc độ. Nếu crawl quá nhanh, hệ thống có thể trả dữ liệu lỗi, dữ liệu thiếu hoặc chặn IP. Khi đó, anh em phải chạy lại và tổng chi phí còn cao hơn.

Dữ liệu video và âm thanh

Video và âm thanh rất tốn dung lượng. Một video có thể vài chục đến vài trăm MB. Vì vậy, không nên tải toàn bộ video qua residential proxy nếu không cần thiết.

Cách hợp lý hơn là dùng proxy để lấy metadata, URL, tiêu đề, mô tả, thời lượng hoặc transcript nếu được phép. Sau đó, anh em chỉ tải file khi thật sự cần cho bài toán huấn luyện.

Kết luận phần này: mỗi loại dữ liệu cần một chiến lược riêng. Crawl càng lớn, phân loại càng quan trọng.

Chiến lược xoay vòng IP trong Proxy training AI

Xoay vòng IP là yếu tố quyết định độ ổn định khi thu thập dữ liệu lớn. Nhưng xoay vòng không có nghĩa là đổi IP càng nhiều càng tốt.

Proxy xoay vòng IP

Proxy xoay vòng IP

Nếu đổi IP liên tục trong một phiên cần giữ cookie, website có thể thấy hành vi bất thường. Ngược lại, nếu giữ một IP quá lâu trong tác vụ khối lượng lớn, IP đó dễ bị giới hạn.

Xoay vòng theo từng request

Cách này nghĩa là mỗi request đi qua một IP mới. Nó phù hợp với các URL độc lập, không cần đăng nhập, không cần giữ cookie và không cần đi theo hành trình nhiều bước.

Ví dụ, anh em có 10.000 URL bài viết từ nhiều website khác nhau. Mỗi URL chỉ cần truy cập một lần để lấy HTML. Khi đó, xoay vòng theo request là lựa chọn dễ triển khai.

import requests

# Proxy xoay vòng: mỗi request có thể đi qua một IP khác nhau

proxies = {

    'http': 'http://username:[email protected]:12345',

    'https': 'http://username:[email protected]:12345'

}

urls = [

    'https://site1.com/article-1',

    'https://site2.com/article-2',

    'https://site3.com/article-3'

]

for url in urls:

    response = requests.get(url, proxies=proxies, timeout=30)

    # parse_data là hàm anh em tự viết để xử lý HTML

    parse_data(response.text)

Đoạn code trên có 3 ý chính:

  • proxies là cấu hình proxy cho cả HTTPHTTPS.

  • requests.get() gửi request qua proxy đã khai báo.

  • parse_data() là nơi anh em trích xuất nội dung cần lấy.

Ưu điểm của cách này là đơn giản, dễ mở rộng và giảm tải cho từng IP. Nhược điểm là không phù hợp với website cần giữ phiên đăng nhập hoặc cookie.

Xoay vòng theo thời gian với phiên cố định

Phiên cố định phù hợp khi anh em cần đi qua nhiều trang liên tiếp trên cùng một website. Ví dụ, crawl danh mục sản phẩm từ trang 1 đến trang 100.

Trong trường hợp này, giữ cùng một IP trong 5-30 phút sẽ tự nhiên hơn. Website sẽ thấy giống một người dùng đang xem nhiều trang trong cùng một phiên.

import requests

import time

import random

import string

def generate_random_string(length=8):

    return ''.join(random.choice(string.ascii_lowercase) for _ in range(length))

# Tạo session ID để giữ IP trong một khoảng thời gian

session_id = generate_random_string()

proxies = {

    'http': f'http://username-session-{session_id}:[email protected]:12345',

    'https': f'http://username-session-{session_id}:[email protected]:12345'

}

for page in range(1, 101):

    url = f'https://site.com/catalog?page={page}'

    response = requests.get(url, proxies=proxies, timeout=30)

    parse_page(response.text)

    # Nghỉ 2 giây để tránh gửi request quá dày

    time.sleep(2)

Đoạn code này dễ hiểu như sau:

  • session_id giúp hệ thống proxy nhận diện phiên.

  • Các request trong cùng phiên sẽ dùng cùng một IP.

  • time.sleep(2) tạo khoảng nghỉ giữa các request.

Nếu website giới hạn khoảng 60 request/phút, anh em không nên gửi sát giới hạn. Hãy giữ tốc độ thấp hơn để giảm lỗi. Ví dụ, chỉ chạy 20-40 request/phút trên mỗi IP.

Pool IP tĩnh cho hệ thống lớn

Pool IP tĩnh phù hợp khi anh em có danh sách 100-1.000 IP và muốn tự kiểm soát phân phối request.

Cách này hữu ích khi cần:

  • Chia domain theo từng nhóm IP.

  • Theo dõi IP nào lỗi nhiều.

  • Tạm ngưng IP bị giới hạn.

  • Cân bằng tải giữa nhiều worker.

import requests

from itertools import cycle

# Danh sách proxy tĩnh

ip_pool = [

    'http://user:[email protected]:12345',

    'http://user:[email protected]:12345',

    'http://user:[email protected]:12345',

]

# cycle giúp xoay vòng qua từng proxy

proxy_cycle = cycle(ip_pool)

for url in urls:

    proxy = next(proxy_cycle)

    try:

        response = requests.get(

            url,

            proxies={'http': proxy, 'https': proxy},

            timeout=30

        )

        parse_data(response.text)

    except Exception as e:

        log_error(url, proxy, str(e))

Trong đoạn này, cycle(ip_pool) giúp lấy lần lượt từng proxy. Khi đi hết danh sách, nó quay lại từ đầu.

Điểm mạnh là dễ kiểm soát. Điểm yếu là anh em cần viết thêm logic để loại IP lỗi, ghi log và retry.

Kết luận phần xoay vòng: IP rotation phải đi cùng logic crawl. Không nên xoay bừa, cũng không nên giữ IP quá lâu nếu khối lượng request lớn.

Giảm lỗi chống bot khi dùng Proxy training AI

Proxy giúp giảm rủi ro chặn IP, nhưng không giải quyết mọi vấn đề. Website hiện đại có thể kiểm tra nhiều tín hiệu khác nhau để nhận diện bot.

Lỗi chống bot khi dùng proxy

Lỗi chống bot khi dùng proxy

Các tín hiệu thường được kiểm tra gồm:

  • User-Agent: Trình duyệt nào đang truy cập.

  • Headers: Accept, Accept-Language, Referer, Encoding.

  • TLS fingerprint: Dấu hiệu từ kết nối SSL.

  • JavaScript fingerprint: Canvas, WebGL, AudioContext, font, plugin.

  • Hành vi: Tốc độ cuộn, click, thời gian ở lại trang.

  • Mẫu request: Truy cập quá nhanh, quá đều, quá giống nhau.

Vì vậy, với website JavaScript hoặc nguồn có cơ chế bảo vệ mạnh, anh em nên dùng browser automation thay vì chỉ dùng HTTP client.

Dùng Puppeteer cho website cần render JavaScript

Puppeteer giúp điều khiển trình duyệt bằng code. Nó phù hợp khi trang cần load JavaScript rồi mới hiển thị dữ liệu.

Lưu ý quan trọng: đoạn code dưới đây nên dùng cho website anh em sở hữu, môi trường kiểm thử hoặc nguồn dữ liệu đã được phép truy cập. Không nên dùng để vượt qua lớp bảo vệ trái phép.

// Puppeteer với plugin hỗ trợ môi trường browser automation tự nhiên hơn

const puppeteer = require('puppeteer-extra');

const StealthPlugin = require('puppeteer-extra-plugin-stealth');

puppeteer.use(StealthPlugin());

(async () => {

    const browser = await puppeteer.launch({

        headless: true,

        args: [

            '--proxy-server=http://username:[email protected]:12345',

            '--disable-blink-features=AutomationControlled'

        ]

    });

    const page = await browser.newPage();

    // Thiết lập viewport giống người dùng desktop phổ biến

    await page.setViewport({

        width: 1920,

        height: 1080

    });

    // Mở trang cần thu thập dữ liệu

    await page.goto('https://example.com/data-page', {

        waitUntil: 'networkidle2'

    });

    // Tạo độ trễ nhẹ để trang tải ổn định hơn

    await page.waitForTimeout(2000 + Math.random() * 3000);

    // Lấy dữ liệu từ phần tử trên trang

    const data = await page.evaluate(() => {

        const element = document.querySelector('.data');

        return element ? element.innerText : null;

    });

    console.log(data);

    await browser.close();

})();

Giải thích dễ hiểu:

  • puppeteer-extra giúp mở rộng Puppeteer bằng plugin.

  • StealthPlugin() làm môi trường automation ít “cứng” hơn.

  • --proxy-server khai báo proxy cho trình duyệt.

  • page.setViewport() đặt kích thước màn hình.

  • page.goto() mở website.

  • page.evaluate() chạy JavaScript trong trang để lấy dữ liệu.

Nếu website không cần JavaScript, anh em không cần dùng Puppeteer. Dùng trình duyệt thật cho mọi thứ sẽ tốn CPU, RAM và chi phí server.

Dùng Playwright cho nhiều trình duyệt

Playwright hỗ trợ Chromium, Firefox và WebKit. Nó phù hợp khi anh em muốn kiểm tra dữ liệu trên nhiều môi trường trình duyệt.

Playwright cũng hữu ích khi website có nhiều thao tác như click, cuộn, chọn bộ lọc hoặc chờ phần tử xuất hiện.

const { chromium } = require('playwright');

(async () => {

    const browser = await chromium.launch({

        headless: true,

        proxy: {

            server: 'http://residential.proxy.example:12345',

            username: 'username',

            password: 'password'

        }

    });

    const page = await browser.newPage({

        viewport: {

            width: 1366,

            height: 768

        }

    });

    await page.goto('https://example.com/catalog', {

        waitUntil: 'domcontentloaded'

    });

    await page.waitForSelector('.item');

    const items = await page.$$eval('.item', elements => {

        return elements.map(item => ({

            title: item.querySelector('h2')?.innerText || '',

            price: item.querySelector('.price')?.innerText || ''

        }));

    });

    console.log(items);

    await browser.close();

})();

Trong đoạn này:

  • chromium.launch() mở trình duyệt Chromium.

  • proxy khai báo server, usernamepassword.

  • waitForSelector('.item') chờ dữ liệu xuất hiện.

  • $$eval() lấy nhiều phần tử cùng lúc.

Khi crawl ở quy mô lớn, anh em nên giới hạn số browser chạy đồng thời. Nếu mở quá nhiều browser, server sẽ nghẽn trước khi proxy bị nghẽn.

Kiến trúc hạ tầng Proxy training AI cho dự án lớn

Khi dữ liệu tăng lên hàng triệu URL, một file script chạy trên một máy sẽ không còn phù hợp. Anh em cần một kiến trúc có thể mở rộng.

Hạ tầng Proxy training AI

Hạ tầng Proxy training AI

Một hệ thống cơ bản nên có 4 phần.

Hàng đợi tác vụ

Hàng đợi lưu danh sách URL cần crawl. Các công cụ thường dùng gồm Redis, RabbitMQ hoặc AWS SQS.

Hàng đợi giúp worker lấy từng URL ra xử lý. Nếu worker bị lỗi, URL có thể được đưa lại vào hàng đợi để chạy lại.

Worker xử lý dữ liệu

Worker là tiến trình lấy URL từ hàng đợi, chọn proxy, gửi request, parse dữ liệu và lưu kết quả.

Một hệ thống có thể chạy 10, 50 hoặc 100 worker song song. Mỗi worker có thể dùng một proxy riêng hoặc dùng chung pool proxy.

Kho lưu trữ

Dữ liệu sau khi crawl cần được lưu đúng chỗ.

  • Văn bản thô: S3, MinIO hoặc storage dạng object.

  • Dữ liệu có cấu trúc: PostgreSQL, MySQL hoặc MongoDB.

  • Log crawl: Elasticsearch, Loki hoặc file log.

  • Dữ liệu lớn: data lake trên S3 hoặc Google Cloud Storage.

Giám sát hệ thống

Giám sát giúp anh em biết hệ thống đang khỏe hay đang lỗi.

Các chỉ số cần theo dõi gồm:

  • Tỷ lệ request thành công.

  • Tỷ lệ lỗi 403, 429, 500.

  • Số URL xử lý mỗi phút.

  • Dung lượng proxy đã dùng.

  • Chi phí trên 1.000 bản ghi.

  • Tỷ lệ dữ liệu trùng lặp.

Nếu tỷ lệ lỗi tăng đột ngột, anh em cần giảm tốc độ, đổi loại proxy hoặc kiểm tra lại logic crawl.

Ví dụ worker Python với Redis

Dưới đây là ví dụ worker đơn giản. Nó lấy URL từ Redis, chọn proxy, gửi request, parse dữ liệu và lưu kết quả.

# worker.py - tiến trình xử lý crawl dữ liệu

import redis

import requests

import json

from datetime import datetime

# Kết nối Redis để lấy hàng đợi tác vụ

queue = redis.Redis(host='redis-server', port=6379)

# Hàm giả định: load danh sách proxy từ file config hoặc database

proxies_pool = load_proxies_from_config()

while True:

    # Lấy một URL từ hàng đợi parsing_queue

    task = queue.blpop('parsing_queue', timeout=5)

    if not task:

        continue

    url = task[1].decode('utf-8')

    proxy = get_next_proxy(proxies_pool)

    try:

        response = requests.get(

            url,

            proxies={

                'http': proxy,

                'https': proxy

            },

            timeout=30,

            headers={

                'User-Agent': get_random_user_agent()

            }

        )

        # Phân tích HTML để lấy dữ liệu cần thiết

        data = parse_html(response.text)

        # Lưu dữ liệu vào storage

        file_path = f'data/{datetime.now().isoformat()}/{hash(url)}.json'

        save_to_s3(data, file_path)

        # Ghi log thành công

        log_success(url, proxy)

    except Exception as e:

        # Nếu lỗi, đưa URL trở lại hàng đợi để retry

        queue.rpush('parsing_queue', url)

        # Ghi log lỗi và đánh dấu proxy có vấn đề

        log_error(url, proxy, str(e))

        mark_proxy_as_failed(proxy)

Giải thích từng phần:

  • queue.blpop() lấy URL từ Redis theo cơ chế chờ.

  • get_next_proxy() chọn proxy tiếp theo trong pool.

  • requests.get() gửi request qua proxy.

  • parse_html() xử lý HTML và trích dữ liệu.

  • save_to_s3() lưu kết quả.

  • Nếu lỗi, URL được đưa lại vào hàng đợi để xử lý sau.

Điểm hay của kiến trúc này là dễ mở rộng. Muốn nhanh hơn, anh em chỉ cần thêm worker hoặc thêm server.

Công cụ tự động hóa cho Proxy training AI

Tự viết crawler từ đầu giúp linh hoạt, nhưng không phải lúc nào cũng hiệu quả. Với dự án lớn, anh em nên dùng framework chuyên biệt để tiết kiệm thời gian.

Scrapy cho Python

Scrapy là framework phổ biến cho web crawling và web scraping bằng Python. Nó hỗ trợ request song song, middleware, retry, pipeline và xuất dữ liệu ra JSON, CSV hoặc database.

Ví dụ cấu hình Scrapy với proxy xoay vòng:

# settings.py - cấu hình Scrapy với danh sách proxy

ROTATING_PROXY_LIST = [

    'http://user:[email protected]:12345',

    'http://user:[email protected]:12345',

    'http://user:[email protected]:12345',

]

DOWNLOADER_MIDDLEWARES = {

    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,

    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,

}

# Số request chạy đồng thời

CONCURRENT_REQUESTS = 100

# Độ trễ giữa các request

DOWNLOAD_DELAY = 0.5

Giải thích dễ hiểu:

  • ROTATING_PROXY_LIST là danh sách proxy.

  • RotatingProxyMiddleware tự đổi proxy giữa các request.

  • BanDetectionMiddleware hỗ trợ phát hiện proxy bị chặn.

  • CONCURRENT_REQUESTS kiểm soát độ song song.

  • DOWNLOAD_DELAY giúp request không bị dồn quá dày.

Scrapy phù hợp với website tĩnh. Nếu website render nhiều bằng JavaScript, anh em nên kết hợp Scrapy với trình duyệt headless hoặc chuyển sang Playwright.

Crawlee cho Node.js

Crawlee phù hợp với anh em làm JavaScript hoặc Node.js. Nó hỗ trợ HTTP crawler, Puppeteer crawler, Playwright crawler và quản lý proxy khá tiện.

Ví dụ dùng Crawlee với PlaywrightCrawler:

import { PlaywrightCrawler, ProxyConfiguration } from 'crawlee';

const proxyConfiguration = new ProxyConfiguration({

    proxyUrls: [

        'http://user:[email protected]:12345',

        'http://user:[email protected]:12345',

    ],

});

const crawler = new PlaywrightCrawler({

    proxyConfiguration,

    // Giới hạn số page chạy đồng thời

    maxConcurrency: 50,

    requestHandler: async ({ page, request }) => {

        await page.waitForSelector('.data');

        const data = await page.$$eval('.item', items =>

            items.map(item => ({

                title: item.querySelector('h2')?.innerText || '',

                price: item.querySelector('.price')?.innerText || ''

            }))

        );

        await saveData({

            url: request.url,

            data

        });

    },

});

await crawler.run([

    'https://example.com/catalog'

]);

Đoạn này có 4 điểm chính:

  • ProxyConfiguration quản lý danh sách proxy.

  • PlaywrightCrawler dùng trình duyệt để load trang.

  • maxConcurrency giới hạn số tác vụ chạy cùng lúc.

  • requestHandler là nơi lấy dữ liệu từ từng trang.

Crawlee tiện ở chỗ tích hợp tốt với browser automation, phù hợp với website động.

Apache Nutch cho crawling quy mô lớn

Apache Nutch là crawler mã nguồn mở có khả năng mở rộng cao. Nó phù hợp với các bài toán crawl rất lớn, kiểu thu thập dữ liệu trên nhiều domain và nhiều lớp liên kết.

Nutch khó cài hơn Scrapy hoặc Crawlee. Tuy nhiên, khi anh em cần crawling quy mô lớn, có chính sách crawl rõ ràng, hỗ trợ sitemap, robots.txt và xử lý dữ liệu phân tán, Nutch là lựa chọn đáng cân nhắc.

Với đội nhỏ hoặc dự án mới, ProxyVN khuyên anh em nên bắt đầu từ Scrapy hoặc Crawlee trước. Khi quy mô đủ lớn, hãy tính đến Nutch.

Tối ưu tốc độ và chi phí khi dùng Proxy training AI

Chi phí proxy thường tăng không phải vì proxy đắt, mà vì hệ thống crawl chưa tối ưu. Có 4 điểm anh em nên kiểm soát từ đầu.

Kết hợp nhiều loại proxy

Đừng dùng residential proxy cho mọi nguồn. Hãy chia nguồn dữ liệu theo độ khó.

  • Nguồn không có bảo vệ: dùng datacenter proxy.

  • Nguồn bảo vệ trung bình: dùng residential rotating.

  • Nguồn cần giữ phiên: dùng residential sticky session.

  • Nguồn mobile thật sự: mới dùng mobile proxy.

Ví dụ, anh em crawl 100 website. Nếu 70 website không có bảo vệ mạnh, hãy dùng datacenter cho nhóm đó. Chỉ dùng residential cho 30 website khó hơn. Cách chia này giúp giảm chi phí đáng kể.

Cache dữ liệu đã lấy

Nếu một URL đã crawl hôm nay và nội dung ít thay đổi, anh em không nên tải lại liên tục. Cache giúp tiết kiệm request, tiết kiệm proxy và giảm tải hệ thống.

import hashlib

import redis

import requests

cache = redis.Redis(host='localhost', port=6379)

def fetch_with_cache(url, proxies):

    # Tạo key cache từ URL

    cache_key = hashlib.md5(url.encode()).hexdigest()

    # Kiểm tra URL đã có trong cache chưa

    cached = cache.get(cache_key)

    if cached:

        return cached.decode('utf-8')

    # Nếu chưa có cache, gửi request mới

    response = requests.get(url, proxies=proxies, timeout=30)

    html = response.text

    # Lưu HTML vào cache trong 24 giờ

    cache.setex(cache_key, 86400, html)

    return html

Giải thích:

  • hashlib.md5() tạo mã ngắn từ URL.

  • cache.get() kiểm tra dữ liệu đã có chưa.

  • Nếu có cache, hệ thống trả dữ liệu cũ.

  • Nếu chưa có, hệ thống crawl mới và lưu lại trong 24 giờ.

Cách này đặc biệt hữu ích với trang tin, blog hoặc danh mục sản phẩm không thay đổi liên tục.

Giảm dung lượng tải về

Nếu anh em chỉ cần văn bản, đừng tải ảnh, CSS, font và video. Với Puppeteer, có thể chặn các loại tài nguyên không cần thiết.

await page.setRequestInterception(true);

page.on('request', request => {

    const resourceType = request.resourceType();

    if (['image', 'stylesheet', 'font', 'media'].includes(resourceType)) {

        request.abort();

    } else {

        request.continue();

    }

});

Đoạn này giúp trình duyệt bỏ qua ảnh, CSS, font và media. Nhờ đó, tốc độ load nhanh hơn và dung lượng proxy giảm xuống.

Tuy nhiên, nếu website cần CSS hoặc ảnh để render dữ liệu, anh em cần kiểm tra kỹ trước khi chặn.

Theo dõi chỉ số chi phí

Muốn tối ưu chi phí, anh em cần đo được chi phí. Đừng chỉ nhìn tổng tiền proxy mỗi tháng.

Nên theo dõi các chỉ số sau:

Chỉ số

Mốc nên theo dõi

Khi lệch cần làm gì

Tỷ lệ thành công

Trên 90%

Giảm tốc độ, đổi proxy, kiểm tra logic crawl

Tốc độ xử lý

50-200 request/phút/worker

Thêm worker hoặc tối ưu code

Chi phí/1.000 bản ghi

Theo từng dự án

Giảm dung lượng, dùng datacenter cho nguồn dễ

Tỷ lệ trùng lặp

Dưới 5%

Cải thiện deduplicate URL

Lỗi 403/429

Càng thấp càng tốt

Tăng delay, đổi chiến lược xoay IP

Nếu không đo, anh em sẽ không biết tiền đang mất ở đâu. Có khi vấn đề không nằm ở proxy, mà nằm ở việc tải quá nhiều dữ liệu không cần thiết.

Quy trình triển khai Proxy training AI dễ áp dụng

Để dễ làm, anh em có thể đi theo 6 bước sau.

Bước 1: Phân loại nguồn dữ liệu

Trước tiên, hãy chia nguồn thành nhóm dễ, trung bình và khó. Nhóm dễ dùng datacenter. Nhóm khó dùng residential. Nhóm cần mobile mới dùng mobile proxy.

Bước 2: Chọn chiến lược xoay IP

Nếu URL độc lập, dùng rotating proxy theo request. Nếu cần giữ phiên, dùng sticky session. Nếu cần kiểm soát sâu, dùng pool IP tĩnh.

Bước 3: Chọn công cụ crawl

Website tĩnh dùng Scrapy hoặc requests. Website động dùng Playwright, Puppeteer hoặc Crawlee. Dự án rất lớn có thể cân nhắc Apache Nutch.

Bước 4: Thiết kế hàng đợi và worker

Không nên crawl tất cả trong một script. Hãy dùng hàng đợi, worker, retry và log để hệ thống dễ mở rộng.

Bước 5: Lưu dữ liệu có cấu trúc

Mỗi bản ghi nên có URL nguồn, thời gian crawl, loại dữ liệu, trạng thái xử lý và nội dung đã parse. Điều này giúp anh em kiểm tra lại khi mô hình có lỗi dữ liệu.

Bước 6: Theo dõi và tối ưu

Sau khi chạy thử, hãy nhìn tỷ lệ lỗi, tốc độ, dung lượng và chi phí. Đừng mở rộng ngay khi chưa biết hệ thống đang nghẽn ở đâu.

Một cách an toàn là bắt đầu với 10-20 nguồn nhỏ. Khi đã ổn, anh em mới tăng số domain, tăng worker và tăng pool proxy.

Lưu ý quan trọng khi dùng Proxy training AI

Proxy giúp crawl ổn định hơn, nhưng anh em không nên dùng proxy để lấy dữ liệu trái phép. Đây là điểm cần nói rõ.

Theo Google Search Central về robots.txt, robots.txt giúp website hướng dẫn crawler URL nào có thể truy cập, chủ yếu để tránh bị quá tải bởi request. Vì vậy, trước khi crawl, anh em nên kiểm tra robots.txt, điều khoản sử dụng và chính sách dữ liệu của nguồn.

Một quy trình tốt nên có các nguyên tắc sau:

  • Chỉ crawl nguồn được phép.

  • Không gửi request quá dày.

  • Tôn trọng robots.txt và điều khoản website.

  • Không thu thập dữ liệu nhạy cảm.

  • Không phá CAPTCHA, đăng nhập hoặc lớp bảo vệ trái phép.

  • Lưu nguồn dữ liệu để kiểm tra lại khi cần.

  • Có cơ chế xóa dữ liệu nếu nguồn yêu cầu.

Đây không chỉ là vấn đề kỹ thuật. Đây còn là vấn đề chất lượng dữ liệu, rủi ro pháp lý và uy tín của dự án AI.

Proxy training AI giúp anh em thu thập dữ liệu lớn ổn định hơn khi biết chọn đúng loại proxy, xoay vòng IP hợp lý, dùng công cụ phù hợp và kiểm soát chi phí bằng cache, giới hạn tải và giám sát chỉ số. Khi cần hệ thống proxy ổn định, ít mất kết nối và có hỗ trợ kỹ thuật, anh em có thể tham khảo Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam cho kế hoạch Proxy training AI.

TIN TỨC LIÊN QUAN