Как сделать переход по вкладкам в html


Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html



Только для читателей Lifeexample возможно на Moguta.CMS со скидкой в 15%

||

21.01.2013

iMacros: команды, скрипты, примеры

Здравствуйте, уважаемые читатели блога , хочу познакомить вас с одним удивительным инструментом веб мастера, хакера, и простого пользователя, встречайте: плагин iMacros для браузера Mozila Firefox.

iMacros позволяет записать любую последовательность действий человека на сайте в макрос.

Макроспрограммный код хранящий порядок необходимых к автоматическому выполнению.

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

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

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

Начав заниматься написанием скриптов для автоматического размещения информации на чужом сайте, я выбрал путь с использованием возможностей библиотеки CURL на php, но вскоре столкнулся с рядом проблем, обход которых не представлялся возможным, пользуясь лишь серверным языком. Малейшее использование JavaScripta в системе авторизации сайта ставило бота в тупик.

Гуляя по просторам интернета, с целью найти решение для обхода защиты использующей Javascript, я нашел инструмент, с помощью которого можно сделать бота эмулирующего любое действие человека, и этим инструментом явился плагин iMacros для браузера Mozila Firefox.

iMacros, как сделать первый макрос

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

плагин iMacros

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

Для записи наших действий перейдем во вкладку запись и нажмем на одноименную кнопку. После чего откроем сайт yandex.ru и введем любой поисковый запрос, например: "", нажмем кнопку найти. Завершим запись действий, нажав на кнопку стоп в панеле iMacros.

Полученные в ходе наших действия команды iMacros сохраняет в файл #Current.iim. Чтобы воспроизвести их дважды кликнем на макрос #Current.iim, после чего iMacros должен произвести ряд записанных команд:

1
2
3
4
5

VERSION BUILD=7601105 RECORDER=FX
TAB T=1
URL GOTO=http://www.yandex.ru/
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://yandex.ru/yandsearch ATTR=ID:text CONTENT= "Бесплатная CMS для интернет магазина Moguta"
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:form ATTR=VALUE:Найти

пример макроса iMacros

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

Команды iMacros на русском языке

Целью данной статьи стоит описать команды iMacros на русском языке, т.к. в интернете информации очень мало. Из действительно полезных источников, рассказывающих об iMacros на русском, я встретил только .

Прочитав данный форум, я собрал список часто задаваемых вопросов и часто используемых команд iMacros.

Я думаю каждый, кто имеет цель написать хоть чуточку полезный макрос, первым делом задаст себе следующие вопросы:

Как запустить iMacros автоматически на Windows

Ответ: Создать файл с расширением .bat открыть в блокноте и сохранить в него строку:

1

start firefox "C:\Program Files\Mozilla Firefox\firefox.exe" http://run.imacros.net/?m=#Current.iim.

После чего макрос будет выполняться при запуске созданного файла. Для полной автоматизации, можно прописать его в планировщик задач windows.

Как запустить iMacros автоматически на Unix

Ответ: без комментариев, линуксоводы поймут:

1
2
3
4
5

#!/usr/bin/python
import imacros
iret = imacros.iimInit("-fx", True)
iret = imacros.iimPlay("CODE:URL GOTO=http://www.iopus.com")
iret = imacros.iimExit()

Как запустить iMacros из PHP

Ответ: используя класс COM:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

<?php
     $iim1 = new COM("imacros");
     $s = $iim1->iimInit("-runner");
     
     $s = $iim1->iimSet("-var_keyword", $_GET["keyword"]);
     $s = $iim1->iimPlay($_GET["macro"]);
     
     echo "iimplay=";
     echo $s;
     echo "extract=";  
     echo $iim1->iimGetLastExtract;
     
     $s = $iim1->iimExit();
?>

Разобравшись с автозапуском, приходит понимание, что для макроса со сложной задачей, необходимо научиться использовать циклы. В iMacros циклы предусмотрены, но пользоваться ими слишком неудобно.

iMacros команда для задания цикла

1

SET !LOOP n

Слева снизу iMacros’а есть надпись "Повторить макрос", под ней поле "Макс:", там нужно ввести количество итераций цикла.

Поскольку с такой реализацией циклов далеко не уедешь, нужно искать альтернативу, и альтернатива в iMacros действительно есть. Плагин iMacros для браузера Mozila Firefox, имеет потрясающую возможность использовать управляющий JavaScript файл, именно эта способность окончательно разбило мое сердце и влюбила меня в iMacros.

Как сделать управляющий js-файл

Управляющий JavaScript файл — это ни что иное как обычный скрит на JS, Пример управляющего файла из демонстрационных скриптов iMacrosa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

MyPosts = new Array();
MyPosts.push("307");
MyPosts.push("2615");
MyPosts.push("1147");
MyPosts.push("3201");
MyPosts.push("3360");
iimDisplay("Array/iimSet Demo");
for (i = 0; i < MyPosts.length; i++) {
    iimSet("POSTID", MyPosts[i]);
    retcode = iimPlay("CODE:URL GOTO=http://forum.iopus.com/viewtopic.php?f=11&t={{postid}}\n");
    if (retcode < 0) {              // an error has occured
        errtext = iimGetLastError();
        alert(errtext);
        break;
    }
}
iimDisplay("Script completed.");

Можно заметить несколько непривычных web-программисту функций, в данном скрипте, являющимися командами для iMacros:

  • iimSet(«POSTID», MyPosts[i]); — передает в макрос переменную "POSTID", со значением MyPosts[i];
  • iimPlay(«CODE:URL GOTO=http://forum.iopus.com/viewtopic.php?f=11&t={{postid}}\n»); — приводит команду макроса в выполнение, кроме того данной командой можно запустить готовый макрос iimPlay(«JS/login»,60);
  • iimGetLastError(); — Возвращает текст ошибки;
  • iimDisplay(«Script completed.»); — Выводит сообщение в консоль iMacros;

Научившись использовать команды iMacros внутри JavaScript, можно приступать к реализации любого бота, но практически сразу встанет вопрос: "как передать данные из текстового файла в макрос?".

iMacros команда для чтения CSV файла

В iMacros встроен свой парсер CSV файлов, что явно прощает жизнь программистам. Чтобы прочитать содержимое CSV нужно выполнить следующий список команд:

1
2
3
4
5
6
7
8

CMDLINE !DATASOURCE SET !DATASOURCE C:\users.csv
SET !DATASOURCE_COLUMNS 4
'Начало со второй строки, минуя заголовки. '
SET !LOOP 2
'Увеличения счетчика строк спомощью цикла LOOP'
SET !DATASOURCE_LINE {{!LOOP}}
'Далее Непосредственно сами команды цикла'
URL GOTO=http://www.testdomain.com/form.php

По умолчанию, макрос считывает CSV в формате в котором разделителями являются просто запятые. Иногда может потребоваться использоват альтернативный разделитель например в виде точки с запятой. В этом случае нужно выполнить команду:

1

SET !DATASOURCE_DELIMITER ;

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

Приведенный выше кусок макроса выполнится столько раз, сколько указано в поле "МАКС".

циклы в iMacros

Согласитесь это не очень удобно, если после цикла нужно выполнить другие действия, или же новый цикл.

Как организовать полноценный алгоритм на iMacros, с чтением из CSV я покажу на практическом примере, но чуть позже, а пока хочу представить вашему вниманию функцию по возврату значения переменной обратно в JavaScript.

Как получить данные обратно в JS

Функция iimGetLastExtract() позволяет получить переменные из макроса в javascript, но работает она при условии, что в самом макросе существует команда

1

ADD !EXTRACT

отдающая какое либо значение:

1
2
3

ADD !EXTRACT {{VAR1}}
ADD !EXTRACT {{VAR2}}
ADD !EXTRACT {{VAR3}}

В данном случае из макроса возвращается три переменные, каждая из которых будет доступна следующими вызовами в JS:

1
2
3

var var1 = iimGetLastExtract(1);
var var2 = iimGetLastExtract(2);
var var3 = iimGetLastExtract(3);

Иногда требуется задать значение переменной используя javascript прямо в макросе, для этого предусмотренна команда EVAL:

1
2

SET !VAR1 EVAL("Math.floor(Math.random()5 + 1);")
WAIT SECONDS={{!VAR1}}

Этим кодом в переменную {{!VAR1}} попадает случайное число сгенерированное на JS командой EVAL. Кстати обратите внимание, тут мы использовали еще одну новую iMacros команду: WAIT, задающую время ожидания перед выполнением следующего действия.

Не исключителен случай, когда страница на одном из сервисов, для которого написан макрос, изменит свою структуру , и тогда при выполнении iMacros выкинет ошибку.

Чтобы iMacros игнорировал ошибки, нужно прописать команду:

1

SET !ERRORIGNORE YES

Еще несколькими полезными командами в iMacros может явиться понижение скорости выполнения макроса:

1

SET !REPLAYSPEED SLOW

И отключение картинок

1

FILTER TYPE=IMAGES STATUS=ON

Ну вот и пришло время окунуться в практику, и написать несколько несложных управляющих JavaScript файлов:

Сохранить капчу сайта на локальный диск

Перед использованием надо создать папку c:\imacros и обновить плагин imacros до последней версии. Без обновления могут вылетать ошибки.

1
2
3

URL GOTO=http://yoursite.ru
ONDOWNLOAD FOLDER=c:\imacros FILE=capcha.png WAIT=YES
TAG POS=1 TYPE=IMG ATTR=SRC:http://yoursite.ru/captcha/ CONTENT=EVENT:SAVEPICTUREAS

Примечание: данным методом можно сохранять статичные картинки, для генерируемых автоматически, как в случае с капчей, нужно использовать событие SAVE_ELEMENT_SCREENSHOT введенное с версии 7.2.0.8. iMacros
Должно получиться так:

1
2
3

URL GOTO=http://yoursite.ru
ONDOWNLOAD FOLDER=c:\imacros FILE=capcha.png WAIT=YES
TAG POS=1 TYPE=IMG ATTR=SRC:http://yoursite.ru/captcha/ CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT

iMacros выполнение JS внутри макроса

1
2

SET !VAR1 EVAL("var content='текст'; content;")
PROMPT {{!VAR1}}

iMacros практические примеры

  1. Создадим макрос, получающий первый заголовок из выдачи yandex.ru по запросу "Moguta CMS.":

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    var macros;
    var retcode;
    var s_n = "\n";
    var getExtract;
    var search = "moguta+CMS" //вместо пробелов используйте знак '+'
    macros = "CODE:SET !EXTRACT_TEST_POPUP NO"+s_n;
    macros += "URL GOTO=http://yandex.ru/yandsearch?text="+search+s_n;
    macros += "TAG POS=2 TYPE=A ATTR=class:b-serp-item__title-link EXTRACT=TXT"+s_n;
    retcode = iimPlay(macros);
    getExtract = iimGetLastExtract(1);
    alert(getExtract);

  2. Теперь сделаем цикл и выведем список 10 заголовков:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    var macros;
    var retcode;
    var s_n = "\n";
    var getExtract;
    var search = "moguta+CMS" //вместо пробелов используйте знак '+'
    for (i=1; i<=10; i++) {
        macros = "CODE:SET !EXTRACT_TEST_POPUP NO"+s_n;
        macros += "URL GOTO=http://yandex.ru/yandsearch?text="+search+s_n;
        macros += "TAG POS="+i+" TYPE=A ATTR=class:b-serp-item__title-link EXTRACT=TXT"+s_n;
        retcode = iimPlay(macros);
        getExtract += iimGetLastExtract(1)+s_n;
    }
    alert(getExtract);

  3. Усложним задачу, создадим CSV файл, в котором укажем три поисковых запроса, разделив из точкой с запятой. Вот так будет выглядеть CSV:

    1
    2

    imacros команды;imacros скрипты;imacros на русском;
    moguta CMS;lifeexample.ru;могута;

    И напишем макрос который выведет список топовых заголовков, занимающих первую позицию, по этим запросам.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

    var macros;
    var retcode;
    var s_n = "\n";
    var getExtract="";
    var columns = 3; //количество колонок csv
    var rows = 2; //количество строк csv
    for (j = 1; j <= rows; j++) {
        for (i = 1; i <= columns; i++) {
            macros = "CODE:SET !EXTRACT_TEST_POPUP NO"+s_n;
            macros += "SET !DATASOURCE_DELIMITER ;"+s_n;
            macros += "CMDLINE !DATASOURCE test.csv"+s_n;
            macros += "SET !DATASOURCE_COLUMNS "+columns+s_n;
            macros += "SET !LOOP "+j+s_n;
            macros += "SET !DATASOURCE_LINE {{!LOOP}}"+s_n;
            macros += "URL GOTO=http://yandex.ru/yandsearch?text={{!COL"+i+"}}"+s_n;
            macros += "TAG POS=1 TYPE=A ATTR=class:b-serp-item__title-link EXTRACT=TXT"+s_n;
            retcode = iimPlay(macros);
            getExtract += iimGetLastExtract(1)+s_n;
        }
    }
    alert(getExtract);

    Обратите внимание, что файл test.csv, должен лежать в директории C:\Users\user\Documents\iMacros\Datasources , или необходимо указать абсолютный путь до файла C:\test.csv

  4. Пример с передачей переменных, одного макроса в другой. Сначала берем макросом данные из CSV, затем передаем их в JS, и после обработки отдаем на растерзание всем макросам из списка.
    Содержание исполняемого JS файла.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28

    var macros;
    var retcode;
    var s_n = "\n";
    var getExtract="";
    macros = "CODE:SET !EXTRACT_TEST_POPUP NO"+s_n;
    macros += "SET !DATASOURCE_DELIMITER ;"+s_n;
    macros += "CMDLINE !DATASOURCE test.csv"+s_n;
    macros += "SET !DATASOURCE_COLUMNS "+columns+s_n;
    macros += "SET !LOOP "+1+s_n;
    macros += "SET !DATASOURCE_LINE {{!LOOP}}"+s_n;
    macros += "ADD !EXTRACT {{!COL1}}"+s_n;
    macros += "ADD !EXTRACT {{!COL2}}"+s_n;
    retcode = iimPlay(macros);
    var COL1 = iimGetLastExtract(1);
    var COL2 = iimGetLastExtract(2);
    alert(COL1);
    alert(COL2);
    iimSet("VAR1", COL1);
    iimSet("VAR2", COL2);
    i = iimPlay("JS/test",60);
    Содержание макроса JS/test.imm :
    VERSION BUILD=7601105 RECORDER=FX
    TAB T=1
    URL GOTO=http://yandex.ru/yandsearch?text={{!VAR1}}{{!VAR2}}&lr=2

На этом я закончу данную большую статью в которой мы узнали о том какие команды iMacros востребованы чаще остальных и написали несколько примеров макросов с использованием управляющих JS файлов.

Надеюсь данная статья про iMacros на русском, будет полезным материалом для создания ваших макросов, желаю успехов, если дополнения или вопросы, пишите в комментах.

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по или блога.


Источник: http://lifeexample.ru/jquery-javascript-primeryi/imacros-komandyi-skriptyi-primeryi.html


Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html

Как сделать переход по вкладкам в html

Новое на сайте: