Селен и безголовый браузер постоянно просят капчу - PullRequest
1 голос
/ 14 мая 2019

Я столкнулся с проблемой, из-за которой один из наших сайтов продолжал запрашивать капчу в безголовом режиме в браузере в облаке, поэтому я переключил ее на безголовый, чтобы я мог сам ввести капчу, и я подумал, что следующий иногда это сработало бы, возможно, потому что некоторые куки-файлы уже были бы сохранены, но это не сработало, хотя я несколько раз вводил капчу.

Также стоит упомянуть, что он работает нормально локально в любом режиме, и также хорошо работает в облаке для неавтоматизированной версии, но как только я запускаю его там с Selenium в любом режиме, который он постоянно запрашивает капча Любые идеи о том, что может случиться, и идеи по решению, с благодарностью

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

В дискуссии под названием Как recaptcha 3 узнает, что я использую селен / хромедрайвер , мы обсудили некоторые общие подходы, чтобы избежать обнаружения при просмотре веб-страниц.Давайте углубимся в глубину.


Безголовый браузер

Безголовый браузер - это браузер, который можно использовать без графического интерфейса.Он может управляться программно для автоматизации задач, таких как выполнение тестов или создание снимков экрана с веб-страницами.


Зачем обнаруживать безголовый браузер?

Согласно @ AntoineVastel ,Безголовые браузеры используются для автоматизации вредоносных задач.Наиболее распространенные случаи - это просмотр веб-страниц, увеличение количества показов рекламы или поиск уязвимостей на веб-сайте.

Еще год назад одним из самых популярных безголовых браузеров был PhantomJS.Поскольку он построен на платформе Qt, он имеет много отличий по сравнению с большинством популярных браузеров.Было возможно обнаружить PhantomJS, используя некоторые методы снятия отпечатков в браузере.Начиная с версии 59, Google выпустила безголовую версию своего браузера Chrome.В отличие от PhantomJS, он основан на ванильном Chrome, а не на внешней структуре, что делает его присутствие более трудным для обнаружения.Таким образом, существуют и другие способы обнаружения Chrome без головы.


Определение Chrome без головы

  • Пользовательский агент : атрибут пользовательского агента обычноиспользуется для определения ОС, а также браузера пользователя.В Chrome версии 59 он имеет следующее значение:

    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/59.0.3071.115 Safari/537.36
    
    • Проверка на наличие Chrome без головки может быть выполнена через:

      if (/HeadlessChrome/.test(window.navigator.userAgent)) {
          console.log("Chrome headless detected");
      }
      
  • Плагины : navigator.plugins возвращает массив плагинов, присутствующих в браузере.Как правило, в Chrome мы находим плагины по умолчанию, такие как Chrome PDF viewer или Google Native Client.Напротив, в режиме без заголовка возвращаемый массив содержит плагин no .

    • Проверка на наличие Plugins может быть выполнена через:

      if(navigator.plugins.length == 0) {
          console.log("It may be Chrome headless");
      }
      
  • Языки : В Chrome два атрибута Javascript позволяют получать языки, используемые user: navigator.language и navigator.languages.Первый - это язык пользовательского интерфейса браузера, а второй - массив строк, представляющих предпочтительные языки пользователя.Однако в режиме без головы navigator.languages возвращает пустую строку.

    • Проверка на наличие Языки может быть сделано через:

      if(navigator.languages == "") {
           console.log("Chrome headless detected");
      }
      
  • WebGL : WebGL - это API для выполнения 3D-рендеринга на холсте HTML.С помощью этого API можно запросить информацию о поставщике графического драйвера, а также о представителе графического драйвера.С ванильным Chrome и Linux мы можем получить следующие значения для рендерера и поставщика: Google SwiftShader и Google Inc..В безголовом режиме мы можем получить Mesa OffScreen, которая является технологией, используемой для рендеринга без использования какой-либо оконной системы, и Brian Paul, которая является программой, которая начала открыватьИсходная графическая библиотека Mesa.

    • Проверка на наличие WebGL может быть выполнена с помощью:

      var canvas = document.createElement('canvas');
      var gl = canvas.getContext('webgl');
      
      var debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
      var vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
      var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
      
      if(vendor == "Brian Paul" && renderer == "Mesa OffScreen") {
          console.log("Chrome headless detected");
      }
      
    • Не все Chrome без заголовка будут иметь одинаковые значения для вендора и рендерера.Другие сохраняют значения, которые также могут быть найдены в безголовой версии.Однако Mesa Offscreen и Brian Paul указывают на наличие версии без головки.

  • Функции браузера : библиотека Modernizr позволяет проверить, присутствует ли в браузере широкий спектр функций HTML и CSS.Единственное различие, которое мы обнаружили между Chrome и Chrome без головы, заключалось в том, что у последнего не было функции линии роста волос, которая обнаруживает поддержку hidpi/retina hairlines.

    • Проверка дляналичие функции линии роста волос может быть выполнено через:

      if(!Modernizr["hairline"]) {
          console.log("It may be Chrome headless");
      }
      
  • Пропущенное изображение : последнее в нашем списке также представляется наиболее надежным из-за размера изображения, используемого Chrome в случае, если изображение не может быть загружено. В случае ванильного Chrome изображение имеет ширину и высоту, которые зависят от масштаба браузера, но отличаются от нуля. В Chrome без головы изображение имеет ширину и высоту, равные нулю.

    • Проверка на наличие Отсутствующего изображения может быть выполнена через:

      var body = document.getElementsByTagName("body")[0];
      var image = document.createElement("img");
      image.src = "http://iloveponeydotcom32188.jg";
      image.setAttribute("id", "fakeimage");
      body.appendChild(image);
      image.onerror = function(){
          if(image.width == 0 && image.height == 0) {
          console.log("Chrome headless detected");
          }
      }
      

Вот некоторые из важнейших факторов, по которым безголовые браузеры более подвержены обнаружению.


Outro

0 голосов
/ 14 мая 2019

Итак, как работает капча, основываясь на скорости ваших действий, она вызовет своего рода флаг, который уведомит сервер о том, что вы либо A) пытаетесь взломать веб-страницу, либо B) автоматизируете ее.Это почти всегда приводит к появлению капчи.На сегодняшний день нет способа обработать капчу.Если это среда, разработанная вашей компанией, вы можете попросить разработчиков отключить капчу в промежуточной среде с другим URL-адресом.Это идеальная ситуация, но если это внешний сайт, то вы ничего не можете с этим поделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...