Selenium, как скрыть браузер
Обновлено: 21.11.2024
Как заставить Selenium не открывать окно браузера в Python?
Если вы используете веб-драйвер Selenium с Python, вы можете использовать PyVirtualDisplay, оболочку Python для Xvfb и Xephyr. В Chrome 57 есть возможность передавать флаг –headless, который делает окно невидимым. Этот флаг отличается от –no-startup-window, поскольку последний не запускает окно.
Как сделать так, чтобы Selenium не показывал мой браузер?
Как скрыть окно браузера селена с помощью «безголового»
- Установите xvfb, если он еще не установлен в вашей системе. Копировать. sudo apt-get установить xvfb.
- Добавьте драгоценный камень без головы в свой Gemfile. group :cucumber do gem ‘безголовый’ end.
- Перейдите к файлу functions/support/env.rb и включите следующий фрагмент: Копировать.
Может ли селен работать в фоновом режиме?
Да, вы можете запустить веб-драйвер Selenium в фоновом режиме. Эта функция поддерживается в последней версии Selenium 3. Вы можете запускать браузеры Firefox и Chrome в автономном режиме. Для Chrome вы должны использовать параметры Chrome, тогда как для Firefox вы должны использовать параметры Firefox.
Как селен Python работает с Chrome?
Как запустить автоматизированный тест с помощью Selenium и Python?
- Сначала импортируйте классы webdriver и Keys из Selenium.
- Затем создайте экземпляр Chrome с путем к драйверу, который вы загрузили с веб-сайтов соответствующего браузера.
- Далее используйте .
- После успешной загрузки страницы вы можете использовать .
Как запустить браузер с помощью Selenium?
Запуск браузера Chrome
Как исправить, что WebDriver не может быть преобразован в тип?
chrome Webdriver не может быть разрешен к ошибке типа eclipse и java:-
- Создайте новый проект Java >класс >Создайте имя класса.
- Щелкните правой кнопкой мыши Проект > Свойство > Путь сборки > Библиотеки.
- Добавить внешние файлы JAR в Classpath для загрузки из клиента selenium и языковой привязки веб-драйвера.
- Применить и закрыть.
Как справиться с всплывающими окнами для тестирования?
Как обрабатывать всплывающие окна в Selenium?
- Водитель. получитьокнохандлес(); Чтобы обрабатывать открытые окна веб-драйвером Selenium, вы можете использовать Driver. getWindowHandles() для переключения между окнами.
- Водитель. получитьокнохэндл(); Когда веб-страница загружена, вы можете управлять главным окном с помощью драйвера. получитьокнохандле().
Оглавление
Как заставить Selenium не открывать окно браузера в Python?
Если вы используете веб-драйвер Selenium с Python, вы можете использовать PyVirtualDisplay, оболочку Python для Xvfb и Xephyr. В Chrome 57 есть возможность передавать флаг –headless, который делает окно невидимым. Этот флаг отличается от –no-startup-window, поскольку последний не запускает окно.
Как запустить браузер Python в Selenium?
Как запустить автоматизированный тест с помощью Selenium и Python?
- Сначала импортируйте классы webdriver и Keys из Selenium.
- Затем создайте экземпляр Chrome с путем к драйверу, который вы загрузили с веб-сайтов соответствующего браузера.
- Далее используйте .
- После успешной загрузки страницы вы можете использовать .
Как открыть окно браузера в Selenium?
Мы можем открыть новое окно в браузере с веб-драйвером Selenium. Есть несколько способов добиться этого. Selenium может выполнять команды в Javascript с помощью метода execute_script(), который является одним из способов открытия нового окна. Тогда мы будем использовать switch_to.
Как запустить Selenium в автоматическом режиме?
Как запустить Selenium Chrome WebDriver в автоматическом режиме?
- Параметры ChromeOptions = новые параметры ChromeOptions();
- варианты. ДобавитьАргумент("-молчание");
- Драйвер IWebDriver = новый ChromeDriver(параметры);
Как запустить проверку фона Selenium?
Да, вы можете запустить веб-драйвер Selenium в фоновом режиме. Эта функция поддерживается в последней версии Selenium 3. Вы можете запускать браузеры Firefox и Chrome в автономном режиме. Для Chrome вы должны использовать параметры Chrome, тогда как для Firefox вы должны использовать параметры Firefox.
Открывает ли Selenium браузер?
Как селен Python работает с Chrome?
Через Selenium нам нужно вызвать этот исполняемый файл, который отвечает за вызов фактического браузера Chrome. Затем нам нужно загрузить версию драйвера Chrome в соответствии с версией нашего браузера. Путь к файлу chromedriver.exe необходимо добавить в исполняемый файл.
Как использовать селен в Chrome?
Как настроить ChromeDriver?
- Шаг 1. Сначала загрузите ChromeDriver.
- Шаг 2. После загрузки ZIP-файла для операционной системы разархивируйте его, чтобы получить исполняемый файл chromedriver.exe.
- Шаг 3. Теперь скопируйте путь, по которому сохранен файл ChromeDriver, чтобы задать системные свойства в переменных среды.
Можно ли скрыть Selenium?
Мы можем скрыть окно Firefox в веб-драйвере Selenium. Это можно сделать, сделав браузер безголовым. Мы добьемся этого с помощью класса FirefoxOptions. Мы должны сделать параметры настройки браузера.
У меня есть набор тестов Selenium, который запускает множество тестов, и при каждом новом тесте он открывает окно браузера поверх любых других открытых окон. Очень раздражает при работе в местных условиях. Есть ли способ заставить Selenium или ОС (Mac) открывать окна в фоновом режиме?
18 ответов 18
Если вы используете веб-драйвер Selenium с Python, вы можете использовать PyVirtualDisplay, оболочку Python для Xvfb и Xephyr.
PyVirtualDisplay нуждается в Xvfb в качестве зависимости. В Ubuntu сначала установите Xvfb:
Затем установите PyVirtualDisplay из PyPI:
Пример скрипта Selenium на Python в автономном режиме с PyVirtualDisplay:
ИЗМЕНИТЬ
Первоначальный ответ был опубликован в 2014 году, а сейчас мы находимся на пороге 2018 года. Как и все остальное, браузеры также продвинулись вперед. Теперь у Chrome есть полностью безголовая версия, которая устраняет необходимость использования каких-либо сторонних библиотек для скрытия окна пользовательского интерфейса. Пример кода выглядит следующим образом:
Есть несколько способов, но это не просто "задать значение конфигурации". Если вы не инвестируете в безголовый браузер, который не всем подходит, это немного хак:
Вы можете "предположительно" передать некоторые параметры в Chrome, а именно: --no-startup-window
Обратите внимание, что для некоторых браузеров, особенно для Internet Explorer, тесты могут пострадать, если он не будет работать в фокусе.
Вы также можете немного поэкспериментировать с AutoIt, чтобы скрыть окно после его открытия.
действительно, используйте "--headless" вместо "--no-startup-window", я подтвердил, что это работает на Mac и Chrome v80
В Chrome 57 есть возможность передавать флаг --headless, который делает окно невидимым.
Этот флаг отличается от --no-startup-window, поскольку последний не запускает окно. Как сказано на этой странице, он используется для размещения фоновых приложений.
Код Java для передачи флага веб-драйверу Selenium (ChromeDriver):
Чтобы работать без браузера, вы можете запустить его в безголовом режиме.
Я покажу вам один пример на Python, который у меня работает прямо сейчас
Я использовал этот код для Firefox в Windows и получил ответ (ссылка здесь):
Но я не тестировал его для других браузеров.
Начиная с Chrome 57, у вас есть безголовый аргумент:
Автономный режим Chrome работает на 30,97 % лучше, чем версия с пользовательским интерфейсом. Другой безголовый драйвер, PhantomJS, работает на 34,92 % лучше, чем безголовый режим Chrome.
PhantomJSDriver
Безголовый режим Mozilla Firefox работает на 3,68% лучше, чем версия с пользовательским интерфейсом. Это разочарование, поскольку безголовый режим Chrome обеспечивает > 30% лучшее время, чем режим пользовательского интерфейса. Другой безголовый драйвер PhantomJS работает на 34,92% лучше, чем безголовый режим Chrome. Удивительно, но браузер Edge превосходит их всех.
Это доступно в Firefox 57+
Безголовый режим Mozilla Firefox работает на 3,68% лучше, чем версия с пользовательским интерфейсом. Это разочарование, поскольку безголовый режим Chrome обеспечивает > 30% лучшее время, чем режим пользовательского интерфейса. Другой безголовый драйвер PhantomJS работает на 34,92% лучше, чем безголовый режим Chrome. Удивительно, но браузер Edge превосходит их всех.
Может ли Selenium Webdriver автоматически открывать окна браузера в фоновом режиме? (6)
В Chrome 57 есть возможность передавать флаг --headless, который делает окно невидимым.
Этот флаг отличается от --no-startup-window, поскольку последний не запускает окно. Как сказано на этой странице, он используется для размещения фоновых приложений.
Код Java для передачи флага веб-драйверу Selenium (ChromeDriver):
У меня есть набор тестов Selenium, который запускает множество тестов, и при каждом новом тесте он открывает окно браузера поверх любых других открытых окон. Очень раздражает при работе в местных условиях. Есть ли способ указать селену или ОС (MAC) открывать окна в фоновом режиме?
Чтобы работать без браузера, вы можете запустить его в безголовом режиме.
Я покажу вам один пример на Python, который у меня работает прямо сейчас
Я предлагаю использовать Phantom Js для получения дополнительной информации, необходимой для посещения официального сайта Phantom
Насколько мне известно, PhantomJS работает только с Firefox..
после загрузки PhantomJs.exe вам необходимо импортировать его в свой проект, как вы можете видеть на рисунке ниже. Phantomjs находится внутри common>>Library>>phantomjs.exe
Теперь все, что вам нужно сделать в коде Selenium, это изменить строку
Что-то вроде
Путь к фантомам может быть другим. меняй как хочешь :)
Вот и все, мне помогло. и, безусловно, он будет работать на вас, Ура
Если вы используете веб-драйвер Selenium с Python, вы можете использовать PyVirtualDisplay, оболочку Python для Xvfb и Xephyr.
PyVirtualDisplay нуждается в Xvfb в качестве зависимости. В Ubuntu сначала установите Xvfb:
затем установите PyVirtualDisplay из Pypi:
Пример скрипта Selenium на Python в автономном режиме с PyVirtualDisplay:
EDIT Первоначальный ответ был опубликован в 2014 году, и сейчас мы находимся на пороге 2018 года. Как и все остальное, браузеры также продвинулись вперед. Теперь у Chrome есть полностью безголовая версия, которая устраняет необходимость использования каких-либо сторонних библиотек для скрытия окна пользовательского интерфейса. Пример кода выглядит следующим образом:
В Windows вы можете использовать win32gui:
Однако есть одна проблема с этим решением - использование метода send_keys приводит к отображению окна. Вы можете справиться с этим, используя javascript, который не показывает окно:
Начиная с Chrome 57, у вас есть безголовый аргумент:
Автономный режим Chrome работает на 30,97 % лучше, чем версия с пользовательским интерфейсом. Другой безголовый драйвер, PhantomJS, работает на 34,92 % лучше, чем безголовый режим Chrome.
PhantomJSDriver
Безголовый режим Mozilla Firefox работает на 3,68% лучше, чем версия с пользовательским интерфейсом. Это разочарование, поскольку безголовый режим Chrome обеспечивает > 30% лучшее время, чем режим пользовательского интерфейса. Другой безголовый драйвер PhantomJS работает на 34,92% лучше, чем безголовый режим Chrome. Удивительно, но браузер Edge превосходит их всех.
Это доступно в Firefox 57+
Безголовый режим Mozilla Firefox работает на 3,68% лучше, чем версия с пользовательским интерфейсом. Это разочарование, поскольку безголовый режим Chrome обеспечивает > 30% лучшее время, чем режим пользовательского интерфейса. Другой безголовый драйвер PhantomJS работает на 34,92% лучше, чем безголовый режим Chrome. Удивительно, но браузер Edge превосходит их всех.
Многие сайты будут блокировать ваш веб-скрапинг/автоматизацию с помощью Captchas, FingerprintJS, Imperva или их собственных подобных инструментов, потому что это создает нежелательную нагрузку на серверы сайта и повышает стоимость обслуживания сайта, не возвращая никакой ценности. . Компания хочет использовать свои ресурсы для обслуживания клиентов, а не людей, которым нужны только их данные.
Вот почему они отслеживают нерегулярные действия в Интернете, чтобы заблокировать ваши усилия по очистке веб-страниц. Но вы же так просто не сдаетесь?😉 Вот почему я составил список из 10 вещей, которые вы можете сделать, чтобы скрыть свою автоматизацию с помощью Selenium и сделать ее незаметной, а также выглядеть как настоящий человек.
1. Снятие флага Navigator.Webdriver
Флажок Navigator.Webdriver указывает, управляется ли браузер средствами автоматизации, такими как Selenium, а также является источником панели уведомлений "Chrome контролируется программным обеспечением для автоматизированного тестирования", которую вы получаете при использовании Селен с Chrome.
Он предназначен для использования веб-сайтами в качестве стандартного способа понять, что используются инструменты автоматизации. Затем веб-сайт может запускать код, альтернативный коду, который будет выполняться для обычного пользователя, например блокирующие скрипты.
Флаг установлен в значение true, пока Selenium управляет браузером. Но с помощью основных аналитических инструментов каждый веб-сайт увидит это и поймет, что вы используете автоматический браузер.
Обычно для него устанавливается значение true, если в Chrome включены --enable-automation , флаг --headless или --remote-debugging-port.
Для Firefox необходимо установить флаг marionette.enabled или --marionette.
Инструмент аналитики на веб-сайте обычно выглядит примерно так:
Но так как проверить наличие логического значения очень просто, его также очень легко удалить во время выполнения, используя следующий код Python, который работает для Chrome WebDriver и Firefox/Gecko WebDriver:
Или еще лучше, но работает только при использовании Google Chrome. Снятие флага еще до его установки. Таким образом, даже Chrome не узнает, что вы используете Selenium:
2. Обфускация JavaScript драйвера браузера EXE
Несмотря на то, что я сказал EXE, это также относится и к вам, если вы используете Linux или Mac 🙃.
На момент написания этот пункт относится к вам только в том случае, если вы используете ChromeDriver.
Если вы откроете свой ChromeDriver с помощью текстового редактора и перейдете примерно к строке 4000+, вы найдете код JavaScript, который будет выполняться при использовании Selenium.
Вот почему программное обеспечение для обнаружения ботов, такое как FingerprintJS, Imperva (ранее Distil Networks) или Google Captcha, будет искать этот код JavaScript.
Но, к счастью, вы можете просто отредактировать этот JavaScript прямо в исполняемом файле — просто замените имена переменных на имена ОДНОЙ ДЛИНЫ (иначе Selenium просто выйдет из строя).
Если вы используете ChromeDriver, наиболее важной переменной, вероятно, будет $cdc_asdjflasutopfhvcZLmcfl_ . Поэтому замените всю секцию сразу после $ другой строкой такой же длины. Это переменная, которую ищет большинство детекторов. После этого перед вами уже широко открыты многие двери.
Более конкретно:
- Откройте файл chromedriver.exe в текстовом редакторе. Я бы порекомендовал Notepad++, с помощью которого вы можете просто щелкнуть правой кнопкой мыши файл .exe и выбрать: Редактировать с помощью Notepad++
- Используя Ctrl+F, найдите $cdc_asdjflasutopfhvcZLmcfl_ . В моем текущем драйвере Chrome он находится в строке 24816, но, вероятно, в вашем он находится в другой строке.
- Замените все после $ на что-то случайное той же длины. Например. $btlhsaxJbTXmBATUDvTRhvcZLm_ (Просто нажмите немного на клавиатуру и убедитесь, что новая строка имеет ту же длину)
- Сохраните это, нажав Ctrl+S. Отныне используйте этот исполняемый файл в качестве драйвера.
3. Изменение разрешения, пользовательского агента и других деталей
Один из способов, с помощью которого веб-сайт может вас обнаружить, — это создание отпечатка пальца браузера с использованием разрешения вашего монитора, пользовательского агента и других данных, а затем проверка того, не делаете ли вы ненормальное количество запросов, которые настоящий человек никогда не мог бы сделать или применить. другие эвристики, чтобы определить, являетесь ли вы ботом.
Поэтому, используя следующий код Python, вы можете легко изменить их:
Ваша цель должна состоять в том, чтобы быть как можно более средним, потому что чем более вы уникальны, тем легче вас отследить. Например: использование экрана с высоким разрешением, но использование устаревшего User-Agent делает вас довольно уникальным.
Зачем пытаться быть средним? Скажем, например, вы делаете 1000 запросов за 1 минуту с вашим уникальным разрешением/настройкой пользовательского агента. Это будет помечено довольно быстро, потому что ОДИН человек никогда не сможет посетить столько страниц за это время.
Но если вашу настройку разрешения/пользовательского агента используют 1000 человек, каждый из которых делает 1 запрос в 1 минуту, ваши дополнительные 1000 запросов будут означать, что каждый пользователь в среднем делает 2 запроса в минуту. Это реально для человека.
Но при изменении разрешения монитора, пользовательского агента и других деталей не следует забывать о согласованности. Если вы используете ChromeDriver, вы должны использовать пользовательский агент Chrome, потому что сайты могут узнать о реальном браузере, который вы используете, выполняя вызовы JavaScript, подобные этому
Следующие браузеры будут возвращать следующие значения:
- Firefox: 37
- Сафари: 37
- Chrome: 33
- Internet Explorer: 39
Итак, если браузер притворяется Firefox в своем User-Agent, но тест возвращает 33, вы, вероятно, будете отмечены как бот.
Та же идея применима и к согласованности ОС. Используя следующий код, веб-сайт может узнать, какую ОС вы действительно используете:
И это значения, возвращаемые для каждой ОС:
- Windows: Win32 или Win64
- Android: Linux armv71 или Linux i686
- iOS: iPhone или iPad
- FreeBSD: FreeBSD amd64 или FreeBSD i386
- MacOS: MacIntel
- Linux: Linux i686 или Linux x86_64
4. Реалистичный поток страниц и избежание ловушек
Пример: реальный пользователь должен сначала посетить домашнюю страницу, прежде чем нажимать кнопку "Войти", потому что обычно он не знает URL-адрес страницы входа навскидку.
Поэтому, чтобы избежать обнаружения, заставьте своего бота следовать шагам, которые должны были бы выполнить вы. Это замедлит работу вашего бота, но это лучше, чем быть заблокированным 😶.
Кроме того, могут существовать такие ловушки, как невидимые ссылки. Например, если вы посещаете страницы, которые не разрешены в файле robots.txt, сайт может пометить вас как бота, потому что часто это страницы, на которые никогда не ссылаются, поэтому вам придется посетить их напрямую, используя URL-адрес.
5. Изменение вашего IP-адреса с помощью прокси-сервера
Лучший способ очистить тысячи страниц — это распространить их на несколько компьютеров с разными данными.
Но поскольку другие машины слишком дороги, почему бы не изменить все идентифицирующие данные, как я говорил в пункте 3 «Изменение разрешения, агента пользователя и других сведений», а также ваш IP-адрес.
Пример: как я уже сказал. 1000 запросов – это слишком много для одного человека.
Но 1000 запросов, разделенных между 100 «людьми» (выдуманными удостоверениями с разными IP-адресами и отпечатками пальцев), будут составлять только 10 запросов на пользователя.
Чтобы изменить свой IP-адрес в Selenium с помощью прокси-сервера, вы можете использовать следующий код Python:
В Интернете есть множество бесплатных прокси-серверов, но они, вероятно, также используются множеством других ботов, которые уже были помечены, поэтому теперь IP-адрес также помечен.
Это известно как репутация IP. Репутация IP-адреса влияет на историю IP-адресов, количество посещений с IP-адреса или наличие известного общедоступного прокси-сервера/прокси-сервера Tor.
Вот почему приватный прокси, который вы сделали сами или купили приватный прокси, может пригодиться, но это определенно не обязательное требование.
6. Использование случайных задержек
Это своего рода часть реалистичного потока страниц, но я выделил ее отдельно, потому что она также позволяет не запрашивать слишком много данных.
Во-первых, давайте посмотрим на это с точки зрения потока страниц. Люди и боты ведут себя по-разному. Вы можете себе представить, что бот обычно быстрее человека. Ни один реальный пользователь не прочитает новостную статью за 5 секунд. Вот почему веб-сайты отслеживают, сколько минут вы проводите на сайте, сколько страниц вы посетили и т. д.
Поэтому просто добавьте несколько задержек между посещениями Страниц. Но также не заставляйте его ждать одинаковое количество времени на каждой странице, потому что это также может быть замечено. Просто позвольте своему боту ждать СЛУЧАЙНОЕ количество времени на сайте.
Забудем об этом, давайте посмотрим на это с точки зрения "запрос слишком большого объема данных". Как я уже говорил в третьем пункте. Ни один реальный пользователь никогда не запросит 1000 сайтов за 1 минуту.
Так что просто ограничьте скорость своего бота, разрешив ему только реалистичное, но достаточно быстрое (чтобы вам не пришлось ждать, пока Солнце взорвется😉) количество запросов, которые он может сделать.
7. Не используйте безголовый браузер
Кто использует безголовый браузер? Определенно не человек. Вот почему Сайты начали проверять, является ли браузер безголовым или нет.
В зависимости от того, работает браузер в автономном режиме или нет, различные функции могут быть доступны или недоступны. Именно это позволяет определить, работает ли браузер в автономном режиме или нет.
Большинство тестов предназначено для Chrome, поскольку в настоящее время большинство ботов используют Chrome. Эти тесты призваны определить, работают ли функции так, как они должны работать в обычном Chrome, или они ведут себя как в Chrome без дисплея.
Один пример можно увидеть здесь, проверив поведение API разрешения:
В Headless Chrome тест возвращает бессмысленные значения. С одной стороны написано, что при использовании Notification.permission отказано в разрешении на отправку уведомлений. С другой стороны, он возвращает подсказку при использовании navigator.permissions.query .
8. Капчи
Капчи (или полностью автоматизированные общедоступные тесты Тьюринга, чтобы отличить компьютеры от людей) — одна из наиболее сложных для взлома мер защиты от парсинга. К счастью, капчи невероятно раздражают реальных пользователей.
Это означает, что на многих сайтах они даже не используются, а при использовании обычно ограничиваются некоторыми формами.
Но что, если они встанут у вас на пути?
Первый шаг для обхода проверки по капче – это выполнить все остальные шаги, перечисленные здесь, и просто нажать кнопку. Но если это не сработает и ваш "показатель человечности" будет слишком низким, вы столкнетесь с проблемой решения всех этих проблем. слишком знакомые пазлы с картинками
При условии, что используется Google reCAPTCHA V2, оригинальная Captcha или аналогичный вариант, не созданный Google. С Google reCAPTCHA V3 эти головоломки с картинками больше не существуют, и на основе взаимодействий, которые совершает пользователь, рассчитывается только оценка от 0,1 до 0,9. Чтобы обойти reCAPTCHA V3, ваше «единственное» решение — обратить внимание на другие пункты, перечисленные здесь, или использовать ферму капчи, которая поддерживает reCAPTCHA V3. Вы можете проверить свой показатель reCAPTCHA здесь.
Разгадывать капчи можно либо с помощью инструментов искусственного интеллекта (компьютерное зрение/преобразование речи в текст), либо с помощью ферм, где реальным людям платят за разгадывание капчи за вас. Эти сервисы доступны даже для последней версии Google reCAPTCHA для изображений и просто требуют дополнительных затрат.
Фермы капчи
Фермы CAPTCHA в основном берут тест CAPTCHA, с которым вы сталкиваетесь, отправляют его реальному человеку, который затем завершает его, а затем отправляет вам сгенерированный человеком правильный ответ, с помощью которого вы теперь можете подтвердить свою «человечность».< /p>
В следующем примере я буду использовать 2captcha для решения Google reCAPTCHA V2, но здесь вы также найдете руководство по решению reCAPTCHA V3, а здесь руководство по обычным капчам старой школы (Кстати, я m вообще не связан с 2captcha, у них просто есть туториалы для множества разных стилей captcha).
1. Получить ключ сайта по капче
Ключ сайта – это эксклюзивный ключ, который получает каждый сайт при внедрении reCAPTCHA V2. Вы будете использовать этот ключ сайта, чтобы отправить его на 2captcha. При поиске самого элемента капчи вы найдете ключ сайта, например:
Получите этот ключ из элемента с помощью BeautifulSoup4 или аналогичного анализатора HTML.
2. Отправить ключ сайта на 2Captcha
Теперь вам нужно отправить ключ сайта, который вы получили на шаге 1, ваш API-ключ 2Captcha, который вы получили при регистрации, и URL-адрес сайта, на котором находится капча, в 2Captchas API.
Посмотрите этот пример кода Python:
3. Получить идентификатор запроса и отправить форму
Проверка AI
Вы можете написать свой собственный ИИ для распознавания изображений или ИИ для распознавания речи, использовать ИИ других людей и перепрофилировать его или даже использовать какой-либо API для распознавания изображений/аудио, например API преобразования речи в текст Amazon, PocketSphinx, Mozilla DeepSpeech, Google Speech или Wit.AI.
Но есть также люди, которые уже написали библиотеку для реализации этих инструментов — одна из них — GoodByeCaptcha от MacKey-255.
Он использует FFmpeg (кстати, отличный инструмент), Microsoft Azure, Amazons Transcribe, YolvoV3, Wit.AI или Pocketsphinx для распознавания речи/изображений и решения капчи за вас. Я не собираюсь показывать вам, как это реализовать. в ваш код Python, автор сделал хороший текстовый учебник здесь или хороший видеоурок здесь.
Как я уже говорил выше, веб-сайты могут устанавливать файлы cookie на одном сайте и проверять, существует ли он на другом. Таким образом, например, они могут отслеживать движение вашей Страницы.
А позже добавить их обратно:
2. Chrome указывает параметр user-data-dir, чтобы использовать папки в качестве профилей:
10. Отступление
Некоторые поисковые роботы и парсеры с трудом справляются с задачей, поскольку начинают обслуживаться ошибки 403/503. Просто игнорируя эти сообщения и запрашивая дополнительные сайты после того, как вы получите эти ошибки, становится совершенно очевидно, что вы действительно бот, а не человек. Ни один человек не будет пытаться перезагрузить страницу 1000 раз после того, как он получит сообщение об ошибке, чтобы прекратить попытки.
Если вы сталкиваетесь с ошибками, просто замедляйтесь и отступайте, это поможет вам не повредить репутации вашего IP-адреса и не заблокировать себя.
Просто выполните небольшую проверку этих ошибок и остановите программу/перейдите в спящий режим на некоторое время, прежде чем повторить попытку.
11. Драйвер Chrome от Ultrafunkamsterdam
Ultrafunkamsterdam создал ChromeDriver, который уже включает пункты 1 и 2 этой статьи, а также многие другие функции. (Я планировал сделать ChromeDriver похожим на этот, но он был первым^^)
Поскольку этот проект с открытым исходным кодом, он должен обновляться довольно часто, чтобы драйвер Chrome оставался незамеченным.
В настоящее время он может смягчить все основные системы обнаружения ботов, такие как Distil, Datadome, Cloudflare и другие. Это может измениться в будущем, когда эти провайдеры обновят свои системы, тем более что у них есть доступ к этому chromedriver, и они могут найти что-то, что идентифицирует его где-то.
Но на данный момент это фантастический инструмент; все, что вам нужно сделать, это:
Затем, как и с обычным селеном, работайте с ним:
Однако, если вы используете Python, это отличное место для начала, чтобы ваш бот оставался незамеченным, по крайней мере, на техническом сайте ChromeDriver.
12. Согласованность пользовательских данных
Я уже упоминал о согласованности в пункте 3 с точки зрения вашей ОС, браузера и т. д., совпадающего с вашим пользовательским агентом и всем остальным.
Однако еще один критический момент, когда требуется согласованность, — это вход в систему с учетными записями пользователей.
Просматривая ботов других людей, я довольно часто сталкивался с этой проблемой. Они часто рандомизируют свой пользовательский агент, IP-адрес и все остальное, о чем я упоминал ранее, но затем забывают, что это не имеет смысла при входе в систему с учетной записью пользователя.
Например, предположим, что у вас есть пользователь А, который имеет IP-адрес из Германии при первом входе в систему, но когда вы входите с этой учетной записью в следующий раз, вы рандомизируете IP/прокси и теперь у него российский IP-адрес.
Это будет означать, что пользователь просто отправился в другую страну, не войдя в систему. Иногда это правдоподобно, но если вы затем измените его IP-адрес, скажем, на Аргентину, ваш пользователь должен быть довольно частым путешественником для этого. чтобы быть реалистичным, лол.
То же самое относится и к пользовательскому агенту; вы не можете просто менять браузер и операционную систему, которые он использует каждые 5 минут. Особенно, если один раз у него установлена версия Chrome 91, а через 5 минут — версия 89, затем версия 90, снова 91 и т. д.
Это означает, что он постоянно обновляет и понижает версию своего браузера.
Это просто нереалистичное поведение.
Итак, в двух словах, если вы все еще не понимаете, что я имею в виду: поддерживайте текстовый файл (или json, базу данных или что-то еще), содержащий имя пользователя, пароль, пользовательский агент , IP-адрес и т. д. Затем, всякий раз, когда вы входите в систему с этим пользователем, вы всегда должны использовать эти данные.
Выше приведен скриншот примера файла Json, некоторые детали которого размыты.
Заключение
Чтобы предотвратить обнаружение ботов, волшебного средства не существует. У каждого метода есть свои преимущества и недостатки.
И со временем некоторые из стратегий, о которых я говорил, вероятно, будут приняты во внимание владельцами веб-сайтов, и тогда будут обнаружены новые методы их сокрытия. Это бесконечная игра в кошки-мышки.
Но на данный момент это, вероятно, лучший способ скрыть вашего (Selenium) бота от обнаружения.
Дополнительные ресурсы
Кроме некоторых отличных книг, которые вы можете увидеть ниже, 33C3 (это в основном материал на немецком языке, но если вы немец, используйте субтитры или что-то подобное, эти доклады очень классные.), DEF CON и Black Hat фантастические ресурсы, чтобы узнать о таких вещах. Просто введите на YouTube «33C3 Talk», «DEF CON Talk» или «Black Hat Talk», и вы найдете множество записанных выступлений.
Имейте в виду, что как партнер Amazon я зарабатываю на квалифицированных продажах
Читайте также: