
Các crawler và chương trình bot có thể gửi nhiều yêu cầu trong thời gian ngắn, tiêu tốn tài nguyên máy chủ, dẫn đến giảm hiệu suất hoặc thậm chí sập trang web.
Hệ thống chống bot có thể giúp trang web quản lý và hạn chế các yêu cầu này, giữ cho trang web ổn định và sẵn có.
Một số chương trình bot thu thập nội dung trang web để sử dụng trái phép, chẳng hạn như ăn cắp nội dung và thu thập dữ liệu. Hệ thống chống bot có thể giúp bảo vệ dữ liệu và nội dung trên trang web, ngăn chặn truy cập và lạm dụng trái phép.
Các chương trình bot độc hại có thể được sử dụng cho các cuộc tấn công như tấn công từ chối dịch vụ phân tán (DDoS), tấn công brute force để bẻ khóa mật khẩu, v.v. Hệ thống chống bot có thể giúp phát hiện và ngăn chặn các hành vi độc hại này, tăng cường bảo mật tổng thể của trang web.
Một số chương trình bot có thể cố gắng lấy thông tin cá nhân của người dùng như địa chỉ email, thông tin liên hệ, v.v. Hệ thống chống bot có thể giúp bảo vệ quyền riêng tư của người dùng, ngăn chặn việc thu thập và sử dụng trái phép thông tin này.
Khi chương trình bot truy cập trang web quá nhiều, có thể ảnh hưởng đến tốc độ và trải nghiệm của người dùng thật. Bằng cách hạn chế lưu lượng bot, trang web có thể đảm bảo trải nghiệm tốt hơn cho người dùng thật.
Một số chương trình bot giả mạo người dùng nhấp vào quảng cáo để thực hiện gian lận quảng cáo, gây tổn thất cho nhà quảng cáo. Hệ thống chống bot có thể phát hiện và ngăn chặn các lượt nhấp giả mạo này, bảo vệ lợi ích của nhà quảng cáo.
Hệ thống chống bot sử dụng nhiều kỹ thuật và phương pháp khác nhau để phát hiện và ngăn chặn lưu lượng bot. Dưới đây là sáu phương pháp phân tích phổ biến:
Sử dụng các thuật toán học máy để phân tích và phát hiện sự khác biệt giữa hành vi của người dùng thật và chương trình bot. Các mô hình học máy có thể học và thích nghi với các hành vi bot mới.
Trang web có thể kiểm tra các biến JavaScript cụ thể trên trang, những biến này thường liên quan đến việc sử dụng Puppeteer.
Chẳng hạn, họ có thể tìm các tên biến chứa "puppeteer" hoặc các định danh liên quan khác.
for (let key in window) {
if (key.includes('puppeteer') || key.includes('webdriver')) {
// Đã phát hiện Puppeteer
}
}
Puppeteer cũng sẽ sửa đổi hành vi trình duyệt để thực hiện các nhiệm vụ tự động. Do đó, trang web có thể kiểm tra sự tồn tại và giá trị của các thuộc tính như navigator.webdriver để xác định liệu có công cụ tự động nào đang điều khiển trình duyệt hay không.
Thuộc tính này thường được đặt thành true trong Puppeteer.
Muốn nhanh chóng vượt qua hệ thống chống bot? Hãy bắt đầu sử dụng Nstbrowser miễn phí ngay bây giờ! Nstbrowser cung cấp:
Nstbrowser không chỉ sử dụng dấu vân tay trình duyệt thật để truy cập web mà còn mô phỏng hành vi và thói quen của người dùng thật, khiến hệ thống chống bot không thể phát hiện.
Ngoài ra, để đơn giản hóa quá trình thu thập dữ liệu web và tự động hóa, Nstbrowser được trang bị công nghệ mở khóa trang web mạnh mẽ, cung cấp trải nghiệm truy cập web liền mạch.
Như đã đề cập ở trên, phát hiện bot đã trở thành một vấn đề chính đối với các chương trình thu thập dữ liệu web. Nhưng đừng lo! Chúng ta vẫn có thể dễ dàng giải quyết vấn đề này.
Ngoài việc sử dụng Nstbrowser, dưới đây là một số mẹo để tránh bị phát hiện bot khi sử dụng Puppeteer:
Một trong những cách phát hiện chính của các hệ thống chống bot là kiểm tra địa chỉ IP. Máy chủ web có thể suy ra mẫu địa chỉ IP thông qua việc duy trì nhật ký yêu cầu.
Họ sử dụng tường lửa ứng dụng web (WAF) để theo dõi và chặn hoạt động của địa chỉ IP, đồng thời đưa địa chỉ IP nghi ngờ vào danh sách đen. Các yêu cầu lặp đi lặp lại và lập trình sẽ làm giảm uy tín của địa chỉ IP và dẫn đến việc bị chặn vĩnh viễn.
Để tránh bị phát hiện bot, bạn có thể sử dụng luân phiên IP hoặc cấu hình proxy trong Puppeteer:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
args: [
'--proxy-server=http://your_proxy_ip:your_proxy_port',
// Thêm bất kỳ cờ Chrome nào khác bạn cần
],
});
const page = await browser.newPage();
// Bây giờ Puppeteer sẽ sử dụng proxy được chỉ định ở trên
await page.goto('https://example.com');
// Tiếp tục với các nhiệm vụ tự động hóa của bạn
await browser.close();
})();
--proxy-server=http://your_proxy_ip:your_proxy_port chỉ định địa chỉ và cổng của máy chủ proxy.Hãy chắc chắn thay thế your_proxy_ip và your_proxy_port bằng địa chỉ IP và cổng của máy chủ proxy thực.
Trang web thường kiểm tra User-Agent của yêu cầu để xác định yêu cầu đến từ trình duyệt và hệ điều hành nào.
Thông thường, Puppeteer sử dụng User-Agent cố định, điều này làm cho nó dễ bị phát hiện. Bằng cách ngẫu nhiên hóa User-Agent, yêu cầu của bạn sẽ có khả năng được nhận diện là từ những người dùng khác nhau.
Ngoài ra, hệ thống chống bot cũng kiểm tra HTTP header để nhận diện bot. Các header này bao gồm Accept-Language, Accept-Encoding, Cache-Control, v.v.
Các header HTTP mặc định cũng có thể tiết l
ộ rằng yêu cầu đến từ bot. Vì vậy, ngẫu nhiên hóa hoặc cấu hình các header này giúp che giấu sự hiện diện của bot.
Dưới đây là cách làm trong Puppeteer:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Đặt ngẫu nhiên User-Agent
const userAgentList = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15',
// Thêm các User-Agent khác nếu cần
];
const randomUserAgent = userAgentList[Math.floor(Math.random() * userAgentList.length)];
await page.setUserAgent(randomUserAgent);
// Đặt ngẫu nhiên HTTP header
await page.setExtraHTTPHeaders({
'Accept-Language': 'en-US,en;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Cache-Control': 'no-cache',
// Thêm các header khác nếu cần
});
await page.goto('https://example.com');
// Tiếp tục với các nhiệm vụ tự động hóa của bạn
await browser.close();
})();
userAgentList là một mảng chứa các chuỗi User-Agent khác nhau.randomUserAgent chọn ngẫu nhiên một User-Agent từ danh sách.Các trang web có thể kiểm tra dấu vân tay trình duyệt (browser fingerprinting) để nhận diện bot. Dấu vân tay này bao gồm nhiều yếu tố như loại trình duyệt, phiên bản, hệ điều hành, độ phân giải màn hình, font chữ cài đặt, plugin trình duyệt, và nhiều yếu tố khác.
Để tránh bị phát hiện, bạn có thể sử dụng các thư viện như puppeteer-extra-plugin-stealth để ngụy trang dấu vân tay của trình duyệt:
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
// Tiếp tục với các nhiệm vụ tự động hóa của bạn
await browser.close();
})();
puppeteer-extra-plugin-stealth sẽ áp dụng nhiều biện pháp để che giấu sự hiện diện của bot.Các trang web có thể kiểm tra kích thước và vị trí cửa sổ trình duyệt để phát hiện bot. Bot thường chạy ở chế độ ẩn danh hoặc kích thước cửa sổ không bình thường.
Bạn có thể điều chỉnh kích thước và vị trí cửa sổ trình duyệt để mô phỏng hành vi của người dùng thật:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false, // Không ẩn danh để tránh bị phát hiện
args: [
'--window-size=1920,1080', // Đặt kích thước cửa sổ
'--start-maximized' // Khởi động trình duyệt ở chế độ toàn màn hình
]
});
const page = await browser.newPage();
await page.setViewport({ width: 1920, height: 1080 });
await page.goto('https://example.com');
// Tiếp tục với các nhiệm vụ tự động hóa của bạn
await browser.close();
})();
--window-size=1920,1080 chỉ định kích thước cửa sổ trình duyệt.--start-maximized khởi động trình duyệt ở chế độ toàn màn hình.Nếu bạn muốn lấy dữ liệu từ các nền tảng truyền thông xã hội hoặc các trang web yêu cầu xác thực khác, bạn sẽ thường xuyên phải đăng nhập lặp đi lặp lại.
Các yêu cầu xác thực lặp đi lặp lại này sẽ kích hoạt cảnh báo, tài khoản có thể bị khóa hoặc phải đối mặt với CAPTCHA hoặc thách thức xác thực JavaScript.
Chúng ta có thể tránh điều này bằng cách sử dụng Cookie. Sau khi đăng nhập một lần, chúng ta có thể thu thập Cookie phiên đăng nhập để sử dụng lại trong tương lai.
Khi thu thập dữ liệu web, bạn chắc chắn sẽ gặp vấn đề nhận diện CAPTCHA. Lúc này, bạn cần sử dụng dịch vụ giải mã CAPTCHA.
Thường thì, các dịch vụ này sử dụng người dùng thực để giải mã CAPTCHA, giảm khả năng bị phát hiện là bot.
Điều này có thể đảm bảo việc vượt qua nhận diện bot và giúp giảm chi phí vận hành bot tổng thể.
Nstbrowser dễ dàng vượt qua nhận diện bot, được trang bị trình giải mã CAPTCHA mạnh mẽ.
Sử dụng miễn phí ngay!
Bạn có suy nghĩ hoặc câu hỏi nào về việc thu thập dữ liệu web và Browseless không?
Hãy đến xem những gì các nhà phát triển khác đang chia sẻ trên Discord và Telegram!
Người dùng thật không thể gửi 500 yêu cầu trong một phút!
Người dùng thật cũng không thể có thói quen và chương trình duyệt web cố định!
Do đó, để tránh bị hệ thống chống bot dễ dàng phát hiện, chúng ta cần thiết lập trì hoãn nhập liệu và một số hành động ngẫu nhiên khi sử dụng Puppeteer. Điều này có thể mô phỏng hành vi người dùng thật, từ đó giảm khả năng bị phát hiện.
await page.type('input[name=username]', 'myUsername', { delay: 100 });
await page.type('input[name=password]', 'myPassword', { delay: 100 });
await page.mouse.move(100, 100);
await page.mouse.click(100, 100);
Khi sử dụng Puppeteer để thực hiện các nhiệm vụ tự động hóa, đôi khi bạn có thể tận dụng các tiện ích trình duyệt để giúp vượt qua một số nhận diện bot.
Các tiện ích này có thể thay đổi hành vi của trình duyệt, làm cho nó trông giống như được thao tác bởi người dùng thật hơn.
Tải tiện ích cục bộ:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false, // không ẩn danh
args: [
`--disable-extensions-except=/path/to/extension/`, // Tải tiện ích với đường dẫn chỉ định
`--load-extension=/path/to/extension/`
]
});
const page = await browser.newPage();
await page.goto('https://example.com');
// Tiếp tục thực hiện mã của bạn
})();
Thay đổi đường dẫn tiện ích Chrome mặc định
Puppeteer mặc định sử dụng một thư mục tiện ích trống để mô phỏng Chrome. Bạn có thể chỉ định một thư mục dữ liệu người dùng tùy chỉnh bằng cách thiết lập userDataDir và tải trước các tiện ích cần thiết trong đó.
Trong bài viết này, chúng tôi đã thảo luận:
Giải pháp RPA của Nstbrowser là một trong những lựa chọn tốt nhất để tránh nhận diện bot, bạn có thể cấu hình và sử dụng nó hoàn toàn miễn phí.