|
Режим презентации | Рекомендуем использовать Динамическую презентацию 2.0 - максимально простой и быстрый способ создать презентацию любой сложности и гибкости
Содержание
Представляем Вашему вниманию режим презентации - уникальную разработку системы JetSwap, позволяющую осуществлять несколько последовательных показов сайтов, а также производить с ними множество операций: искать ссылки в документе и переходить по ним, вводить информацию в текстовые поля, отмечать переключатели и флажки, отправлять формы, имитировать события (например клики мышкой). Это дает поистине безграничные возможности управления показом вашего сайта!
Режим презентации предлагает огромный выбор настроек для имитации реального посещения сайта и хождения посетителя по страницам. Все настройки задаются в общих настройках сайта. Давайте рассмотрим все настройки по порядку:
- Режим презентации
Принимает три значения:
- Отключить - не использовать режим презентации, все другие настройки режима презентации будут игнорироваться.
- Показ страниц одного сайта - вы вводите полный адрес первого сайта сверху в поле "Адрес сайта" (самое верхнее поле в разделе "Настройки показов"), а затем уже в полях "Адрес сайта или параметры команды" заполняете страницы, которые нужно посетить на этом сайте, т.е. нужно вводить например about.html и т.д. а не
http://www.site.ru/about.html
- Показ страниц разных сайтов - нужно вводить полные адреса как для первого сайта, так и для сайтов в полях "Адрес сайта или параметры команды". Стоит дороже.
- Время показа первого сайта - время в секундах, в течение которого будет показываться первый сайт, введенный сверху в поле "Адрес сайта". Можно ввести 0, тогда будет вычислено пропорционально общему количеству сайтов.
- Случайное отклонение от заданного времени - отклонение в секундах, на которое может максимально изменяться в обе стороны время показа как первого, так и других сайтов.
- Минимум/максимум страниц для просмотра - могут быть показаны как все заданные страницы, так и случайно выбранное количество. Введите эти оба параметра по нулям, чтобы показать все страницы/выполнить все команды. При наличии команд особо рекомендуется оставить эти значения нулевыми.
- Дополнительных вкладок браузера - в режиме презентации может использоваться не только основное окно браузера, но и до трех дополнительных вкладок. Проведение некоторых презентаций требует одновременного открытия нескольких вкладок, либо можно разместить скрипт динамической презентации в одной из вкладок для управления презентацией в режиме реального времени. Подробнее о работе с вкладками.
- Способ передачи реферера
Задает, каким образом будет передан реферер на дополнительные страницы:
- Передавать реферер по заказу на каждую страницу - на первую и другие страницы будет передано случайно выбранное значение, введенное выше в "Реферер по заказу".
- Передавать реферер по заказу на первую страницу, на остальные - текущую страницу в браузере как реферер - рекомендуется для большинства случаев - на первую страницу будет передано случайное значение из "Реферер по заказу", для остальных страниц реферером будет служить та страница, которая открыта в браузере на момент перехода. Например, первый сайт http://site.ru получил заданный реферер, например http://vasya.ru. Вторая показанная страница http://site.ru/page2.html получит реферер http://site.ru, третья http://site.ru/page3.html получит реферер http://site.ru/page2.html и т.п. ЕСЛИ указанные страницы не производили перенаправлений! Если перенаправления были, и они нежелательны (например, загрузился сайт http://site.ru, в нем загрузился сайт dosug.nu, разбил фрейм и загрузился на полный экран, то страница http://site.ru/page2.html получит реферер dosug.nu), то используйте третий вариант.
- Передавать реферер по заказу на первую страницу, на остальные - предыдущую заданную вами страницу как реферер - рекомендуется, если на рекламируемых страницах могут быть НЕЖЕЛАТЕЛЬНЫЕ перенаправления, например при загрузке сайтов в iframe. На первую страницу будет передано случайное значение из "Реферер по заказу", для остальных страниц реферером будет служить страница из заданного вами списка, которая была показана первее данной. Если перенаправлений не было, действует аналогично второму варианту.
- Завершать показ раньше общего времени показа(случайно, до 14 секунд) - общее время показа всех сайтов или выполнения команд задается в основных настройках сайта сверху в списке "Время показа". Отметьте эту галочку, и общее время показа будет меняться до 15 секунд. Например, если вы задали одну минуту, общее время может быть от 46 секунд до 1 минуты.
- Случайный порядок показа страниц - будет загружена первая страница, а затем дополнительные страницы в случайном порядке. При выключенной отметке страницы и команды выполняются по порядку. Не рекомендуется при использовании команд.
- Список сайтов и команд - здесь задаются дополнительные сайты, время показа и команды, которые необходимо выполнить. Презентация может включать до 30 команд, размер параметра каждой команды не более 1000 символов.
- Время показа - время показа сайта или задержки перед выполнением следующей команды. Можно не вводить. В случае, если время не введено для команд "Переход", "Переход POST", "Поиск ссылки" и "Клик", оно определяется следующим образом: (общее время показа всех сайтов минус случайное отклонение от общего времени показа всех сайтов(если отмечено) минус суммарное время показа сайтов, для которых оно задано) делить на количество сайтов, плюс/минус случайное отклонение от времени показа (индивидуально для каждого сайта). Вводите время показа отдельных сайтов пропорционально общему времени показа и количеству сайтов, иначе часть сайтов может быть не показана. Не задавайте слишком большое случайное отклонение, иначе также часть сайтов может и не показаться.
- Команда - задает команду, которую надо выполнить над указанным адресом или параметрами. Может быть:
- Переход (nav в JavaScript) - переход на следующую страницу или сайт. Адрес сайта или параметры команды следует ввести в зависимости от настройки режима презентации: либо только адрес страницы без сайта, либо сайт целиком (подробнее описано выше).
Примечание: Если вам нужно передать в качестве реферера специальный адрес, который не укладывается в рамки настройки передачи реферера, добавьте в любом месте параметра команды функцию <referer(адрес)>, где в качестве адреса укажите адрес передаваемого реферера, например http://jetswap.com.
Если вам нужно передать реферер, выбранный из поля "Реферер по заказу" для данного показа сайта, укажите в качестве реферера ключевое слово SELECTED
Внимание! Для настройки перечисленных ниже параметров требуется хорошее знание HTML и JavaScript и умение анализировать HTML-код страницы. Если у вас недостаточно для этого знаний, вам не следует использовать эти параметры. Служба поддержки не производит консультаций по настройке этих параметров, за консультациями рекомендуем обращаться на форум.
- Поиск ссылки (link в JavaScript) - поиск ссылки в загруженной странице и переход браузера на эту ссылку (клика по ссылке не происходит, только переход браузера, если нужно имитировать клик, используйте "Отправить событие" перед использованием этой команды). Применяется, когда ссылка может изменяться. В качестве реферера всегда передается документ, в котором производился поиск. Адрес сайта или параметры команды вводится в формате A;B, и опционально ;C, где A принимает следующие значения:
- id - поиск ссылки по ID, B - искомый идентификатор. Например, такая ссылка будет найдена при вводе id;mylink : <a href=http://site.ru id=mylink>Ссылка</a>
- link - поиск ссылки по её части, B - часть искомой ссылки. Будет совершен переход по первой ссылке, содержащей часть текста, переданного в качестве B. Например, такая ссылка будет найдена при вводе link;jetswap.com <a href=http://www.jetswap.com/?12345>Super CAP!</a> Может производиться поиск по регулярному выражению
- number - поиск ссылки по её порядковому номеру в документе, B - порядковый номер (начинается с НУЛЯ). Например, если вы знаете, что в документе 7 ссылок и вам нужно перейти по третьей, то нужно ввести number;2
- text - поиск ссылки по её тексту, B - часть текста ссылки. Поиск производится в параметре InnerHTML. Например, такая ссылка будет найдена при вводе text;Вася: <a href=http://www.vasya.ru>Вася Пупкин</a> Переход производится по первой найденной ссылке. Может производиться поиск по регулярному выражению
- name - поиск ссылки по её имени, B - часть имени ссылки. Поиск производится в параметре name. Например, такая ссылка будет найдена при вводе name;link: <a href=http://www.vasya.ru name=link>Вася Пупкин</a> Переход производится по первой найденной ссылке. Может производиться поиск по регулярному выражению
- last - выбор последней ссылки, использовавшейся ранее командами "Ввод текста", "Отметить флажок", "Отправить событие", B - игнорируется, но должен быть задан любым значением. Например, чтобы случайная ссылка из всех ссылок в документе, содержащих слово jetswap, сначала получила событие click, а затем по ней произошел переход, можно использовать такую последовательность команд: "Отправить событие" с параметрами a;link;jetswap;click;-1 и "Поиск ссылки" с параметрами last;0
- custom - поиск ссылки по параметру, для которого не создано отдельных команд (например title, class и т.п.), B вводится в виде name=value, где name - имя параметра, value - часть значения этого параметра. Например, такая ссылка будет найдена при вводе custom;title=Вася: <a href=http://www.vasya.ru title=Вася>Вася Пупкин</a> Переход производится по первой найденной ссылке. Может производиться поиск по регулярному выражению
- Примечание 1 вы можете ввести необязательный параметр С, чтобы чтобы переход был осуществлен не по первой найденной ссылке, а по случайной (при вводе -1 (минус один)) или заданной (при вводе 1 переход будет осуществлен по второй найденной ссылке, 2 - третьей и т.п.) Например, при вводе link;jetswap;-1 будет осуществлен переход по случайной ссылке из списка ссылок, которые содержат слово jetswap.
- Ввод текста (text в JavaScript) - ввод заданных вами значений в элементы формы. Работает со всеми элементами, у которых есть свойство value: текстовым окном (однострочным input и многострочным textarea), выпадающим списком select. Вводится в формате A;B;C и выполняет команду JavaScript document.forms['A'].elements['B'].value='C';
- A - порядковый номер (начинается с нуля) или имя формы в документе. Если <form name=myform> - единственная форма в документе, то она будет найдена при вводе A как myform, так и 0
Введите =LAST= для использования предыдущего элемента, с которым производились манипуляции. В этом случае содержимое параметра B игнорируется, но должно быть введено.
- B - порядковый номер (начинается с нуля) или имя элемента формы A. Если <input name=mytext> - единственное текстовое поле в форме, то оно будет найдена при вводе B как mytext, так и 0
- C - значение, которое вы хотите установить в текстовое поле или список Для списка C должно быть задано тем, что содержится в option, а не тем, что видит посетитель страницы. Например, у нас есть форма: <form name=frm> <input name=user> <select name=auth><option value=1>Пользователь<option value=2>Администратор</select></form> Чтобы в текстовое поле user ввести admin, а в списке auth выбрать "Администратор", нужно выполнить две команды ввода текста: frm;user;admin и frm;auth;2
При указании ключевого слова <native> будет произведена имитация ввода текста с клавиатуры, а не его установка. Например form;element;text<native> Подробнее о имитации ввода текста
- Отметить флажок (check в JavaScript) - установить или снять отметку в переключателе или флажке. Вводится в формате A;B;C. Параметры A и B задаются аналогично команде "Ввод текста", параметр C может быть true или false. true означает установить флажок/радио кнопку, false означает ее снять.
- Отправить форму (submit в JavaScript) - введенная форма отправляется на сервер. В качестве параметра принимает имя или номер формы. Введите =LAST= для использования предыдущей формы, с которой производились манипуляции.
- Отправить Событие (event в JavaScript) - отправка выбранному элементу определенного события. События происходят, как правило в результате пользовательских действий - клик мышкой, ввод текста и т.д. Основные события, которые вас могут интересовать: click, submit, mousedown, keydown Все события. Применяется, когда для ссылки или другого элемента установлен отдельный обработчик события. Адрес сайта или параметры команды вводится в формате A;B;C;D и опционально ;E, где в качестве A вводится имя тега нужного элемента (например, а, input, form, select и пр.) В качестве B может выступать одно из следующих значений
- id - поиск объекта с тегом A по ID, C - искомый идентификатор, D - событие, которое нужно отправить найденному объекту. Например, чтобы кликнуть по ссылке <a href=http://site.ru id=mylink>Ссылка</a> нужно ввести a;id;mylink;click
- link - поиск ссылки по её части, С - часть искомой ссылки, D - событие, которое нужно отправить найденной ссылке. Действует ТОЛЬКО ДЛЯ ССЫЛОК. Будет отравлено событие первой ссылке, содержащей часть текста, переданного в качестве С. Например, такой ссылке будет отправлено событие click при вводе a;link;jetswap.com;click <a href=http://www.jetswap.com/?12345>Super CAP!</a> Может производиться поиск по регулярному выражению
- number - поиск объекта по его порядковому номеру в списке объектов с одинаковым тегом A документа, С - порядковый номер (начинается с НУЛЯ), D - событие, которое нужно отправить найденному объекту. Например, если вы знаете, что в документе 7 объектов с тегом a, причем третий из них является ссылкой, по которой нужно кликнуть, и вам нужно отправить клик по третьей ссылке, то нужно ввести a;number;2;click
- text - поиск объекта по части текста, содержащегося в параметре innerHTML, C - часть искомого текста, D - событие, которое нужно отправить найденному объекту. Поиск производится в параметре InnerHTML. Например, по такой ссылке будет произведен клик при вводе a;text;Вася;click: <a href=http://www.vasya.ru>Вася Пупкин</a> Событие отправляется первому найденному объекту. Может производиться поиск по регулярному выражению
- value - поиск объекта по части текста, содержащегося в параметре value, C - часть искомого текста, D - событие, которое нужно отправить найденному объекту. Поиск производится в параметре value (например, у текстовых полей). Например, по такой кнопке будет произведен клик при вводе input;value;Отправить;click: <input name=submit type=submit value=Отправить Событие отправляется первому найденному объекту. Может производиться поиск по регулярному выражению
- name - поиск объекта по части имени, содержащегося в параметре name, C - часть искомого текста, D - событие, которое нужно отправить найденному объекту. Поиск производится в параметре name. Например, по такой кнопке будет произведен клик при вводе input;name;send;click: <input name=send type=submit value=Отправить Событие отправляется первому найденному объекту. Может производиться поиск по регулярному выражению
- last - выбор последнего объекта, использовавшегося ранее командами "Ввод текста", "Отметить флажок", "Отправить событие", A и C - игнорируются, но должны быть заданы любым значением, D - событие, которое нужно отправить объекту. Например, такая кнопка получит события mousedown и mouseup при вводе последовательно команд input;name;send;mousedown и 123;last;123;mouseup: <input name=send type=submit value=Отправить> Событие отправляется первому найденному объекту.
- custom - поиск объекта по параметру, для которого не создано отдельных команд (например title, class и т.п.), C вводится в виде name=value, где name - имя параметра, value - часть значения этого параметра, D - событие, которое нужно отправить найденному объекту. Например, по такой кнопке будет произведен клик при вводе input;custom;class=btn;click: <input name=send class=btn type=submit value=Отправить Событие отправляется первому найденному объекту. Может производиться поиск по регулярному выражению
- ИСКЛЮЧЕНИЕ для тега FORM. Если вы ввели в качестве параметра A тег FORM (именно большими буквами), то в качестве B нужно ввести имя или номер формы, C - имя или номер элемента формы, D - отправляемое событие. B и С вводятся по правилам, аналогичным A и B для "Ввода текста". Если вы ввели тег form в нижнем регистре, то исключение не применяется и вам следует вводить параметры в формате, описанном выше. Например, некоторые формы плохо отправляются методом submit, поэтому можно найти <input type=submit> у такой формы и кликнуть по нему. Предположим, что форма у нас на странице одна, а кнопка отправки формы - третья. FORM;0;2;click
- Примечание 1 при отправке любого события ссылкам фактический переход по ссылкам не осуществляется (установлено экспериментально). Поэтому кроме отправки события нужно использовать команду "Поиск ссылки" с аналогичными параметрами.
- Примечание 2 вы можете отправить в качестве параметра D (имя события) ключевое слово ALL, тогда будут вызваны все обработчики события, определенные для выбранного объекта.
- Примечание 3 вы можете ввести необязательный параметр E, чтобы событие было отправлено не первому найденному элементу, а случайному (при вводе -1 (минус один)) или заданному (при вводе 1 событие будет отправлено второму найденному элементу, 2 - третьему и т.п.) Например, при вводе a;link;jetswap;click;-1 событие click будет отправлено случайной ссылке из списка ссылок, которые содержат слово jetswap.
- Управление cookies (cookies в JavaScript) -
Если в качестве параметра команды указать ALL, то производится очистка всех установленных Cookies для всех сайтов.
Также доступно указание дополнительных команд, разделенных точкой с запятой. Их применение имеет смысл прежде всего из JavaScript. Можно указать любое количество действий по манипуляции Cookies последовательно в одной команде. Значение Cookie в этом случае задается в формате base64, все остальные параметры - без изменений.
- add - добавить Cookie. Формат команды - add;host;path;name;value;secure;httponly;session;expiry
- host - домен, для которого устанавливается cookie, например yandex.ru
- path - путь, для которого устанавливается cookie, обычно /
- name - имя cookie
- value - значение cookiе, закодированное base64
- secure - значение cookiе должно передаваться по https-соединению. Принимает значение 0 или 1
- httponly - значение cookie передается только по http и недоступно через javascript. Принимает значение 0 или 1
- session - сессионное cookie, удаляется при закрытии браузера. Принимает значение 0 или 1
- expiry - время в формате unix_timestamp, когда срок действия cookie истекает
Пример: add;mc.yandex.ru;/;yabs-sid;dmFzeWE=;0;0;1;0
- remove - удалить Cookie. Формат команды - remove;host;name;path. Описание host, name, path аналогично команде add.
- list - вывод списка всех cookies. Порядок параметров вывода аналогичен команде add. Пример: mc.yandex.ru;/;yabs-sid;dmFzeWE=;0;0;1;0
- listhost - вывод списка всех cookies для определенного домена. Параметр команды - домен, например listhost;yandex.ru Порядок параметров вывода аналогичен команде add. Пример: mc.yandex.ru;/;yabs-sid;dmFzeWE=;0;0;1;0
- export - добавляет ключевое слово add в вывод команд list и listhost для простого импорта-экспорта cookies. Например export;list выведет все cookies, дополнив их ключевым словом add, чтобы в будущем можно было весь текст вывода использовать для простого импорта.
- clear - удаление всех cookies.
- clearhost - удаление всех cookies определенного домена, например clearhost;yandex.ru удалит все cookie в домене yandex.ru
Пример импорта-экспорта из javascript.
- Вставить скрипт (script в JavaScript) - производится выполнение заданного скрипта JavaScript. В качестве параметра команды указать текст скрипта на языке JavaScript (макс. 1000 символов на одну команду). При использовании хотя бы одного команды данного типа сайт автоматически помечается галочкой *** как потенциально опасный.
Внимание! Скрипт должен использоваться только для управления показом сайта! Запрещается прямо или косвенно использовать скрипты для создания любых дополнительных элементов страницы (например, фреймов). Запрещается использовать зашифрованные и вредоносные скрипты. Минимальный штраф за данное нарушение 10000 кредитов.
В случае возникновения проблем со вставкой скриптов вы можете попробовать отключить Content Security Policy.
- Переход POST (post в JavaScript) - действует аналогично обычной команде "Переход", но выполняет переход на указанный адрес методом POST (обычно таким методом отправляются веб-формы).
Параметры команды заполняются в формате A;;;B (между параметром A и B три точки с запятой). Параметр A - адрес, по которому производится переход (заполняется аналогично команде "Переход"), B - параметры POST-запроса в формате URL, т.е. param1=value1¶m2=value2. При содержании чего-либо, кроме английских букв и цифр, к значениям параметров должно быть применено URL-кодирование. Для этого воспользуйтесь специальной формой.
Например, при вводе http://site.ru/login.php;;;user=Admin&pass=123 будет совершена имитация отправки такой формы: <form method=post action=http://www.site.ru/login.php><input name=user value=Admin><input name=pass value=123 type=password><input type=submit></form>
Примечание: Если вам нужно передать в качестве реферера специальный адрес, который не укладывается в рамки настройки передачи реферера, добавьте в любом месте параметра команды функцию <referer(адрес)>, где в качестве адреса укажите адрес передаваемого реферера, например http://jetswap.com
Если вам нужно передать реферер, выбранный из поля "Реферер по заказу" для данного показа сайта, укажите в качестве реферера ключевое слово SELECTED
- Клик (click в JavaScript) - имитация клика по объекту. Объект воспринимает клик как исходящий от пользователя и производит соответствующие действия, например переходит по ссылке или отправляет форму. Команда "Клик" не выполняется мгновенно, в отличие от других команд, сначала производится имитация перемещения мыши из случайной точки, затем производится клик, всего это занимает около 4 секунд(время можно менять). Адрес сайта или параметры команды вводится в формате TagName;SearchMethod;SearchValue и опционально ;Number;ClickRectangle;ClickTime;RewriteTarget, где в качестве TagName вводится имя тега нужного элемента (например, а, input, form, select и пр.).
Значение, введенное в SearchMethod, обозначает способ поиска нужного объекта и может выступать одно из следующих значений:
- id - поиск объекта с тегом TagName по ID, SearchValue - искомый идентификатор. Например, чтобы кликнуть по ссылке <a href=http://site.ru id=mylink>Ссылка</a> нужно ввести a;id;mylink
- link - поиск ссылки по её части, SearchValue - часть искомой ссылки. Действует ТОЛЬКО ДЛЯ ССЫЛОК. Будет совершен клик по первой ссылке, содержащей часть текста, переданного в качестве SearchValue. Например, такой такая ссылка будет кликнута при вводе a;link;jetswap.com <a href=http://www.jetswap.com/?12345>Super CAP!</a> Может производиться поиск по регулярному выражению
- number - поиск объекта по его порядковому номеру в списке объектов с одинаковым тегом TagName документа, SearchValue - порядковый номер (начинается с НУЛЯ). Например, если вы знаете, что в документе 7 объектов с тегом a, причем третий из них является ссылкой, по которой нужно кликнуть, и вам нужно отправить клик по третьей ссылке, то нужно ввести a;number;2
- text - поиск объекта по части текста, содержащегося в параметре innerHTML, SearchValue - часть искомого текста. Поиск производится в параметре InnerHTML. Например, по такой ссылке будет произведен клик при вводе a;text;Вася: <a href=http://www.vasya.ru>Вася Пупкин</a> Клик производится по первому найденному объекту. Может производиться поиск по регулярному выражению
- value - поиск объекта по части текста, содержащегося в параметре value, SearchValue - часть искомого текста. Поиск производится в параметре value (например, у текстовых полей). Например, по такой кнопке будет произведен клик при вводе input;value;Отправить: <input name=submit type=submit value=Отправить Клик производится по первому найденному объекту. Может производиться поиск по регулярному выражению
- name - поиск объекта по части имени, содержащегося в параметре name, SearchValue - часть искомого текста. Поиск производится в параметре name. Например, по такой кнопке будет произведен клик при вводе input;name;send: <input name=send type=submit value=Отправить Клик производится по первому найденному объекту. Может производиться поиск по регулярному выражению
- last - выбор последнего объекта, использовавшегося ранее командами "Ввод текста", "Отметить флажок", "Отправить событие", "Клик", TagName и SearchValue - игнорируются, но должны быть заданы любым значением. Например, такая кнопка получит событие mousemove, а затем произойдет по ней клик при вводе последовательно команд "Отправить событие" с параметрами input;name;send;mousemove и "Клик" с параметрами 123;last;123: <input name=send type=submit value=Отправить> Клик производится по первому найденному объекту.
- custom - поиск объекта по параметру, для которого не создано отдельных команд (например title, class и т.п.), SearchValue вводится в виде name=value, где name - имя параметра, value - часть значения этого параметра. Например, по такой ссылке будет произведен клик при вводе a;custom;title=Вася: <a href=http://www.vasya.ru title=Вася>Вася Пупкин</a> Клик производится по первому найденному объекту. Может производиться поиск по регулярному выражению
- Опциональные параметры (можно задавать при необходимости, или ничего не вводить, тогда будут использованы предустановленные значения):
Number - вы можете ввести необязательный параметр Number, чтобы клик был выполнен не по первому найденному элементу, а случайному (при вводе -1 (минус один)) или заданному (при вводе 1 клик будет выполнен по второму найденному элементу, 2 - третьему и т.п.) Например, при вводе a;link;jetswap;-1 клик будет выполнен по случайной ссылке из списка ссылок, которые содержат слово jetswap. Чтобы оставить значение Number по умолчанию, введите 0.
ClickRectangle задает прямоугольник в объекте клика, в пределах которого будет произведен клик. Требует специальной настройки, если имеет значение, в какой точке в пределах объекта будет произведен клик (например, чтобы начать воспроизведение флеш-ролика, нужно нажать на кнопку Play в пределах этого ролика), в противном случае задавать не обязательно. 0 или не задан - 80% площади объекта (т.е. клик производится случайным образом в пределах площади объекта, обрезанной по краям на 20%). Вводится в формате X:Y:Width:Height, где X и Y обозначают координату начальной точки прямоугольника, Width и Height - ширина и высота прямоугольника. Значения вводятся в пикселях.
Пример: объект имеет размеры 200x200 пикселей, нам нужно кликнуть посередине в квадрате 20х20 пикселей. Тогда прямоугольник будет задан координатами 90:90:20:20 (90=200(размер объекта)/2-20(размер прямоугольника для клика)/2)
Чтобы оставить значение ClickRectangle по умолчанию, введите 0.
ClickTime - параметры времени клика, необязательный параметр, следует вводить только при отличиях от принятых значений по умолчанию. Вводится в формате MoveTime:Click Каждое из значений вводится в миллисекундах. MoveTime - время перемещения мыши из случайной точки на заданный объект (3000 мс по умолчанию), Click - время от завершения перемещения мыши до нажатия левой кнопки, по умолчанию от 150 до 700 мс случайно. Чтобы оставить значение ClickTime по умолчанию, введите 0.
RewriteTarget - значение, на которое заменяется target у ссылки, по умолчанию - _top (чтобы предотвратить попытку открытия ссылки в новом окне, которая будет неудачной.). Введите ORIGIN, чтобы отключить автозамену.
- ИСКЛЮЧЕНИЕ для тега FORM. Если вы ввели в качестве параметра TagName тег FORM (именно большими буквами), то в качестве SearchMethod нужно ввести имя или номер формы, SearchValue - имя или номер элемента формы, SearchMethod и SearchValue вводятся по правилам, аналогичным A и B для "Ввода текста". Если вы ввели тег form в нижнем регистре, то исключение не применяется и вам следует вводить параметры в формате, описанном выше. Например, некоторые формы плохо отправляются методом submit, поэтому можно найти <input type=submit> у такой формы и кликнуть по нему. Предположим, что форма у нас на странице одна, а кнопка отправки формы - третья. FORM;0;2
- Настройка параметров презентации
Вставьте конструкцию вида <set(настройка1=значение1;настройка2=значение2...)> в параметры любой команды презентации, чтобы задать параметры отображения сайта, которые будут применены перед выполнением этой команды презентации.
Также эту команду можно вызывать из JavaScript с помощью динамической настройки презентации.
В данный момент поддерживаются следующие настройки и операции:
- Включение/выключение JavaScript
- <set(js=1)> - JavaScript включен
- <set(js=0)> - JavaScript отключен
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::js=0"); для отключения JavScript. Включить JavScript из отключенного состояния можно только уже заданной командой презентации.
Замечание: отключение JavaScript влечет за собой отключение всех команд презентации, которые выполняются с помощью JavaScript. Будут работать только команды: переход, переход POST, очистить Cookies, повысить привилегии.
- Включение/выключение загрузки изображений
- <set(img=1)> - загрузка изображений включена
- <set(img=0)> - загрузка изображений выключена
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::img=VALUE");, где VALUE заменить на нужное значение - 0 или 1.
- Оставшееся время до выполнения следующей команды
- <set(cmdtime=VALUE)> где VALUE заменить на время в секундах, по истечении которого будет выполнена команда, заданная cmdindex.
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::cmdtime=VALUE");
- Номер следующей команды
Устанавливает номер команды, которая будет выполнена после истечения времени cmdtime. Номер команды начинается с нуля. Если не включена галочка "Случайный порядок показа страниц", то номер команды будет соответсвовать фактическому номеру команды презентации, минус единица, в противном случае соответствовать не будет и команды будут следовать в случайном порядке.
- <set(cmdindex=VALUE)> где VALUE заменить на номер команды, которая будет выполнена по истечении cmdtime секунд.
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::cmdindex=VALUE");
- Досрочная остановка презентации с возможностью возврата кредитов за неиспользованное время
Останавливает выполнение всех команд презентации. После выполнения этой операции дальнейшие операции будут невозможны.
Может работать в трех режимах:
- 1 - простая остановка презентации. Дальнейшие команды презентации выполняться не будут, однако время, указанное в настройках сайта, будет использовано до конца.
- 2 - остановка презентации с возвратом кредитов за неиспользованное время. Минимум для остановки - 30 секунд, если остановка была вызвана раньше, то презентация все равно отработает как минимум 30 секунд.
Например, стоимость показа сайта составляет 3 кредита, время 90 секунд. Остановка презентации была вызвана на 60 секунде показа сайта, таким образом стоимость показа составит 2 кредита, а 1 кредит будет возвращен на счет сайта.
- 3 - остановка презентации с возвратом кредитов за неиспользованное время, а также уменьшение числа показов сайта за час и день на единицу. Минимум для остановки - 30 секунд, если остановка была вызвана раньше, то презентация все равно отработает как минимум 30 секунд.
Например, количество показов сайта, считая с текущим показом, было 10 за текущий час и 25 за текущий день. При вызове этого режима количество показов станет равным 9 и 24 соответственно. Режим может быть полезен, если нужно добиться обязательной отработки до конца определенного количества презентаций за час или день. Механизм возврата кредитов аналогичен второму режиму.
- <set(stop=MODE)>, где MODE следует заменить на требуемый режим - 1, 2 или 3.
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::stop=MODE");
- Очистка окна браузера
Очистка окна браузера от любого содержимого. Применяется, если страница блокирует выход с неё, например выдачей сообщения "Вы действительно хотите покинуть страницу?"
- <set(clear=1)>
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::clear=1");
- Открытие всплывающих окон (открываются в текущем окне или во вкладках)
При клике по некоторым элементам типа флеш-баннеров, либо по сслыкам, клики по которым обрабатываются JavaScript, страницы могут открываться в новом окне и на это сложно или невозможно повлиять. Все всплывающие окна блокируются SafeSurf.
Но этой командой вы можете разрешить открываться таким страницам в текущем окне или в одной из вкладок, если они включены. Параметром popuptab можно настроить, в какую из вкладок будут перенаправляться открывающиеся окна. При этом для инициализации процесса открытия окна рекомендуется использовать команду "Клик", иначе окно может быть заблокировано браузером. При использовании команды "Клик" не обязательно разрешать открытие новых окон, они будут открыты автоматически.
- <set(popup=5)> - для разрешения открытия 5 подряд всплыывающих окон, при этом реально будет отображено в окне браузера только пятое (если идет перенаправление в тоже самое окно, которое инициировало открытие нового окна).
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::popup=5");
Для запрещения открытия окон (по умолчанию - запрещено, также запрещается по выработке указанного количества окон) нужно ввести 0.
- <set(popup=0)>
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::popup=0");
- Способ поиска элементов
Задает способ поиска элементов при выполнении команд презентации "Поиск ссылки", "Отправить событие", "Клик".
Может принимать следующие значения:
- search=std - стандартный способ поиска, включен по умолчанию, использует search('VALUE')!=-1 в качестве критерия соответстия элемента заданному фильтру VALUE
- search=index - использует indexOf('VALUE')!=-1 в качестве критерия соответстия элемента заданному фильтру VALUE, рекомендуется использовать, если стандартный тип поиска не находит нужные значения.
- search=regexp - поиск соответствия регулярному выражению, использует search(RegExp)!=-1 в качестве критерия соответстия элемента заданному регулярному выражению RegExp. Регулярные выражения задаются в виде /pattern/флаги Подробнее и еще
Действует, пока не будет переопределен новым значением. Пример для включения поиска по регулярным выражениям:
- <set(search=regexp)>
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::search=regexp");
- Изменение UserAgent, Accept-Language, Accept-Charset
Браузер будет передавать заданный UserAgent в запросах к сайтам.
- <agent(Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36)>
- Из JavaScript следует использовать alert("prs::" + prskey + "::agent::Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36");
Можно также задать автоматический случайный выбор браузеров определенных групп, задав ключевое слово group= и перечислив нужные группы через точку с запятой.
Использовать эту возможность можно только один раз в течение презентации.
- <agent(group=any/chrome;pc/ff)>
- Из JavaScript следует использовать alert("prs::" + prskey + "::agent::group=any/chrome;pc/ff");
Формат запроса групп следующий: платформа1/браузер1/версия1:приоритет1;платформа2/браузер2/версия2:приоритет2...
Приоритет для случайного выбора определенной группы задается в процентах числом, например 5 означает 5%. Может быть не задан, тогда автоматически берется приоритет по данным системы.
Сумма системных приоритетов для всех групп составляет 100.
Максимально корректные и прогнозируемые результаты будут достигнуты либо если для всех элементов задавать приоритет, либо если для всех использовать системный.
Часть элементов может отсутствовать при соблюдении порядка, например pc;mobile/chrome:11 - корректный запрос, означающий выдачу либо любого браузера для персонального компьютера с системным приоритетом, либо выдачу мобильного браузера на основе Chrome с приоритетом 11
Можно указать ключевое слово any в качестве платформы, если нужен определенный браузер, но платформа не важна, например any/chrome
Может быть указан диапазон версий, например 111-114. В этом случае в этом диапазоне будет выбрана случайная версия с системным приоритетом, если на нее попадет выбор. Например, при указании pc/chrome/114:10;pc/chrome/111-113:5 будет с приоритетом 10 выбрана 114 версия или с приоритетом 5 (т.е. в 2 раза реже) диапазон версий 111-113,
а если на этот диапазон попадет случайный выбор, то среди этих версий будет выбрана одна с системным приоритетом
Может быть указано необязательное ключевое слово lang с аналогичным синтаксисом для указания
ISO-кода страны, для которого должен быть сгенерировать заголовок
Accept-Language. Требуется указание ISO-кода страны, а не языка, обратите на это внимание! Например, lang/RU - русский, lang/US - английский (США), lang/GB - английский (Великобритания)
Ключевое слово lang указывается в любом порядке отдельным пунктом, например any/chrome;lang/RU;pc/ff означает, что будет выбран либо браузер Chrome любой платформы (мобильная или ПК), либо браузер Firefox на ПК, оба любой версии, при этом язык Accept-Language для выбранного браузера будет сгенерирован русский.
Если ключевое слово lang не указано, то будет использована страна, которая определена для IP-адреса посетителя, что в большинстве случаев будет актуально. Можно указать только один раз запросе.
Возможные платформы:
Возможные браузеры:
- Chrome - Google Chrome
- Safari - Safari и браузер устройств Apple
- YA - Яндекс Браузер
- FF - Mozilla Firefox
- IE - Microsoft Internet Explorer
- Edge - Edge
- Opera - Opera
- Samsung - встроенный браузер для устройств Samsung
- MIUI - встроенный браузер для устройств на MIUI
- Other - другие браузеры
Также доступно изменение передаваемых браузером параметров Accept-Language и Accept-Charset:
- <agentlanguage(ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3)>
- Из JavaScript следует использовать alert("prs::" + prskey + "::agentlanguage::ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
- <agentcharset(windows-1251)> - зачастую не используется, чтобы обнулить, передайте пустую строку
- Из JavaScript следует использовать alert("prs::" + prskey + "::agentcharset::windows-1251");
- Включение режима отладки
В протокол выполнения презентации будет включаться отладочная информация аналогично установке галочки "Режим отладки" в программе тестирования презентации. Используется совместно с функцией получения протокола выполнения презентации для получения и последующего анализа выполнения презентации на компьютерах пользователей.
- <set(debug=1)>
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::debug=1");
- Изменение активной вкладки
Команды презентации выполняются с активной на данный момент вкладкой. Значение 0 соответствует основному окну браузера, от 1 до 3 - номеру дополнительной вкладки.
- <set(tab=1)> - установка первой дополнительной вкладки активной.
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::tab=1");
- Установка вкладки, в которую будут перенаправляться всплывающие окна
Команда popup разрешает открытие всплывающих окон. При использовании нескольких вкладок можно дополнительно настроить номер вкладки, в которую будут перенаправляться всплывающие окна.
Может принимать следующие значения:
- От 0 до 3 - номер вкладки, в которую будут перенаправляться всплывающие окна
- next - всплывающие окна будут открываться в следующей за активной на данный момент вкладкой (поведение по умолчанию)
- current - всплывающие окна будут открываться в предыдущей относительно перед активной на данный момент вкладкой
- prev - всплывающие окна будут открываться в предыдущей относительно перед активной на данный момент вкладкой
Перенаправление всплывающего окна в установленную вкладку делает эту вкладку активной и в ней будут выполняться следующие команды презентации. Если НЕ нужно делать вкладку активной, т.е. не менять активную вкладку когда открывается всплывающее окно, нужно добавить в значение параметра ,nofocus Например next,nofocus или 0,nofocus
Пример:
- <set(popuptab=next)> - открытие всплывающих окон в следующей за активной вкладке и установка этой вкладки активной. (т.е. после открытия всплывающего окна следующие команды будут выполняться в той вкладке, в которой открылось всплывающее окно)
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::popuptab=next");
- Управление реальным использованием мыши и клавиатуры
Команда mouse разрешает или запрещает реальное перемещение курсора мыши при использовании функции клик или клик по заданным координатам, а также отправку глобальных событий клавиатурного ввода. Для применения этой команды нужно в настройках сайта отметить галочку "Разрешить использование мыши". Команда действует до окончания презентации, если не была заменена другой командой. Перемещение мыши начинается из координат, указанных в команде click или из позиции курсора, если координаты указаны не были.
Может принимать следующие значения:
- 0 - реальное перемещение мыши не осуществляется
- 1 - реальное перемещение мыши осуществляется.
Пример:
- <set(mouse=1)> - включить перемещение мыши
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::mouse=1");
- Немедленное выполнение следующего показа после завершения предыдущего
При использовании досрочного завершения презентации бывает необходимо сразу же выполнить следующий показ сайта. Например, если по результатам предварительного тестирования машина пользователя по каким-то критериям вам не подошла, вы можете оставить презентацию на ней и сразу же запустить презентацию на машине другого посетителя.
Функция выполняет обнуление интервала между показами, причем только на один показ. Никакие другие настройки сайта не изменяются. Следующий (после инициированного этой функцией) показ сайта будет выполнен с предыдущими настройками интервала между показами.
Следует понимать, что если при выполнении презентации программа на компьютере посетителя зависнет и перезапустится, то команда на выполнение следующего показа сайта отдана не будет.
Для работы этой функции необходимо:
- Разместить строку <set(allownextshow=1)> в параметрах любой команды презентации, причем обязательно через аккаунт, динамически подгруженная команда работать не будет.
Это предварительная команда, которая разрешает выполнение основной команды, но сама по себе ничего не делает. Ее присутствие в настройках презентации нужно в целях безопасности.
- Разместить строку <set(nextshow=1)> в параметрах любой команды презентации, или с помощью динамической презентации.
Пример:
- <set(allownextshow=1;nextshow=1)> - выполнить следующий показ сайта (при настройке команды через аккаунт).
- <set(allownextshow=1)> в параметрах любой команды презентации, настроенной в аккаунте, затем из JavaScript - alert("prs::" + prskey + "::set::nextshow=1");
- Управление Content Security Policy(CSP)
Команда csp включает или выключает Content Security Policy. Можно применять, например в случае проблем со вставкой скриптов на некоторые страницы. Команда действует до окончания презентации, если не была заменена другой командой.
Может принимать следующие значения:
- 0 - отключено
- 1 - включено
Пример:
- <set(csp=0)> - выключить Content Security Policy
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::csp=0");
- Выполнение пользовательского скрипта при каждой загрузке страницы/фрейма
Данный метод позволяет внедрить пользовательский скрипт при каждой загрузке страницы/фрейма.
Можно указать как сам код скрипта, так и адрес скрипта для загрузки. Если указать адрес скрипта, то при загрузке скрипт будет обработан препроцессором презентаций, т.е. если в тексте скрипта будут указаны команды вида <get(...)> <set(...)> и т.п.,
т.е. любые команды, которые вы можете указать в любой команде презентации, то они будут обработаны. Если это не требуется, вы можете указать параметр NOPARSE (примеры ниже). Таким образом, вы можете указать в теле загружаемого скрипта
команду <set(cmdtime=0)> для того, чтобы как только вставляемый скрипт загрузится, сразу же продолжилась презентация.
Загружаемому скрипту доступен дополнительный парамтер <frameGuid>, выдающий идентификатор фрейма, в который вставляется скрипт. Этот идентификатор может использоваться функцией frameinfo для определения иерархии фреймов.
Пример:
- <injectjs(http://site.ru/script.js)> - вставить скрипт.
- <injectjs(http://site.ru/script.jsNOPARSE)> - вставить скрипт и не обрабатывать текст загруженного скрипта препроцессором презентаций. В этом случае все равно будут доступны два параметра <frameGuid> и <get(key)>
- <injectjs()> - отменяет команду вставки скрипта, скрипт больше вставляться не будет.
- Из JavaScript следует использовать alert("prs::" + prskey + "::injectjs::http://site.ru/script.js");
- Изменение скорости пользовательского ввода
Скорость имитации ввода текста с клавиатуры назначается каждому экземпляру SafeSurf самостоятельно для имитации работы разных людей. Вы можете ее изменить. Она задается в процентах от 0 для самого медленного до 100 для самого быстрого ввода текста.
Пример:
- <set(inputspeed=100)> - включить самый быстрый ввод
- Из JavaScript следует использовать alert("prs::" + prskey + "::set::inputspeed=0");
Настройки можно сочетать в одной команде, например <set(img=0;js=1)> выключит загрузку картинок и включит выполнение JavaScript.
- Получение параметров презентации
Вставьте конструкцию вида <get(настройка)> в параметры любой команды презентации, чтобы вместо неё в параметре команды презентации возникло значение соответствующего параметра.
Также эту команду можно вызывать из JavaScript с помощью динамической настройки презентации.
В данный момент поддерживаются следующие команды:
- Оставшееся время выполнения презентации - time
- <get(time)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::time"); - для получения значения этого параметра из JavaScript
- Ключ презентации - key
Ключ презентации используется для динамической настройки параметров и команд презентации.
- <get(key)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::key"); - для получения значения этого параметра из JavaScript (практического значения не имеет, поскольку переменная prskey в данном примере уже будет содержать этот ключ, иначе операция не сработает)
- Оставшееся время до выполнения следующей команды - cmdtime
- <get(cmdtime)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::cmdtime"); - для получения значения этого параметра из JavaScript
- Номер следующей команды - cmdindex
Выдает номер команды, которая будет выполнена после истечения времени cmdtime. Номер команды начинается с нуля. Если не включена галочка "Случайный порядок показа страниц", то номер команды будет соответсвовать фактическому номеру команды презентации, минус единица, в противном случае соответствовать не будет и команды будут следовать в случайном порядке.
- <get(cmdindex)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::cmdindex"); - для получения значения этого параметра из JavaScript
- Количество команд презентации - count
- <get(count)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::count"); - для получения значения этого параметра из JavaScript
- IP-адрес посетителя - ip
- <get(ip)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::ip"); - для получения значения этого параметра из JavaScript
- HTTP-Referer - referer
- <get(referer)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::referer"); - для получения значения этого параметра из JavaScript
- Журнал выполнения презентации - log
Выдает журнал выполнения презентации(аналогично вкладке "Журнал" в программе тестирования презентации) в формате urlencoded, удобном для отправки на удаленный сайт(см. ниже). Если нужен текстовый формат, используйте ключевое слово logtxt.
- <get(log)> - для вставки в параметры команд презентации(формат urlencoded)
- <get(logtxt)> - для вставки в параметры команд презентации(текстовый формат)
- var a=prompt("prs::" + prskey + "::get::log"); - для получения значения этого параметра из JavaScript в формате urlencoded
- var a=prompt("prs::" + prskey + "::get::logtxt"); - для получения значения этого параметра из JavaScript в текстовом формате
Пример использования:
Для оптимизации работы презентации вы можете получать обратную связь о работе презентаций непосредственно с пользовательских компьютеров в режиме реального времени! Для этого выполните несколько несложных инструкций:
- Скачайте архив, распакуйте его на вашем компьютере.
- Отредактируйте файл log.php следующим образом:
- В строке $pass="12345"; замените 12345 на любой другой пароль. Вы его будете вводить при доступе на страницу просмотра журналов.
- В строке $postkey="54321"; замените 54321 на любой другой пароль. Этот пароль будет использоваться во время отправки результатов выполнения презентации.
- Также можно изменить в строке $file="log.txt"; название файла, который будет использоваться для хранения журналов.
- Сохраните изменения, загрузите содержимое архива на ваш сайт. Можно также переименовать файл log.php, на который будет приходить информация о выполнении презентации.
- Для файла log.txt (или другой файл, заданный в переменной $file) задайте права доступа, позволяющие запись данных из скрипта log.php. Какие именно права доступа можно безопасно использовать и как именно их задавать, вы можете узнать у вашего хостинг-провайдера.
- Предположим, файл log.php доступен по адресу http://site.ru/log.php, при этом вы не меняли содержимое переменных $pass и $postkey в этом файле.
Создайте в конце презентации команду "Переход POST" с параметрами http://site.ru/log.php?postkey=54321;;;log=<get(log)>
где вместо 54321 нужно вписать значение переменной $postkey из файла log.php, если вы его изменяли (рекомендуется его менять).
Предусмотрите некоторое время для выполнения команды, в зависимости от скорости интернета у пользователя оно может отличаться. Лучшего поставить 10-15 секунд.
- Введите в браузере адрес http://site.ru/log.php
Введите пароль 12345 (или введенное вами ранее значение переменной $pass в файле log.php)
Должна появиться надпись "Нет записей". Если это так, значит все работает нормально. Если вы видите надпись "Нет прав доступа на запись", значит вам нужно задать права доступа, разрешающие запись файла log.txt (или другого, заданного в переменной $file файла log.php)
- Запустите презентацию в программе тестирования, повторно зайдите по адресу http://site.ru/log.php и вам будет показано содержимое, аналогичное вкладке "Журнал" программы тестирования.
Теперь вы сможете получать результаты выполнения презентации от пользовательских машин в режиме реально времени и оптимизировать работу презентации.
- Номер активной вкладки - activetab
При работе с несколькими вкладками может быть полезно получить номер активной на данный момент вкладки.
- <get(activetab)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::activetab"); - для получения значения этого параметра из JavaScript
- Количество вкладок - tabcount
Общее количество вкладок, доступное в презентации.
- <get(tabcount)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::tabcount"); - для получения значения этого параметра из JavaScript
- ID рекламируемого сайта - id
- <get(id)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::id"); - для получения значения этого параметра из JavaScript
- Объем памяти компьютера, выполняющего презентацию.
Можно использовать для определения минимального объема памяти, необходимого для выполнения презентации. Определить объем памяти, который программа занимает при выполнении презентации на вашем компьютере, можно на вкладке "Журнал" программы тестирования презентации после завершения ее выполнения. На других компьютерах презентация может требовать другой объем памяти.
Доступны следующие параметры:
- memory - объем свободной физической памяти
- totalmemory - общий объем физической памяти
- virtualmemory - объем свободной виртуальной памяти
- totalvirtualmemory - общий объем виртуальной памяти.
Пример для параметра memory:
- <get(memory)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::memory"); - для получения значения этого параметра из JavaScript
- Средний пинг до популярных интернет-ресурсов - ping
Функция измеряет раз в несколько минут показатель пинга до десяти популярных интернет-ресурсов и позволяет получить его среднее значение. Выдает 0 при ошибке или положительное значение пинг в милисекундах в случае успешного измерения.
- <get(ping)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::ping"); - для получения значения этого параметра из JavaScript
- Тестовый режим - test
Показывает, в каком режиме сейчас идет показ сайта - в тестовом или рабочем. При тестировании рекламодателем показа сайта через программу PrTest принимает значение 1, а при показе сайта посетителям в программе SafeSurf - значение 0.
- <get(test)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::test"); - для получения значения этого параметра из JavaScript
- Скорость загрузки страниц
Программа SafeSurf позволяет получать текущую скорость загрузки страниц и больших файлов у конкретного посетителя. Можно получить как скорость загрузки с начала воспроизведения текущей презентации, так и среднюю скорость загрузки страниц у пользователя за весь сеанс работы посетителя.
Различается два показателя скорости - скорость загрузки страниц и скорость загрузки файлов. В определении первой скорости участвуют файлы размером от 25 до 300 КБ, второй - более 300 КБ.
Следует учитывать, что скорость загрузки страниц на практике получается существенно ниже как максимально возможной скорости интернет-соединения, так и скорости загрузки больших файлов, поскольку включает в себя и время на отправку запроса на сервер, и время ожидания ответа с сервера.
Именно поэтому мы выделили две скорости - они могут различаться в десятки раз. Соответственно ориентироваться на первую скорость нужно при загрузке обычных сайтов, а на вторую - либо при загрузке сайтов с большим количеством тяжеловесного контента, либо при загрузке файлов большого размера.
Обратите внимание, что скорость может обновляться спустя секунду после окончания загрузки. Скорость загрузки текущей презентации не влияет на показатель средней скорости загрузки страниц до полного завершения презентации.
Доступны следующие параметры (значение выдается в Мбит/c c шагом 0.1):
- speed - текущая скорость загрузки страниц (считается для текущей презентации)
- highspeed - текущая скорость загрузки больших файлов (считается для текущей презентации)
- avgspeed - средняя скорость загрузки страниц (по результатам воспроизведения нескольких презентаций)
- avghighspeed - средняя скорость загрузки больших файлов (по результатам воспроизведения нескольких презентаций)
Пример для параметра speed:
- <get(speed)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::speed"); - для получения значения этого параметра из JavaScript
- Количество открытых HTTP-соединений
Выдает количество HTTP-соединений, в данный момент выполняющихся программой SafeSurf, открытых с помощью команды request.
- <get(requestcount)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::requestcount"); - для получения значения этого параметра из JavaScript
- Количество подключенных сокетов
Выдает количество подключенных сокетов, подключение которых открыто с помощью команды socketconnect.
- <get(socketcount)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::socketcount"); - для получения значения этого параметра из JavaScript
- Получение информации о фрейме
Данный метод позволяет получить информацию о фрейме в формате JSON. Выдается индекс фрейма, его URL, положение полос прокрутки и размеры.
- <getframeinfo(frameGuid)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::getframeinfo::frameGuid"); - для получения значения этого параметра из JavaScript
Выполняем команду: "<injectjs(http://example.org/script.js)>", затем где-то в коде скрипта:
var frameGuid = "<frameGuid>";
var prskey = "<get(key)>";
var frameInfo = prompt("prs::" + prskey + "::getframeinfo::" + frameGuid);
---
Результатом выполнения будет примерно следующее:
[
{
"Src":"http://example.org/frame1.html",
"Index":0,
"Scroll":{"X":0,"Y":0},
"Rect":{"Left":0,"Top":15,"Right":600,"Bottom":615,"Width":600,"Height":600,"X":0,"Y":15}
},
{
"Src":"http://example.org/frame2.html",
"Index":1,
"Scroll":{"X":0,"Y":0},
"Rect":{"Left":8,"Top":67,"Right":612,"Bottom":671,"Width":604,"Height":604,"X":8,"Y":67}
}
]
- Скорость пользовательского ввода
Выдает скорость имитации ввода текста, заданную в процентах. 0 означает минимальную скорость ввода, 100 - максимальную. Каждый экземпляр SafeSurf имеет свою скорость ввода.
- <get(inputspeed)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::inputspeed"); - для получения значения этого параметра из JavaScript
- Параметры имитации браузера
Выдает параметры имитации браузера посетителя, такие как платформа, имя браузера и версия. Именно с этими параметрами в данный момент выполняется показ.
Доступны следующие параметры:
- browserplatform - платформа браузера, может быть PC или Mobile. При запросе загрузки с сервера нового User-Agent будет иметь значение loading
- browsername - имя браузера, например Chrome. Все возможные браузеры перечислены в команде настройки User-Agent.
- browserversion - версия браузера, например 114
- browsererror - ошибка при обработке загрузки браузера
- <get(browserplatform)> - для вставки в параметры команд презентации
- var a=prompt("prs::" + prskey + "::get::browserplatform"); - для получения значения этого параметра из JavaScript
- Динамическая настройка презентации
Режим презентации позволяет использовать JavaScript для настройки параметров команд во время выполнения показа сайта. Можно изменять ряд параметров презентации, выполнять некоторые действия, в том числе добавлять или изменять команды презентации. Если в настройках сайта могут быть заданы только 30 команд, то динамически можно добавить до 1000 команд! Это дает возможность создавать презентации любой сложности и подстраивать показ презентации для конкретного пользователя непосредственно во время показа сайта, что дает практически неограниченные возможности.
Для изменения настроек используются функции JavaScript prompt и alert. Различие между функциями состоит лишь в том, что prompt выдает значение, а alert - не выдает. Таким образом, prompt обязательно использовать в том случае, если нужно получить значение, например оставшегося времени презентации, alert можно использовать для операций, которые не требуют получения значений, например очистка окна браузера. В обоих случаях можно использовать prompt.
Типичный вызов функции настройки из скрипта выглядит так:
var a=prompt("prs::" + prskey + "::COMMAND::VALUE");, где:
- prs - постоянный текст, говорящий о том, что идет изменение параметров презентации,
- prskey - переменная, в которую был предварительно установлен ключ презентации, для этого нужно вписать команду презентации "Вставка JavaScript" с параметрами var prskey="<get(key)>";
Рекомендуется обеспечивать уникальность имени переменной, хранящей ключ презентации, если скрипт с управляющими командами подгружается непосредственно на рекламируемом сайте. Если вы будете использовать указанное здесь имя prskey, то есть вероятность, что скрипты отображаемого сайта получат несанкционированный доступ к настройкам презентации!
- COMMAND - имя команды, возможные варианты описаны ниже.
- VALUE - параметры команды COMMAND, зависят от самой команды и описаны ниже.
Рекомендуется для подготовки презентации вводить адрес первой страницы about:blank, а затем вызывать команду "Вставить скрипт", которая вставит ключ презентации и загрузит управляющий скрипт. Скрипт можно загрузить, используя функцию <dls(адрес_скрипта)>
Например, команда "Вставить скрипт" с параметрами var prskey="<get(key)>"; <dls(http://site.ru/script.js)> загрузит скрипт с командами презентации, расположенный по адресу http://site.ru/script.js. Более подробно вы можете прочитать в примере.
- Альтернативный способ динамической настройки
Замечание: на части сайтов по неизвестным причинам обработчики alert и prompt перестают работать или работают нестабильно, в этом случае можно использовать document.title="prs::" + prskey + "::COMMAND::VALUE";
Если результат выполнения команды, отправленной с помощью document.title, не важен, т.е. в базовом варианте достаточно использовать alert, то можно использовать как есть. document.title="prs::" + prskey + "::COMMAND::VALUE"; и alert("prs::" + prskey + "::COMMAND::VALUE"); - работает абсолютно одинаково. Для получения ответа аналог вызова prompt следует заранее создать функцию, которая будет получать ответ.
Пример:
f(answer){ ... } - такого вида функция должна быть заранее создана на странице для получения ответа. В переменной answer будет содержаться ответ.
Тогда следует выполнить следующий код:
document.title="prs::" + prskey + "::COMMAND::VALUE<<answer(f(\"<<result>>\"))>>";
<<answer(КОД)>> - вставляет любой КОД в документ. КОД обрабатывается как и любая команда презентации, т.е. например ответ может быть перенаправлен в нужный фрейм с помощью инструкции frame.
<<result>> заменяется текстом ответа.
В данном примере вставляемый код вызывает заранее определенную функцию f, в которую передает ответ от вызыванной команды презентации COMMAND.
- Описание команд (параметр COMMAND)
- add - добавление команды презентации
Добавляет команду презентации и выдает номер добавленной команды. Выдает -1 если превышен лимит команд. Стандартный вызов меняется на:
var a=prompt("prs::" + prskey + "::add::COMMAND::TIME::PARAMS");, где:
- COMMAND - команда презентации, может быть:
- TIME - время выполнения команды в секундах. Обратите внимание, что на значение параметра TIME влияет случайное отклонение времени выполнения команд, заданное в настройках презентации.
- PARAMS - параметры конкретной команды. Описание параметров и примеров можно найти в разделе "Команды презентации"
- mod - изменение команды презентации
Изменяет команду презентации с указанным индексом. Выдает -1 если команда с указанным индексом не найдена. Стандартный вызов меняется на:
var a=prompt("prs::" + prskey + "::mod::INDEX::COMMAND::TIME::PARAMS");, где INDEX - номер изменяемой команды (начинается с нуля), остальные параметры аналогичны команде add.
- get - получение параметров презентации
Содержимое параметра VALUE зависит от параметра и приведено вместе с примерами отдельно. (пример для JavaScript)
- set - установка параметров презентации
Содержимое параметра VALUE зависит от параметра и приведено вместе с примерами отдельно. (пример для JavaScript)
- getvar - получение значения переменной
Получение значения переменной с именем VALUE. Подробное описание работы с переменными приведено отдельно (пример для JavaScript).
- setvar - установка значения переменной
Установка значения переменной, параметр VALUE принимает вид name=value, где name - имя переменной, value - устанавливаемое значение. Подробное описание работы с переменными приведено отдельно (пример для JavaScript).
- debug - вывод отладочной информации
Вывод отладочной информации в программу тестирования презентации на вкладку "Журнал". Будет выведено содержимое параметра VALUE. Функция будет полезна при отладке работы презентации.
Пример: alert("prs::" + prskey + "::debug::Этот текст вы увидите во вкладке ЖУРНАЛ");
- parse - обработка текста
Команда обрабатывает переданный в параметре VALUE текст функциями замены текста, обработки параметров и переменных (т.е. любыми функциями, которые могут быть вставлены в параметры команды презентации) и выдает результат в переменную.
Пример: var a=prompt("prs::" + prskey + "::parse::<rndt(Yandex!!Rambler!!Google)>");
Переменная a может получить слово Google, т.е. мы вызвали функцию вставки случайного текста rndt
- scroll - прокрутка страницы к указанному объекту
Команда прокручивает страницу к объекту JavaScript, определенному в VALUE, и задает смещение координат клика или скриншота от левого верхнего угла страницы до объекта. Может работать с фреймами, тогда смещение задается относительно всех фреймов. Смещение (x,y) и размеры объекта (width,height) сохраняются в переменных sys.scrollx, sys.scrolly, sys.scrollwidth, sys.scrollheight и могут быть использованы в целях вызова функций клика по координатам или скриншота.
Доступен вызов функции не только с помощью JavaScript, но и из команд презентации - <scroll(параметры)> - в таком виде только при работе с главным фреймом!
Внимание! Повторный вызов этой функции без выполнения клика или скриншота вызовет удвоение координат (x,y). Чтобы этого избежать, нужно сначала вызвать эту функцию с параметром clear - это обнулит координаты.
Если объект может быть получен средствами JavaScript в одну команду, то нужна только эта команда с ; в конце.
Пример: alert("prs::" + prskey + "::scroll::document.getElementById('object');<frame(name=frame1)>"); - прокрутит главную страницу, чтобы стал виден фрейм с именем frame1, затем прокрутит фрейм iframe1, чтобы стал виден объект с ID object, после чего задаст координаты объекта (верхнего левого угла) с ID object в качестве точки отсчета для функции click.
Если объект не может быть получен одной командой, то последней командой нужно присвоить объект переменной tmpbrr.hElso
Пример: alert("prs::" + prskey + "::scroll::document.getElementsByTagName('a'); tmpbrr.hElso=tmpbrr.hElso[3];"); - прокрутит главную страницу, чтобы стала видна четвертая ссылка (которая содержит индекс 3) документа, и внесет её координаты в качестве точки отсчета.
Можно использовать стандартные команды презентации для указания объекта, к которому должна быть прокручена страница
Пример: команда "Отправить событие" с параметрами a;link;jetswap.com;mousemove отправит нужной ссылке событие mousemove и запомнит эту ссылку,
затем "Вставить скрипт" alert("prs::" + prskey + "::scroll::hElsolast;"); произведет прокрутку страницы к ранее использовавшейся ссылке.
- click - выполнение клика по заданным координатам (или перемещение мыши без клика)
В качестве точки отсчета для клика выступают координаты, заданные функцией scroll, либо нулевые координаты, если функция scroll не вызывалась с момента последнего вызова функции click. VALUE имеет формат x:y:MoveTime:ClickTime:FromX:FromY, где x и y - координаты клика, MoveTime - время перемещения мыши в миллисекундах, ClickTime - время между окончанием перемещения мыши в нужную точку и кликом (в мс).
FromX и FromY - необязательные параметры, соответствующие координатам X и Y начальной точки, из которой производится перемещение мыши. Если FromX и FromY не заданы, то используется либо случайная точка, либо, если включен режим реального перемещения мыши, текущая позиция курсора мыши.
Эта функция может использовать реальное перемещение курсора мыши и клики, для этого его нужно включить.
Доступен вызов функции не только с помощью JavaScript, но и из команд презентации - <click(параметры)> - в таком виде только при работе с главным фреймом!
Пример: alert("prs::" + prskey + "::click::10:15:3000:300");
Пример с заданием начальной точки (100,200): alert("prs::" + prskey + "::click::10:15:3000:300:100:200");
Также есть возможность отключить выполнение клика, если нужно переместить мышь по заданным координатам, не выполняя при этом клик. Для этого нужно добавить ключевое слово move в параметры команды (в любом месте).
Например так: alert("prs::" + prskey + "::click::10:15:3000:300move");
- screenshot - выполнение скриншота страницы или её элемента
Узнайте, как выполняется ваша презентация, создав скриншот страницы браузера или отдельного её элемента в любое нужное время. В качестве точки отсчета для скриншота выступают координаты, заданные функцией scroll, либо нулевые координаты, если функция scroll не вызывалась с момента последнего вызова функции click/screenshot. Скриншот сохраняется в переменной с именем screenshot
Доступен вызов функции не только с помощью JavaScript, но и из команд презентации - <screenshot(параметры)> - в таком виде только при работе с главным фреймом!
VALUE имеет формат format:x:y:width:height, где:
- format - формат сохранения изображения. Доступные форматы:
Важно! Сохраненное изображение независимо от формата всегда кодируется base64 для удобства отправки, при необходимости полученную строку можно дополнительно обработать urlencode, для этого в Format нужно добавить encode, например: gifencode - изображение будет сохранено в формате gif, обработано base64 и закодировано urlencode (подробнее см. ниже пример).
Добавьте также в параметр format ключевое слово save, чтобы скриншот сохранился на диске в папке SafeSurf под именем image.[FORMAT] - расширение файла зависит от заданного формата. Например, при выполнении скриншота с параметрами gifsave;0;0;max;max скриншот всей страницы сохранится по именем image.gif. Скриншот сохраняется только во время тестирования, во время просмотра через SafeSurf на диске скриншот сохранен не будет, этот параметр игнорируется.
- x, y - координаты верхней левой точки прямоугольника скриншота. При использовании совместно с scroll - координаты относительно координат объекта, к которому прокручено окно браузера, при этом координаты верхней левой точки прямоугольника скриншота вычисляются как сумма полученных в этом параметре координат и координат объекта, к которому осуществлялась прокрутка - если тут ввести 0:0 - то будут сами координаты объекта прокрутки.
- width, height - длина и ширина прямоугольника. При вводе ключевого слова max используется вся длина/ширина браузера, при использовании ключевого слова last используется длина/ширина объекта, к которому прокручено окно браузера с помощью функции scroll
Примеры:
alert("prs::" + prskey + "::screenshot::jpegencode:10:15:100:200"); или <screenshot(jpegencode:10:15:100:200)> - создаст скриншот объекта с координитами (10;15) и размерами 100x200, формат скриншота - jpeg, дополнительно выходные данные будут обработаны функцией urlencode для удобства отправки через функцию "Переход POST"
Для отправки сделанного скриншота на сервер можно использовать команду Переход POST с параметрами http://site.ru/script.php;;;image=<getvar(screenshot)>
После выполнения этой команды скрипт с адресом http://site.ru/script.php в переменной image получит скриншот, закодированный base64. Чтобы сохранить исходный файл на сервере под именем image.jpg, нужно будет выполнить следующий код на php:
$image=base64_decode($_POST['image']);
file_put_contents('image.jpg',$image);
Пример вызова совместно с командой scroll:
alert("prs::" + prskey + "::scroll::document.getElementById('object');<frame(name=frame1)>"); - прокрутит главную страницу, чтобы стал виден фрейм с именем frame1, затем прокрутит фрейм iframe1, чтобы стал виден объект с ID object, после чего задаст координаты объекта (верхнего левого угла) с ID object в качестве точки отсчета для функции screenshot.
alert("prs::" + prskey + "::screenshot::jpeg:0:0:last:last"); - сделает скриншот объекта, к которому была прокручена страница.
Можно использовать стандартные команды презентации для указания объекта скриншота
Пример: команда "Отправить событие" с параметрами img;custom;src=logo;mousemove отправит нужной картинке событие mousemove и запомнит эту картинку,
затем "Вставить скрипт" alert("prs::" + prskey + "::scroll::hElsolast;"); произведет прокрутку страницы к ранее запомненной картинке,
после чего "Вставить скрипт" alert("prs::" + prskey + "::screenshot::gif:0:0:last:last"); сделает скриншот этой картинки.
- cookies - управление Cookies
Возможность управления Cookies из команды JavaScript. Параметры аналогичны очистке Cookies из команды презентации.
Пример: alert("prs::" + prskey + "::cookies::ALL"); - очистка Cookies.
Пример импорта-экспорта cookies:
Экспорт: var cookielist=prompt("prs::" + prskey + "::cookies::export;list"); - в переменную cookielist будут записаны данные для экспорта, которые потом можно отправлять на сервер рекламодателя через команду request
Импорт: alert("prs::" + prskey + "::cookies::clear;" + cookielist); - предварительно в переменную cookielist получить с сервера рекламодателя данные cookies, можно с помощью команды request
- request - Отправка HTTP-запроса
Отправка HTTP-запроса с возможностью задать любые HTTP-заголовки. Получение данных является асинхронным. Для больших файлов возможно получение данных по частям.
Параметры запроса передаются в формате JSON.
- callback - название функции, которая выполнится после выполнения запроса (параметры чуть ниже)
- progress - название функции прогресса для получения данных по частям (параметры ниже)
- url - ссылка
- method - метод запроса (GET/POST и т.д.)
- data - тело запроса (если method == GET - то игнорируется)
- headers - заголовки. Это объект вида {ключ1: значение1, ключ2: значение2} или вида [{name: "ключ1", value: "значение1"}, {name: "ключ2", value: "значение2"}].
В качестве заголовков можно передавать следующие ключевые слова:
- Request-Timeout 60 - таймаут ожидания ответа в секундах
- Encode-Answer base64 - при передаче этого заголовка и значения base64 - ответ от функции будет передан в формате base64.
- Retry-Count 5 - количество повторных запросов при возникновении ошибок
Функции callback/progress должны принимать один параметр. Параметр - это объект со следующими полями:
- statusCode - код статуса ответа (-1/0 - если произошло исключение, 200, 404 и т.д)
- statusDescription - текст статуса ответа. Если исключение - то Exception.Message, в противном случае - Ok, Not Found и т.д.
- url - ссылка. Полезно, если при запросе произошло автоматическое перенаправление
- content - В progress-callback это часть полученных данных в HEX. В callback - это тело запроса, если не указан progress-callback или null, если он указан
- headers - это объект вида {заголовок1: значение1, заголовок2: значение2}, содержащий заголовки ответа.
Ограничения:
- Не более 10 одновременных запросов
- Не более 5 МБ загруженных данных за один запрос
- requestcancel - отмена всех выполняющихся HTTP-запросов, отправленных с помощью функции request
Пример: alert("prs::" + prskey + "::requestcancel::ALL");
- get(requestcount) - получение количества HTTP-запросов, отправленных с помощью функции request, и выполняющихся в данный момент
Комплексный пример:
1. Перейдите с помощью команды "Переход" или любой другой на страницу, содержащую следующий код:
<script>
var req={callback: "requestcallback",
url: "https://google.com/",
method: "GET",
headers: {Referer: "https://google.com",
"User-Agent": "JetSwap",
"Retry-Count": "3",
"Encode-Answer": "base64"}
};
function requestcallback(arg)
{
alert("prs::" + prskey + "::debug::" + base64_decode(arg.content));
}
function base64_decode( data ) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
do {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1<<18 | h2<<12 | h3<<6 | h4;
o1 = bits>>16 & 0xff;
o2 = bits>>8 & 0xff;
o3 = bits & 0xff;
if (h3 == 64) enc += String.fromCharCode(o1);
else if (h4 == 64) enc += String.fromCharCode(o1, o2);
else enc += String.fromCharCode(o1, o2, o3);
} while (i < data.length);
return enc;
}
</script>
2. Добавьте после паузы, необходимой для полной загрузки вышеуказанной страницы, команду "Вставить скрипт" со следующим содержимым:
var prskey="<get(key)>"; var id=alert("prs::" + prskey + "::request::" + JSON.stringify(req));
- socketconnect - установка соединения с помощью сокета (дает возможность обмена любыми данными и с использованием любых протоколов, не только HTTP.
Протокол обмена данными реализуется рекламодателем)
В качестве разделителя параметров запроса используется точка с запятой - ";". Параметры:
- Host - имя домена или IP-адрес, с которым требуется установить соединение
- Port - номер порта
- Ssl - 0/1 - требуется ли установить защищенное соединение
- ConnectCallback - имя функции JavaScript, определенной пользователем, которая будет вызвана при установке соединения.
- RecvCallback - имя функции JavaScript, определенной пользователем, которая будет вызвана при получении данных через открытое соединение.
Функция возвращает ID соединения.
Функция JavaScript ConnectCallback принимает максимум два параметра.
- ID - ID подключения, выданный функцией socketconnect
- Error - текст ошибки. Присутствует только в случае если подключение завершено неудачно.
Функция JavaScript RecvCallback принимает следующие параметры:
- ID - ID подключения, выданный функцией socketconnect
- Text
- полученные данные в формате base64
- Error - текст ошибки. Присутствует только в случае возникновения ошибок приема-передачи данных, внезапного разрыва соединения и т.п.
Ограничения:
- Не более 20 одновременных запросов
- Не более 5 МБ общий размер очереди на передачу данных
- Не более 20000 байт размер одной строки для передачи
- socketsend - отправка данных через соединение, установленное с помощью команды socketconnect
В качестве разделителя параметров запроса используется точка с запятой - ";". Параметры:
- Id - ID соединения, выданный командой socketconnect
- Data - данные для отправки, задаются в формате base64
- socketclose - закрытие соединения, открытого с помощью команды socketconnect.
В качестве параметра передается ID соединения или ключевое слово ALL, означающее закрытие всех открытых с помощью команды socketconnect соединений.
- get(socketcount) - получение количества открытых сокетов в данный момент
Комплексный пример:
1. Перейдите с помощью команды "Переход" или любой другой на страницу, содержащую следующий код:
<script>
function onconnect(id,err)
{
if(err!="")
{
var txt='GET / HTTP/1.1\r\nHost: google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0\r\nAccept: */*\r\n\r\n';
txt=base64_encode(txt)
alert("prs::" + prskey + "::socketsend::" + id + ";" + txt);
}
}
function onrecv(id,text)
{
text=base64_decode(text)
alert("prs::" + prskey + "::debug::" + text);
}
function base64_encode( data ) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
do { // pack three octets into four hexets
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);
bits = o1<<16 | o2<<8 | o3;
h1 = bits>>18 & 0x3f;
h2 = bits>>12 & 0x3f;
h3 = bits>>6 & 0x3f;
h4 = bits & 0x3f;
// use hexets to index into b64, and append result to encoded string
enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);
switch( data.length % 3 ){
case 1:
enc = enc.slice(0, -2) + '==';
break;
case 2:
enc = enc.slice(0, -1) + '=';
break;
}
return enc;
}
function base64_decode( data ) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
do {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1<<18 | h2<<12 | h3<<6 | h4;
o1 = bits>>16 & 0xff;
o2 = bits>>8 & 0xff;
o3 = bits & 0xff;
if (h3 == 64) enc += String.fromCharCode(o1);
else if (h4 == 64) enc += String.fromCharCode(o1, o2);
else enc += String.fromCharCode(o1, o2, o3);
} while (i < data.length);
return enc;
}
</script>
2. Добавьте после паузы, необходимой для полной загрузки вышеуказанной страницы, команду "Вставить скрипт" со следующим содержимым:
var prskey="<get(key)>"; var id=alert("prs::" + prskey + "::socketconnect::google.com;443;1;onconnect;onrecv");
- text - имитация ввода текста с клавиатуры.
Параметры имеют вид form;element;text<модификаторы>, где form и element - идентификаторы или номера формы в документе, а также элемента в пределах этой формы. text - тест для ввода.
Без модификаторов будет выполнен такой код (будет просто установлен заданный текст, без имитации его ввода): document.forms[form].elements[element].value=text;
Модификаторы:
-
<native> - имитация ввода текста. При этом устанавливается фокус на элемент, заданный параметрами form и element.
Например, при таком HTML-коде: <form name=theform><input name=text1></form> и параметрах <native>theform;text1;test фокус получит текстовое окно с именем text1 и
форма с именем thefrom, после чего будет произведена имитация ввода текста "test" в это текстовое окно.
У каждого экземпляра SafeSurf есть индивидуальная скорость ввода текста для имитации разных пользователей - кто-то текст вводит быстрее, а кто-то медленнее. Если вам нужна определенная скорость ввода текста, вы можете ее задать с помощью функции изменения скорости пользовательского ввода
- <nofocus> - не обрабатывать элементы form и element, а сразу ввести указанный текст. Предполагается, что элемент для ввода был заранее выбран. <nofocus><native>;;test - текст "test"
будет введен в заранее выбранный с помощью функции JavaScript focus() элемент.
- <global> - глобальная отправка событий клавиатуры. Рекомендуется применять только при вводе текста во флеш-баннеры, в противном случае не имеет смысла. Действует только при включении реального использования мыши и клавиатуры Фокус на элемент флеш-баннера можно установить с помощью команды "Клик по координатам"
- <callback(script)> - код, заданный в качестве параметра script, будет выполнен после завершения имитации ввода текста.
- <char> - ввод одного символа с возможностью задать клавиши-модификаторы Shift, Ctrl, Alt. В этом случае параметр text будет состоять из символа, который нужно ввести, а также модификаторов, например:
Ctrla - аналог комбинации клавиш Ctrl+A - выделит весь текст в выбранном текстовом поле. Если нужно ввести только символ, то достаточно указать только его.
В данный момент с модификатором Shift разрешены любые символы, с модификатором Ctrl разрешен только Ctrla, c модификатором Alt символы запрещены. Для включения дополнительх комбинаций клавиш обратитесь к администрации с обоснованием необходимости их включения.
Указание фрейма, в котором должен быть выполнен данный код, поддерживается.
Доступен вызов функции не только с помощью JavaScript, но и из команды презентации "Ввод текста"
Пример: alert("prs::" + prskey + "::text::<native><callback(document.forms['form'].submit();)>form;text;Тест");
Данный пример имитирует ввод с клавиатуры слова Тест в элемент с именем text формы form, затем отправит эту форму на сервер, вставив код document.forms['form'].submit(); в документ.
- Пример динамической настройки - выполнение блоков команд
Этот пример показывает, как можно настроить презентацию, чтобы в зависимости от некоторых условий выполнялись не все заданные команды, а только часть из них. В данном случае, 20% посетителей посмотрят 2 страницы сайта, 50% посетителей посмотрят 4 страницы, а оставшаяся часть - 3 страницы, причем зайдет не на первую страницу, а на случайно выбранную. В зависимости от выбранной группы также изменяется состав рефереров, с которыми будет входить посетитель на первую страницу.
Для настройки динамической презентации далеко не всегда нужно обладать специальными знаниями в программировании, вполне можно использовать готовые шаблоны.
В настройках сайта установите:
- Первая страница - about:blank
- Общее время показа всей презентации - 60 секунд
- Время показа первого сайта - 1 секунда.
- Переключатель режима презентации - в положение "Показ страниц разных сайтов"
- Переключатель реферера - в положение Передавать реферер по заказу на первую страницу, на остальные - текущую страницу в браузере как реферер
- Первая команда "Вставить скрипт", время показа 60 секунд, параметры: var prskey="<get(key)>"; <dls(http://regjet.ru/prscript.js)>
Это все, что нужно настроить для динамической презентации! Вся остальная логика работы презентации заложена в скрипте http://regjet.ru/prscript.js - вы можете скачать его по этой ссылке и изменить для собственных нужд.
Примечание 1: для настройки презентации, чтобы исключить кэширование, установите параметры команды вставки скрипта var prskey="<get(key)>"; <dls(http://regjet.ru/prscript.js?nocache=<rndr(1:999999)>)>
Примечание 2: about:blank некорректно работает с русским текстом. Если вам требуется использование опрераций с русским текстом, то вначале нужно осуществить редирект на страницу в кодировке кириллица windows (windows-1251), а затем уже вставлять скрипт, при этом для вставки скрипта следует задать большее время, чтобы успел выполниться редирект. Можно разместить скрипт прямо на этой странице, тогда он начнет работу сразу же после загрузки, однако ему нужно будет передать ключ презентации и скрипт должен корректно обрабатывать отсутсвие этого ключа (если ключ еще не передан).
- Общие функции вставки случайного текста
В режиме презентации предусмотрено несколько фунций вставки случайного текста. Они действуют на все параметры всех команд, также их можно использовать в поле "Реферер по заказу". Происходит это так: вы вставляете в нужном месте текста функцию, а в процессе показа презентации она будет заменена на случайный текст в соответствии с настройками.
- Случайный набор символов заданной длины
Функция вида <rnd(A:B)> выдает случайную последовательность символов длины A из заданного алфавита B. Имеется также ряд предустановленных алфавитов (т.е. не нужно вводить абвгде... а вместо этого можно ввести только #r):
- #n - цифры от 0 до 9
- #c - латинские буквы от a до z
- #C - латинские буквы от A до Z
- #r - русские буквы от а до я
- #R - русские буквы от А до Я
- #! - спецсимволы ~`@#$%^&*();"':/?<>.,[]{}|\-_
Примеры:
- <rnd(3:#n)> выдаст 485 (любое трехзначное число)
- <rnd(5:#c#C)> выдаст HdoIW (набор из пяти случайных латинских символов в верхнем и нижнем регистре)
- <rnd(32:#nabcdef)> выдаст 7215ee9c7d9dc229d2921a40e899ec5f (такой набор символов выдает функция md5)
- <rnd(4:#C#C#C#c)> выдаст WdOF (в этом наборе из четырех случайных латинских символов появление символов в верхнем регистре в три раза более вероятно, чем в нижнем)
- Введите http://forum.jetswap.com/viewtopic.php?t=1<rnd(3:#n)> в реферере по заказу, чтобы имитировать переход на ваш сайт с разных страниц форума JetSwap
- Введите http://forum.jetswap.com/viewtopic.php?t=1<rnd(3:#n)> в команде "Переход", чтобы автоматически переходить на случайные страницы форума JetSwap.
- Выбор из набора вариантов
Функция вида <rndt(value!!value!!value!!value...)> выдает случайное значение value из списка вариантов, разделенных !! (двумя восклицательными знаками).
Примеры:
- <rndt(Yandex!!Rambler!!Google)> может выдать слово Google.
- Введите http://www.jetswap.com/<rndt(index!!news!!adv!!rek!!r!!pr)>.htm в команде "Переход", чтобы произошел переход на одну из страниц: http://www.jetswap.com/index.htm, http://www.jetswap.com/news.htm и т.д.
- Случайное число с ограничением минимума и максимума
Функция вида <rndr(Min:Max)> выдает случайное число от Min до Max
Например, <rndr(10:99)> может выдать число 39 (любое число от 10 до 99 включительно).
- Тестирование режима презентации
Режим презентации предлагает вам очень гибкую настройку показа ваших сайтов. Но при этом является весьма сложным инструментом, поэтому для достижения наилучших результатов мы рекомендуем вам протестировать сделанные вами настройки. Для вас мы подготовили специальную программу, которая вам покажет весь процесс презентации именно так, каким его увидят посетители.
- Установите программу SafeSurf
- Запустите программу prtest.exe, входящую в состав SafeSurf. Ее можно запустить как из папки с программой SafeSurf, так и из меню "Пуск" при использовании установщика SafeSurf. Программа должна иметь сетевой доступ и запускаться от администратора.
- Нажмите на картинку в списке сайтов для нужного вам сайта. Такая картинка появляется только при включенном режиме презентации!
- Скопируйте полученный на странице код в текстовое окно программы (около которого написано "Введите код для начала теста:") и нажмите кнопку "Пуск".
- Пример настройки презентации
Видеоролик, наглядно демонстрирующий основные приемы настройки презентации.
В данном разделе описана возможность выполнения команд презентации во фреймах. Обычно команды презентации вставляются в основную загруженную страницу и работают там же. Если страница содержит вложенные фреймы, то вставка, к примеру, команды "Поиск ссылки" не найдет ссылки, содержащиеся во фрейме. Этого можно избежать, если вставлять команду во фрейм.
Список команд, поддерживающих вставку во фрейм: Поиск ссылки, Ввод текста, Отметить флажок, Отправить форму, Отправить Событие, Вставить скрипт.
Чтобы команда была вставлена во фрейм, нужно в параметре соответствующей команды в любом месте указать функцию вида <frame(идентификатор1!!идентификатор2!!идентификатор3...)>
Указание нескольких идентификаторов, разделенных !! (двумя восклицательными знаками), позволяет получить доступ к вложенным фреймам, т.е. если в главном документе содержится один фрейм, а в этом фрейме содержатся еще два фрейма, из которых нам нужен второй,то функция примет вид <frame(0!!1)> (нумерация фреймов начинается с нуля)
Идентификатор может принимать следующие значения:
- Число - номер фрейма (на текущем уровне вложенности), начинающийся с нуля. При вводе команды <frame(5)> будет найден шестой по счету фрейм документа.
- url=URL, где вместо URL нужно ввести часть адреса, которая должна содержаться в искомом фрейме. При вводе команды <frame(url=jetswap)> будет найден к примеру такой фрейм: <iframe src=http://www.jetswap.com>
- url==URL, где вместо URL нужно ввести точный адрес (совпадающий по каждому символу) искового фрейма. При вводе команды <frame(url==http://www.jetswap.com/)> будет найден ТОЛЬКО такой фрейм: <iframe src=http://www.jetswap.com/>
- name=NAME, где вместо NAME нужно ввести часть имени искомого фрейма. При вводе команды <frame(name=fra)> будет найден к примеру такой фрейм: <iframe name=megaframe src=http://www.jetswap.com>
- name==NAME, где вместо NAME нужно ввести точное имя фрейма. При вводе команды <frame(name==megaframe)> будет найден ТОЛЬКО фрейм: <iframe name=megaframe src=http://www.jetswap.com>
Для изучения фреймовой структуры документа вы можете использовать такие средства, как дополнение для Firefox под названием Firebug, либо в нужный момент нажать на кнопку "Фреймы" в программе для тестирования презентации, и в окно протокола будут записаны результаты изучения фреймовой структуры.
Пример использования
Задача: нам нужно выполнить стандартную связку команд "Отправить событие" + "Поиск ссылки", чтобы кликнуть по ссылке <a href=http://www.jetswap.com onclick=click_handler()>Ссылка</a>, находящейся во фрейме <iframe name=frame2 src=http://www.jetswap.com/frame.php>. Мы точно знаем, что нам нужен фрейм с именем frame2 или URL http://www.jetswap.com/frame.php. Какой способ поиска фрейма использовать, в данном примере значения не имеет. Обе функции сработают одинаково: <frame(name==frame2)> или <frame(url=frame.php)>
Предпочтительнее использовать поиск по имени фрейма. Получаем команды:
- "Отправить событие" c параметрами <frame(name==frame2)>a;link;jetswap;click
- "Поиск ссылки" ЗАМЕНЯЕМ на "Вставить скрипт" c параметрами <frame(name==frame2)>top.location.href=hElsolast.href;
Обратите внимание! Если использовать стандартную функцию "Поиск ссылки" с параметрами last;0, то переход по ссылке произойдет в тот же фрейм, в котором находится ссылка, а это в большинстве случаев будет нежелательно.
|
|
|