Загрузка страниц с помощью браузера Chrome

Плагин D5Plugin_Chrome позволяет загружать вебстраницы через браузер Chrome с обработкой Javascript. Таким образом становится возможной работа парсера Вконтакте, Facebook, Google Adwords и т.д.

кликните на изображении для увеличения

Требования к программному обеспечению »

Важно! Плагин работает только с установленной последней версией Google Chrome.

Использование браузера »

Для реализации своих функций плагин задействует браузер Chrome. При запуске кампании Datacol откроет один или более экземпляров браузера Chrome. Количество работающих экземпляров Chrome равно количеству потоков кампании. Обратите внимание, что инициализация экземпляров браузеров может занять некоторое время.

Плагин D5Plugin_Chrome является бесплатным. Он уже импортирован в демо версии Datacol (начиная с Datacol 5.50).

Плагин D5Plugin_Chrome подключается в 2-х местах:

1. В качестве плагина загрузки страницы (чтобы грузить вебстраницы, получаемые из очереди, через Google Chrome):

кликните на изображении для увеличения

2. В качестве плагина окончания процесса (чтобы после окончания работы кампании задействованные экземпляры Google Chrome автоматически удалялись):

кликните на изображении для увеличения

Конфигурация плагина D5Plugin_Chrome задается в соответствующей настройке.

кликните на изображении для увеличения

В конфигурации задаются следующие параметры:

  • request_per_proxy — параметр, который позволяет устанавливать количество запросов с одной прокси. При смене прокси браузер Chrome закрывается и открывается в новом окне с новой прокси (забирая фокус мышки на себя). По умолчанию плагин загружает 5 страниц, а после меняет прокси, но это значение вы можете изменить, используя такой параметр в конфигураии плагина:

    20

    Где 20 — заданное количество страниц

    request_per_proxy

    кликните на изображении для увеличения

    Важно! Сами прокси сервера берутся из настроек кампании. Поддерживаются как прокси с авторизацией, так и без.

    Proxy в Datacol

    кликните на изображении для увеличения

  • rucaptcha_api_key — параметр, который включает автоматическую обработку ReCaptcha, используя сервис распознавания rucaptcha.com.
    Для обработки рекапчи введите свой API ключ. Он задается в конфигурации плагина:

    ХХХХХ

  • rucaptcha_api_key

    кликните на изображении для увеличения

  • disable_images — Флаг, для включения и отключения загрузки изображений в браузере, который используется для загрузки страниц. Флаг может принимать значение 1 или 0 соответственно. Если флаг равен 1, то загрузка изображений будет отключена и загрузка будет производиться быстрее. Флаг лучше отключать (приравнивать к 0), если используются пользовательские сценарии.
  • invalid_load_strings — Список строк, при нахождении которых в исходном коде загруженной страницы — она считается загруженной с ошибкой. Если данная настройка остается пустой, то по умолчанию список выглядит следующим образом:

    Access to requested resource disallowed by administrator
    407 Proxy Authentication Required
    Не удается подключиться к прокси-серверу
  • non_browser_load_regex — регулярное выражение, используемое для определения метода загрузки текущей страницы. Если параметр не пустой и URL страницы соответствует данному регулярному выражению, то вместо загрузки через браузер — страница будет загружаться стандартным загрузчиком Datacol. Параметр обычно используется если часть страниц сайта нужно грузить браузером, а другие можно загружать стандартным загрузчиком Datacol без обработки Javascript.
  • give_control_to_user_xpath — xpath выражение, определяющее элементы вебстраницы, при наличии которых плагин передает контроль пользователю, чтобы тот сделал в браузере те или иные действия (в зависимости от выполняемой задачи, например это может быть ввод капчи), а затем нажал кнопку Продолжить, чтобы вернуть управление плагину.

Пример строки конфигурации:



0


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

Сценарий прописывается в конфигурации плагина загрузки страницы:

кликните на изображении для увеличения

Синтаксис сценариев

Основы синтаксиса сценариев »

Сценарий заключается в теги scenario. Таким образом, конфигурация может выглядеть следующим образом:



1

ПОЛЬЗОВАТЕЛЬСКИЙ_СЦЕНАРИЙ


Команды заключаются в блоки, которых может быть несколько в рамках сценария. Каждый блок ограничивается тегами cblock.



КОМАНДЫ_БЛОКА


КОМАНДЫ_БЛОКА


КОМАНДЫ_БЛОКА


Команды »

Команда представляет собой отдельное пользовательское действие. Это может быть клик мышкой по кнопке, набор определенного текста в поле ввода, ожидание загрузки определенного вебэлемента и т.п. Каждая команда ограничивается тегами command.




ОПИСАНИЕ_КОМАНДЫ


ОПИСАНИЕ_КОМАНДЫ


ОПИСАНИЕ_КОМАНДЫ


Описание команды состоит из комментария, типа команды и набора параметров.




ТИП_КОМАНДЫ ЗНАЧЕНИЕ_ПАРАМЕТРА ЗНАЧЕНИЕ_ПАРАМЕТРА ЗНАЧЕНИЕ_ПАРАМЕТРА

Комментарий — это произвольный текст, описывающий смысл текущей команды для пользователя. Его можно использовать как напоминание для себя же, чтобы в будущем быстро понимать зачем та или иная команда присутствует в сценарии. Комментарий можно не использовать.

Тип команды задается в теге type и указывает собственно вид пользовательского действия. Ниже перечислены возможные значения типа команды:

  • elementClick — клик по элементу, xpath-адрес которого указан в параметре xpath команды;
  • elemNeededClick — клик по элементу, xpath-адрес которого указан в параметре xpath команды, а исходный код элемента соответствует регулярному выражению, указанному в параметре regex команды;
  • elementTypeText — набор текста в элементе, xpath-адрес которого указан в параметре xpath команды. Текст указывается в параметре text команды;
  • elementTypeTextAlt — набор текста в элементе, xpath-адрес которого указан в параметре xpath команды. Текст указывается в параметре text команды. При этом используется альтернативная технология набора текста. В ряде случаев работает команда elementTypeText, в других — elementTypeTextAlt. Таким образом, если не работает первая — пробуем использовать вторую;
  • executeJS — выполнение яваскрипта, указанного в параметре script команды;
  • waitElementLoaded — ожидание загрузки вебэлемента страницы, xpath-адрес которого указан в параметре xpath команды. Максимальное время ожидания загрузки вебэлемента (в секундах) указывается в параметре seconds команды;
  • waitNElementsLoaded — ожидание загрузки определенного количества вебэлементов страницы, xpath-адрес которых указан в параметре xpath команды. Количество задается в параметре n команды. Максимальное время ожидания загрузки вебэлемента (в секундах) указано в параметре seconds команды;
  • navigate — загрузка вебстраницы, адрес которой указан в параметре url команды. Если в виде значения параметра url указана метастрока %URL%, то происходит загрузка текущей вебстраницы, для которой работает плагин. Это зачастую используется в случаях, когда после авторизации сайт осуществляет редирект и нам необходимо повторно (уже от имени авторизованного пользователя) загрузить вебстраницу.

Каждый параметр команды задается в нижеприведенной конструкции:
ЗНАЧЕНИЕ_ПАРАМЕТРА

Ниже перечислены допустимые значения названия параметра (аттрибута name):

  • xpath
  • regex
  • id
  • text
  • script
  • url
  • seconds
  • n

Значения параметров зависят от конкретных команд, в которых они используются (описаны выше).

Условия »

Обычно блок сценария выполняется только при определенных условиях. Например, когда пользователь еще не авторизован на сайте в данном конкретном экземпляре браузера (чтобы браузер не пытался авторизоваться при загрузке каждой страницы, в частности — когда авторизация уже осуществлена ранее). В таком случае нам нужно иметь возможность задать условие при выполнении которого блок будет выполнен. Это делается с помощью конструкции condition. Конструкция condition (если она присутствует) задается в начале блока. Каждый блок может иметь свою condition, но в одном блоке должна присутствовать только одна инструкция condition.




ОПИСАНИЕ_УСЛОВИЯ


ОПИСАНИЕ_КОМАНДЫ


ОПИСАНИЕ_КОМАНДЫ


ОПИСАНИЕ_КОМАНДЫ


Описание условия состоит из типа условия и набора параметров.

Тип условия задается в теге ctype и указывает собственно тип условия. Ниже перечислены возможные значения типа условия:

  • elementExists — текущий блок команд будет выполнен если на странице присутствует элемент, xpath-адрес которого указан в параметре xpath условия;
  • regexExists — текущий блок команд будет выполнен если на странице присутствует элемент, исходный код которого соответствует регулярному выражению, указанному в параметре regex условия;
  • elementNotExists — текущий блок команд будет выполнен если на странице отсутствует элемент, xpath-адрес которого указан в параметре xpath условия;
  • regexNotExists — текущий блок команд будет выполнен если на странице отсутствует элемент, исходный код которого соответствует регулярному выражению, указанному в параметре regex условия;

Каждый параметр условия задается в нижеприведенной конструкции:
ЗНАЧЕНИЕ_ПАРАМЕТРА

Ниже перечислены допустимые значения названия параметра (аттрибута name):

  • xpath
  • regex

Значения параметров зависят от конкретных условий, в которых они используются (описаны выше).

Обработка ошибок »

Рассмотрим простой сценарий:






elementTypeText //input[@name="target"] текст для ввода


СЛЕДУЮЩАЯ _КОМАНДА


СЛЕДУЮЩАЯ _КОМАНДА



В данном случае после загрузки страницы браузер попытается автоматически найти элемент с xpath-адресом //input[@name=»target»] . При данном написании сценария, даже если такой элемент не был найден, сценарий все равно продолжит выполняться. Однако чаще всего, если элемент (который используется командой) не находится, сценарий априори не может быть выполнен корректно. Например, если нам нужно авторизоваться, а форма авторизации отсутствует (или пользователь просто-напросто неверно задал xpath-адрес ее элемента в сценарии).

Чтобы команда в случае отсутствия нужного элемента (либо вообще в случае какой либо ошибки) сразу прерывала выполнение сценария, используйте в команде флаг detectErrors. Он указывается в каждой команде, которая должна прерывать сценарий в случае неуспешного выполнения. Вышеприведенный сценарий с detectErrors будет выглядеть следующим образом:







elementTypeText //input[@name="target"] текст для ввода


СЛЕДУЮЩАЯ _КОМАНДА


СЛЕДУЮЩАЯ _КОМАНДА



Обратите внимание, что при прерывании сценария и сигнализации ошибки, в результате страница в Datacol будет загружена с ошибкой. Ошибку можно будет просмотреть в логах работы кампании (или логе тестирования). Сигнализация об ошибке дает возможность пользователю в будущем подкорректировать сценарий для правильной работы.

кликните на изображении для увеличения

Пример простого сценария — авторизация ВКонтакте »

Рассмотрим использование сценариев на примере простого сценария для авторизации ВКонтакте.




elementExists
//input[@name="email"]



elementTypeText //input[@name="email"] ВАШ_РЕГИСТРАЦИОННЫЙ_EMAIL



elementTypeText //input[@name="pass"] ВАШ_ПАРОЛЬ


elementClick //button[@id="quick_login_button"]


waitElementLoaded //a[@id="logout_link"] 5