Việc thu thập dữ liệu từ diễn đàn và bảng thông báo là một nhiệm vụ cực kỳ quan trọng đối với các nhà tiếp thị, nhà phân tích thị trường và chủ doanh nghiệp. Phân tích Avito để theo dõi giá cả của đối thủ, thu thập thông tin liên lạc từ các diễn đàn ngành, phân tích đánh giá trên các nền tảng chuyên biệt - tất cả những nhiệm vụ này đều gặp phải một vấn đề: các trang web tích cực chặn việc thu thập dữ liệu tự động. Trong bài viết này, chúng ta sẽ xem xét cách thiết lập phân tích ổn định qua proxy và tránh bị cấm.
Tại sao các diễn đàn và bảng thông báo chặn phân tích
Các chủ sở hữu nền tảng bảo vệ dữ liệu của họ vì nhiều lý do. Thứ nhất, việc phân tích hàng loạt tạo ra tải cho các máy chủ - một trình phân tích có thể tạo ra hàng nghìn yêu cầu mỗi giờ, tương đương với việc truy cập trang web bởi hàng trăm người dùng cùng một lúc. Thứ hai, dữ liệu thu thập được thường được sử dụng bởi các đối thủ: giá từ Avito được đưa vào các hệ thống theo dõi, thông tin liên lạc từ các diễn đàn được đưa vào cơ sở dữ liệu cho việc bán hàng lạnh.
Các hệ thống bảo vệ hiện đại phân tích nhiều tham số: tần suất yêu cầu từ một IP, mẫu hành vi (trình phân tích mở trang quá nhanh và liên tiếp), tiêu đề trình duyệt, sự hiện diện của JavaScript. Ví dụ, Avito sử dụng bảo vệ đa tầng: kiểm tra User-Agent, phân tích cookies, fingerprinting trình duyệt, captcha khi có hoạt động nghi ngờ.
Những dấu hiệu điển hình mà bạn sẽ bị phát hiện:
- Một địa chỉ IP - nếu tất cả yêu cầu đến từ một IP, đây là một lệnh cấm ngay lập tức
- Tần suất yêu cầu cao - người dùng thông thường không thể mở 10 trang mỗi giây
- Thiếu cookies và JavaScript - các script đơn giản không thực thi JS và không lưu cookies
- User-Agent nghi ngờ - các phiên bản trình duyệt cũ hoặc tiêu đề không tương thích
- Đi qua các trang một cách tuần tự - phân tích theo thứ tự nghiêm ngặt (trang 1, 2, 3...) trông không tự nhiên
Loại proxy nào phù hợp cho phân tích diễn đàn
Việc lựa chọn loại proxy phụ thuộc vào khối lượng dữ liệu, ngân sách và mức độ bảo vệ của trang web mục tiêu. Chúng ta sẽ xem xét ba lựa chọn chính và ứng dụng của chúng cho việc phân tích.
| Loại proxy | Tốc độ | Độ tin cậy của các trang web | Tốt nhất cho |
|---|---|---|---|
| Proxy trung tâm dữ liệu | Rất cao (100+ Mbit/s) | Thấp (dễ bị phát hiện) | Diễn đàn nhỏ không có bảo vệ, phân tích lưu trữ |
| Proxy cư trú | Trung bình (10-50 Mbit/s) | Cao (IP thực tế từ mạng gia đình) | Avito, diễn đàn lớn, trang web có bảo vệ |
| Proxy di động | Trung bình (5-30 Mbit/s) | Tối đa (IP của các nhà mạng di động) | Các nền tảng có bảo vệ nghiêm ngặt, thu thập thông tin liên lạc |
Proxy trung tâm dữ liệu - là lựa chọn rẻ nhất, phù hợp cho các nhiệm vụ đơn giản. Nếu bạn cần phân tích một diễn đàn chuyên đề nhỏ hoặc bảng thông báo không có bảo vệ nghiêm trọng, điều này là đủ. Tốc độ cho phép xử lý hàng chục nghìn trang mỗi giờ. Nhưng Avito, YouDo, forum.ru và các nền tảng lớn khác sẽ nhanh chóng phát hiện những IP như vậy và chặn chúng.
Proxy cư trú - là sự cân bằng tối ưu giữa giá cả và chất lượng cho hầu hết các nhiệm vụ. Đây là các IP thực tế của người dùng gia đình, mà các trang web không thể phân biệt với những người truy cập thông thường. Đối với việc phân tích Avito, Yandex.Services, các diễn đàn lớn, đây là lựa chọn tiêu chuẩn. Một điểm quan trọng: proxy cư trú thường được bán với thanh toán theo lưu lượng, vì vậy hãy tối ưu hóa các yêu cầu - không tải xuống hình ảnh và script không cần thiết.
Proxy di động - độ tin cậy tối đa cho các trường hợp phức tạp. IP của các nhà mạng di động (MTS, Beeline, Megafon) có mức độ tin cậy cao nhất, vì một IP có thể có hàng nghìn người dùng thực tế (công nghệ CGNAT). Sử dụng cho các nền tảng có bảo vệ nghiêm ngặt hoặc khi cần thu thập dữ liệu quan trọng mà không có rủi ro bị cấm.
Phân tích Avito: đặc điểm và thiết lập
Avito là một trong những nền tảng được bảo vệ nhất trong RuNet. Hệ thống chống phân tích bao gồm kiểm tra JavaScript, fingerprinting trình duyệt, phân tích hành vi, captcha khi có nghi ngờ nhỏ nhất. Một script đơn giản với requests sẽ không hoạt động - bạn sẽ nhận được một trang trống hoặc captcha ngay từ yêu cầu thứ ba.
Những gì cần thiết cho việc phân tích ổn định Avito:
Các thành phần bắt buộc:
1. Proxy cư trú hoặc di động với xoay vòng mỗi 5-10 phút
2. Trình duyệt headless (Selenium, Puppeteer, Playwright) để thực thi JavaScript
3. Tiêu đề trình duyệt và User-Agent thực tế của phiên bản Chrome hiện tại
4. Thời gian chờ giữa các yêu cầu: 3-7 giây cho mỗi trang
5. Lưu cookies giữa các phiên
Nhiệm vụ điển hình - theo dõi giá cả của đối thủ. Bạn cần thu thập thông tin hàng ngày trong danh mục của bạn và theo dõi sự thay đổi. Đối với danh mục có 500-1000 thông báo, sẽ cần khoảng 50-100 yêu cầu (bao gồm phân trang và thẻ sản phẩm). Khi được thiết lập đúng cách, điều này sẽ mất khoảng 10-15 phút và 1-2 GB lưu lượng của proxy cư trú.
Thiết lập từng bước cho trình phân tích Avito:
- Nhận proxy - đặt hàng một nhóm IP cư trú với xoay vòng. Để theo dõi hàng ngày một danh mục, 10-20 GB lưu lượng mỗi tháng là đủ.
- Thiết lập trình duyệt headless - sử dụng Selenium hoặc Puppeteer. Quan trọng: bật chế độ headless, nhưng thêm các tham số để vượt qua phát hiện (window.navigator.webdriver = false).
- Thiết lập proxy trong trình duyệt - truyền dữ liệu proxy khi khởi động trình duyệt. Đối với Selenium, đây là các tham số --proxy-server, đối với Puppeteer - args trong puppeteer.launch().
- Thêm hành vi thực tế - thời gian chờ ngẫu nhiên 3-7 giây, cuộn trang trước khi thu thập dữ liệu, di chuyển chuột (đối với Selenium).
- Lưu cookies - sau lần truy cập đầu tiên, lưu cookies và sử dụng chúng trong các phiên tiếp theo. Điều này giảm thiểu sự nghi ngờ.
- Thay đổi IP thường xuyên - xoay vòng mỗi 5-10 phút hoặc mỗi 20-30 yêu cầu. Không sử dụng một IP cho toàn bộ quá trình phân tích.
Lỗi nghiêm trọng của người mới bắt đầu là phân tích quá nhanh. Ngay cả với proxy, nếu bạn mở các trang mỗi giây, hệ thống sẽ phát hiện bot qua mẫu hành vi. Người dùng thông thường đọc thông báo trong 10-30 giây, cuộn xuống, quay lại tìm kiếm. Trình phân tích của bạn nên bắt chước điều này: thời gian chờ, cuộn trang, đôi khi chuyển sang các danh mục bên cạnh.
Thu thập dữ liệu từ diễn đàn: chiến lược và công cụ
Các diễn đàn khác nhau về mức độ bảo vệ. Các diễn đàn cũ trên phpBB hoặc vBulletin thường không có bảo vệ chống bot nghiêm trọng - chỉ cần proxy trung tâm dữ liệu và một trình phân tích đơn giản. Các nền tảng hiện đại (forum.ru, các diễn đàn ngành chuyên biệt) sử dụng Cloudflare hoặc các hệ thống bảo vệ riêng.
Các nhiệm vụ điển hình của phân tích diễn đàn:
- Thu thập thông tin liên lạc - email, điện thoại, Telegram từ chữ ký và tin nhắn của người dùng
- Theo dõi đề cập đến thương hiệu - theo dõi đánh giá về công ty của bạn hoặc đối thủ
- Phân tích tâm trạng - thu thập ý kiến về sản phẩm, dịch vụ, xu hướng trong ngành
- Tìm kiếm khách hàng tiềm năng - những người đang tìm kiếm giải pháp cho vấn đề của bạn (ví dụ, trên các diễn đàn xây dựng tìm kiếm nhà thầu)
Đối với các diễn đàn nhỏ (dưới 10.000 trang), các công cụ có sẵn là đủ: Octoparse, ParseHub, WebHarvy. Chúng có giao diện trực quan - bạn chỉ cần nhấp vào các phần tử cần thu thập, và công cụ sẽ tạo ra trình phân tích. Trong cài đặt, bạn chỉ định proxy, thời gian chờ và bắt đầu thu thập.
Đối với các dự án lớn (hàng trăm nghìn trang), cần một trình phân tích tùy chỉnh. Các framework phổ biến: Scrapy (Python), Puppeteer (JavaScript), Playwright (hỗ trợ tất cả các ngôn ngữ). Chúng cho phép bạn linh hoạt thiết lập logic duyệt, xử lý lỗi, phân tích phân tán qua nhóm proxy.
Ví dụ về chiến lược cho phân tích diễn đàn ngành:
Nhiệm vụ: thu thập thông tin liên lạc của các chuyên gia từ diễn đàn xây dựng (50.000 người dùng, 500.000 tin nhắn).
1. Sử dụng proxy cư trú với nhóm 50-100 IP
2. Phân tích danh sách người dùng (50.000 hồ sơ) với tốc độ 500 hồ sơ/giờ (thời gian chờ 7 giây)
3. Thay đổi IP mỗi 100 hồ sơ (mỗi 12 phút)
4. Từ các hồ sơ, trích xuất email, trang web, chữ ký với thông tin liên lạc
5. Tổng thời gian: 100 giờ (4 ngày làm việc liên tục)
6. Lưu lượng: khoảng 20-30 GB của proxy cư trú
Một điểm quan trọng: nhiều diễn đàn yêu cầu đăng ký để xem thông tin liên lạc hoặc các phần ẩn. Tạo một vài tài khoản trước (thủ công, từ các IP khác nhau), giữ chúng trong 1-2 tuần, thực hiện một vài tin nhắn. Sử dụng những tài khoản này để phân tích - người dùng đã xác thực gây ít nghi ngờ hơn.
Xoay vòng IP và quản lý phiên
Xoay vòng IP đúng cách là chìa khóa cho việc phân tích ổn định lâu dài. Có hai cách tiếp cận chính: xoay vòng theo thời gian và xoay vòng theo số lượng yêu cầu.
Xoay vòng theo thời gian: thay đổi IP mỗi N phút. Phù hợp cho các nhiệm vụ mà tính dự đoán là quan trọng. Ví dụ, bạn phân tích Avito mỗi 5 phút và thay đổi IP - như vậy bạn đảm bảo không vượt quá giới hạn yêu cầu từ một địa chỉ. Nhược điểm: nếu trình phân tích bị rơi hoặc chậm lại, bạn sẽ mất IP một cách vô ích.
Xoay vòng theo yêu cầu: thay đổi IP mỗi N yêu cầu (ví dụ, mỗi 20-50 trang). Tiêu thụ proxy hiệu quả hơn, nhưng yêu cầu tính toán chính xác. Nếu trang web giới hạn 100 yêu cầu từ IP mỗi giờ, hãy đặt xoay vòng ở 80 yêu cầu - để lại một khoảng trống cho các lỗi.
| Nền tảng | Xoay vòng được khuyến nghị | Thời gian chờ giữa các yêu cầu |
|---|---|---|
| Avito | Mỗi 5-10 phút hoặc 20-30 yêu cầu | 3-7 giây |
| YouDo, Profi.ru | Mỗi 10-15 phút hoặc 40-50 yêu cầu | 4-8 giây |
| Diễn đàn có Cloudflare | Mỗi 15-20 phút hoặc 60-80 yêu cầu | 5-10 giây |
| Diễn đàn đơn giản (phpBB, vBulletin) | Mỗi 30-60 phút hoặc 200-300 yêu cầu | 2-5 giây |
Quản lý phiên: khi thay đổi IP, hãy quyết định - có nên đặt lại phiên (cookies, localStorage) hay không. Đối với phân tích đã xác thực (diễn đàn, tài khoản cá nhân), hãy lưu phiên, nhưng thay đổi IP ít thường xuyên hơn - nếu không, trang web sẽ nghi ngờ rằng tài khoản đã bị hack (đăng nhập từ các thành phố khác nhau). Đối với dữ liệu công khai (Avito không cần xác thực), hãy đặt lại mọi thứ khi thay đổi IP - mỗi IP trông giống như một người dùng mới.
Kỹ thuật nâng cao - sticky sessions (phiên dính). Một số nhà cung cấp proxy cho phép "gắn" IP trong 10-30 phút. Bạn nhận được một IP, thực hiện tất cả các yêu cầu từ nó trong khuôn khổ nhiệm vụ logic (ví dụ, phân tích một danh mục Avito), sau đó thay đổi sang IP mới cho danh mục tiếp theo. Điều này tự nhiên hơn là thay đổi IP giữa các lần xem.
Thiết lập các trình phân tích phổ biến cho proxy
Hãy xem xét việc thiết lập proxy trong các công cụ phổ biến cho phân tích. Các ví dụ dành cho các chuyên gia kỹ thuật, những người viết trình phân tích riêng của họ.
Scrapy (Python): thêm middleware cho việc xoay vòng proxy. Tạo danh sách proxy trong settings.py và sử dụng RandomProxy middleware để tự động xoay vòng cho mỗi yêu cầu.
# settings.py
ROTATING_PROXY_LIST = [
'http://user:pass@proxy1.example.com:8000',
'http://user:pass@proxy2.example.com:8000',
'http://user:pass@proxy3.example.com:8000',
]
DOWNLOADER_MIDDLEWARES = {
'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}
Puppeteer (JavaScript): truyền proxy khi khởi động trình duyệt. Để xoay vòng, hãy tạo một nhóm proxy và chọn ngẫu nhiên mỗi khi khởi động lại trình duyệt.
const puppeteer = require('puppeteer');
const proxyList = [
'proxy1.example.com:8000',
'proxy2.example.com:8000'
];
const proxy = proxyList[Math.floor(Math.random() * proxyList.length)];
const browser = await puppeteer.launch({
args: [
`--proxy-server=${proxy}`,
'--no-sandbox'
]
});
// Xác thực proxy
const page = await browser.newPage();
await page.authenticate({
username: 'user',
password: 'pass'
});
Selenium (Python): thiết lập proxy qua tùy chọn Chrome. Đối với xác thực HTTP, hãy sử dụng tiện ích mở rộng hoặc truyền thông tin xác thực trong URL.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://user:pass@proxy.example.com:8000')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.avito.ru/moskva/kvartiry')
Các trình phân tích có sẵn (Octoparse, ParseHub): trong cài đặt nhiệm vụ, tìm phần "Proxy" hoặc "IP Rotation". Thêm danh sách proxy theo định dạng host:port:user:pass hoặc chỉ định URL API cho việc xoay vòng. Bật tùy chọn "Rotate on each request" hoặc "Rotate every N minutes".
Kỹ thuật vượt qua bảo vệ chống bot
Proxy giải quyết vấn đề chặn theo IP, nhưng các hệ thống bảo vệ hiện đại phân tích hàng chục tham số khác. Dưới đây là một bộ biện pháp để vượt qua các hệ thống chống bot.
1. User-Agent và tiêu đề thực tế: sử dụng các phiên bản trình duyệt hiện tại. Đừng đặt User-Agent từ Chrome 90 nếu hiện tại đã có Chrome 120. Kiểm tra sự phù hợp của các tiêu đề: nếu User-Agent nói "Windows", nhưng tiêu đề sec-ch-ua-platform nói "Linux" - bạn sẽ bị phát hiện.
# Bộ tiêu đề tốt cho năm 2024
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': 'ru-RU,ru;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'
}
2. Vượt qua phát hiện trình duyệt headless: Selenium và Puppeteer mặc định có các dấu hiệu tự động hóa (thuộc tính navigator.webdriver = true). Sử dụng các plugin stealth hoặc các bản vá để ẩn đi những dấu hiệu này.
// Plugin Stealth cho Puppeteer
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({headless: true});
3. JavaScript Fingerprinting: các trang web thu thập dấu vân tay của trình duyệt (canvas fingerprint, WebGL, phông chữ, độ phân giải màn hình). Để vượt qua, hãy sử dụng việc ngẫu nhiên hóa các tham số này hoặc các hồ sơ trình duyệt thực tế. Công cụ: FingerprintJS Randomizer, Multilogin (nền tảng với các hồ sơ có sẵn).
4. Xử lý captcha: nếu captcha vẫn xuất hiện, hãy sử dụng các dịch vụ nhận diện: 2Captcha, Anti-Captcha, CapMonster. Chúng có giá từ $1-3 cho 1000 captcha. Tích hợp qua API mất 10-15 phút. Đối với reCAPTCHA v2/v3 có các thư viện có sẵn.
5. Mẫu hành vi: thêm sự ngẫu nhiên vào các hành động. Đừng mở các trang đúng mỗi 5 giây - hãy thay đổi từ 3 đến 8 giây. Đôi khi hãy dừng lại trong 30-60 giây, giả lập việc đọc một trang dài. Trên các diễn đàn, đôi khi hãy chuyển sang các hồ sơ người dùng, chứ không chỉ thu thập các chủ đề.
Quan trọng: Càng phức tạp bảo vệ của trang web, trình phân tích càng phải hoạt động chậm hơn. Đối với Avito, tối ưu là 500-1000 trang mỗi giờ từ một luồng. Nếu cần nhiều hơn - hãy khởi động nhiều trình phân tích song song với các nhóm proxy khác nhau, nhưng mỗi cái phải hoạt động chậm và tự nhiên.
Kết luận
Phân tích diễn đàn và bảng thông báo là một nhiệm vụ đòi hỏi một cách tiếp cận toàn diện. Proxy giải quyết vấn đề chặn theo IP, nhưng để hoạt động ổn định cần có tiêu đề đúng, hành vi thực tế, vượt qua fingerprinting và xoay vòng hợp lý. Việc lựa chọn loại proxy phụ thuộc vào mức độ bảo vệ của trang web mục tiêu: đối với các diễn đàn đơn giản, proxy trung tâm dữ liệu là đủ, trong khi đối với Avito và các nền tảng lớn cần IP cư trú hoặc di động.
Các nguyên tắc chính cho việc phân tích thành công: chậm và tự nhiên, xoay vòng IP thường xuyên, sử dụng trình duyệt headless cho các trang web phức tạp, xử lý captcha khi cần thiết. Đừng chạy theo tốc độ - tốt hơn là thu thập 500 trang mỗi giờ một cách ổn định trong nhiều tháng, hơn là 5000 trang mỗi giờ và bị cấm chỉ sau hai ngày.
Nếu bạn dự định phân tích Avito, YouDo, các diễn đàn lớn hoặc các nền tảng có bảo vệ nghiêm trọng, chúng tôi khuyên bạn nên sử dụng proxy cư trú - chúng cung cấp sự cân bằng tối ưu giữa độ tin cậy và chi phí. Đối với các nền tảng được bảo vệ đặc biệt hoặc thu thập dữ liệu quan trọng, proxy di động với mức độ tin cậy tối đa sẽ là lựa chọn tốt.