Боты и сканеры могут делать большое количество запросов за короткий период времени, потребляя ресурсы сервера и ухудшая производительность сайта или даже приводя его к отключению.
Системы антиботов помогают веб-сайтам управлять и ограничивать такие запросы, поддерживая стабильность и доступность сайта.
Некоторые программы-боты сканируют контент на веб-сайтах для несанкционированного использования, например, кражи контента и извлечения данных. Антиботы помогают защитить данные и контент от несанкционированного доступа и использования.
Злонамеренные боты могут использоваться для различных атак, таких как распределенные атаки отказа в обслуживании (DDoS), подбор паролей и другие. Система антиботов может выявлять и блокировать такие вредоносные действия, улучшая общую безопасность сайта.
Некоторые боты могут пытаться получить личную информацию пользователей, такую как адреса электронной почты, контактные данные и т.д. Системы антиботов помогают защитить конфиденциальность пользователей и предотвратить несанкционированный сбор и использование этой информации.
Когда боты посещают сайт в больших количествах, это может повлиять на скорость и удобство использования для обычных пользователей. Ограничивая трафик ботов, веб-сайты могут обеспечить лучший опыт для реальных пользователей.
Некоторые боты имитируют действия пользователей, кликая по рекламе для совершения рекламного мошенничества, что приводит к убыткам для рекламодателей. Антиботы могут выявлять и блокировать такие ложные клики, защищая интересы рекламодателей.
Антиботы выявляют и блокируют трафик ботов с помощью различных методов и техник. Здесь рассмотрены 6 основных методов анализа:
Использование алгоритмов машинного обучения для анализа и выявления различий в поведении между обычными пользователями и ботами. Модели машинного обучения могут непрерывно обучаться и адаптироваться к новым поведениям ботов.
Сайты могут проверять определенные переменные JavaScript на странице, которые обычно связаны с использованием Puppeteer.
Например, они могут искать имена переменных, содержащие "puppeteer" или другие релевантные идентификаторы:
for (let key in window) {
if (key.includes('puppeteer') || key.includes('webdriver')) {
// Puppeteer обнаружен
}
}
Puppeteer также изменяет поведение браузера для автоматизации задач. В результате сайты могут проверять наличие и значение свойства navigator.webdriver
, или других флагов автоматизации, чтобы определить, управляется ли браузер инструментом автоматизации.
Это свойство обычно установлено в true
в Puppeteer.
Хотите быстро избежать обнаружения ботов? Начните использовать Nstbrowser бесплатно прямо сейчас!
Nstbrowser предлагает:
Nstbrowser не только использует реальные цифровые отпечатки браузера для доступа в интернет, но и имитирует поведение и привычки реальных пользователей, делая его неуловимым для антиботов.
Кроме того, чтобы упростить веб-скрапинг и автоматизацию, Nstbrowser оснащен мощной технологией обхода блокировок сайтов, обеспечивающей беспрепятственный доступ к интернету.
Как упоминалось ранее, обнаружение ботов стало большой проблемой для веб-сканеров. Но не волнуйтесь! Мы все еще можем легко решить эту проблему.
Помимо использования Nstbrowser, вот несколько техник, которые вы можете использовать, чтобы избежать обнаружения ботов с Puppeteer:
Основной способ обнаружения большинства антиботов — это проверка IP-адреса. Веб-серверы могут выявлять закономерности, отслеживая каждый запрос, поступающий с одного и того же IP-адреса.
Они используют Веб-аппликационные межсетевые экраны (WAF) для отслеживания и блокировки активности IP-адресов и заносят подозрительные IP-адреса в черный список. Повторяющиеся и запланированные запросы к серверу могут повредить репутацию IP-адреса и привести к его постоянному блокированию.
Чтобы избежать обнаружения ботов, вы можете настроить прокси, используя ротацию IP или Puppeteer:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
args: [
'--proxy-server=http://your_proxy_ip:your_proxy_port',
// Добавьте любые другие флаги Chrome, которые вам нужны
],
});
const page = await browser.newPage();
// Теперь Puppeteer будет использовать указанный выше прокси
await page.goto('https://example.com');
// Продолжайте выполнение ваших задач автоматизации
await browser.close();
})();
--proxy-server=http://your_proxy_ip:your_proxy_port
указывает адрес и порт сервера прокси.Убедитесь, что заменили your_proxy_ip
и your_proxy_port
на адрес и номер порта используемого вами сервера прокси.
Сайты обычно проверяют User-Agent запроса, чтобы определить, из какого браузера и операционной системы поступает запрос.
В общем случае Puppeteer использует фиксированный User-Agent, что делает его легкой мишенью для обнаружения. Рандомизация User-Agent повысит вероятность признания запросов, как идущих от разных реальных пользователей.
Кроме того, антиботы также проверяют HTTP-заголовки для идентификации ботов. Это включает такие заголовки, как Accept-Language
, Accept-Encoding
, Cache-Control
и другие.
Предустановленные HTTP-заголовки также могут выдать использование инструментов автоматизации. Рандомизация и настройка общих HTTP-заголовков поможет сделать ваши запросы аутентичными.
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const randomUseragent = require('random-useragent'); // Библиотека для случайных User-Agent
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
// Определите общие HTTP-заголовки
const commonHeaders = {
'Accept-Language': 'ru-RU,
ru;q=0.9,en-US;q=0.8,en;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'Cache-Control': 'no-cache',
};
// Функция для настройки случайных заголовков
const setRandomHeaders = async (page) => {
const userAgent = randomUseragent.getRandom(); // Получите случайный User-Agent
await page.setUserAgent(userAgent);
await page.setExtraHTTPHeaders(commonHeaders);
};
await setRandomHeaders(page);
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => false,
});
});
await page.goto('https://example.com', {
waitUntil: 'networkidle2',
});
})();
navigator.webdriver
По умолчанию Puppeteer устанавливает свойство navigator.webdriver
в значение true
, что выдает использование автоматизации. Отключение или модификация этого свойства помогает уменьшить вероятность обнаружения.
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', { get: () => false });
});
Использование плагина puppeteer-extra-plugin-stealth
может помочь Puppeteer избежать обнаружения как бота. Этот плагин модифицирует поведение браузера, чтобы он выглядел как браузер реального пользователя.
Сначала нужно установить плагины puppeteer-extra
и puppeteer-extra-plugin-stealth
:
npm install puppeteer-extra puppeteer-extra-plugin-stealth
Затем можно использовать эти плагины в вашем коде для запуска Puppeteer:
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({ headless: true });
Повторные входы в систему всегда необходимы, если вы хотите извлечь данные из социальных сетей или других сайтов, требующих аутентификации.
Эта повторная аутентификация может вызвать предупреждение, и учетная запись может быть заблокирована или столкнуться с CAPTCHA или другими средствами проверки.
Чтобы избежать этого, можно использовать cookies. После входа в систему один раз, вы можете сохранить cookie сессии и повторно использовать ее в будущем.
Во время веб-сканирования вы неизбежно столкнетесь с CAPTCHA. Вы можете воспользоваться службами решения CAPTCHA, которые используют реальных пользователей для решения CAPTCHA, что снижает вероятность быть обнаруженным как бот.
Это может помочь избежать обнаружения и снизить общую стоимость запуска бота.
Nstbrowser легко обходит обнаружение ботов с помощью мощного решателя CAPTCHA.
Начните использовать бесплатно сейчас!
Есть ли у вас хорошие идеи или вопросы о веб-скрейпинге и Browserless?
Посмотрите чем делятся другие разработчики в Discord и Telegram!
Реальные пользователи не могут делать 500 запросов за минуту!
Реальные пользователи также не могут иметь фиксированные и запланированные привычки просмотра!
Поэтому, чтобы избежать легкого обнаружения антиботами, необходимо установить задержку ввода и операции рандомизации для программы автоматизации при использовании Puppeteer. Это имитирует реального пользователя, снижая риск обнаружения.
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);
При выполнении задач автоматизации с Puppeteer, иногда полезно использовать расширения браузера, чтобы помочь избежать некоторых методов обнаружения ботов. Эти расширения могут модифицировать поведение браузера, чтобы он выглядел как браузер, используемый реальным пользователем.
Загрузка локальных расширений:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false, // режим без headless
args: [
`--disable-extensions-except=/path/to/extension/`, // Загрузка расширений с указанными путями
`--load-extension=/path/to/extension/`
]
});
const page = await browser.newPage();
await page.goto('https://example.com');
// Продолжайте выполнение вашего кода
})();
Изменение пути по умолчанию для расширений Chrome
Puppeteer по умолчанию использует пустой каталог расширений для эмуляции Chrome. Вы можете указать пользовательский каталог данных, настроив userDataDir
и предзагрузив в него необходимые расширения.
В этой статье мы обсудили:
RPA-решение от Nstbrowser является одним из лучших доступных вариантов для избегания обнаружения ботов, и вы можете настроить его и использовать совершенно бесплатно.