Страницы: 1
Поставить АД блок и срезать всю лишнюю бяку
Это хороший вариант, как минимум всякие гугл-переводчики выключить можно. Но саму рекламу я хочу оставить, что бы бот время от времени по ней кликал, тем самым принося доход владельцу сайта, который делится этим доходом (на заметку тем, кто собирает криптовалюту).
совет выше, + сделай цикл, который будет проверять - залогинился ты или нет, т.к. форма авторизации должна смениться на что-то типа "ваш ник" и "выход"
Проверка есть, просто не выкладывал сюда.
В итоге проблему решил, просто разделив макрос на две части:
iimPlayCode('SET !TIMEOUT_PAGE 20\nURL GOTO=http://site.tam/\n'); var z = iimPlayCode(TAG POS=1 TYPE=H2 ATTR=TXT:name*'); if(z > 0){ iimPlayCode('логинимся'); }
PRESIDENT, InfSub, благодарю за помощь :)
…Всем привет.
Прошу помощи в разрешении маленькой, но очень назойливой проблемы.
В общем такая ситуация, мой скрипт работает с прокси. Он должен залогинится на сайте, предварительно проверив загрузился ли сам сайт. В моём случае, он просто проверяет наличие заголовка - если есть заголовок с определённым содержимым, то можно логинится...
Проблема в том, что из-за сторонних скриптов (например, из-за рекламных баннеров) страница не всегда успевает прогрузится за отведённый ей таймаут, и мой скрипт пропускает шаг авторизации, несмотря на то, что искомый заголовок и форма для логина уже загрузились.
Мой код:
var z = iimPlayCode('SET !TIMEOUT_PAGE 20\nURL GOTO=http://site.tam/\nTAG POS=1 TYPE=H2 ATTR=TXT:name*') if(z == 1){ iimPlayCode('логинимся'); }
vitoff пишетЧто попадёт в s при втором проходе.
поместив генерацию рандомного числа в цикл, вы так ж получите каждый раз рандомное число, без eval()
Это мне известно. Просто не хочу макросы лепить в цикл, а рандомное число - это часть макроса. С паузой я разберусь, спасибо за варианты. Это сейчас не главная часть самолёта.
Проблема же была и остаётся в другом - прерывание паузы после перезагрузки страницы. Допустим у меня есть код:
А страница обновляется через 300 сек, таким образом, вторая команда начнёт выполнение не через 500 сек, а раньше. Насколько раньше это произойдёт, зависит от TIMEOUT_PAGE (по умолчанию 300 + 60).
iimPlayCode('WAIT SECONDS=500');
iimPlayCode('WAIT SECONDS=360');
iimPlayCode('сейчас здесь такое произойдёт');
При чём TIMEOUT_PAGE к паузе.
При том, что он прерывает паузу.
Я тебе дал готовый код, что ты ещё выдумываешь.
И где там диапозон от 310 до 320сек?
EVAL используется для запуска JS кода в iim-е
Так организован мой скрипт и это не преступление. Я предпочитаю макросы хранить в отдельных переменных и в технической части работать исключительно с переменными. Так проще разобраться в скрипте и адаптировать него для других нужд.
Отвечая на бредятину, если рандомное число будет генерироваться вне цикла (который работает только с переменными), это число сгенерируется только один раз и не будет переопределяться в дальнейшем, следовательно генерировать его нужно в самом макросе...
И пиши уже на JS, хватит этого извращения на iim.
Я пишу на .js:
pauseLong = 'CODE:SET !VAR2 EVAL(\"var randomNumber=Math.random() * (320 - 310) + 310; randomNumber;\")\n'; pauseLong += 'SET !TIMEOUT_PAGE 10\n'; pauseLong += 'WAIT SECONDS={{!VAR2}}\n';
При чём тут это время загрузки страницы TIMEOUT_PAGE
Если убрать TIMEOUT_PAGE, то при обновлении страницы он всё равно будет инициирован со значением по умолчанию (60сек), в результате чего, рандомная пауза будет проигнорирована и следующая команда начнёт выполнение не через 10 сек (как у меня), а через 60, что ещё хуже.
Объясню подробнее. На сайте (биткоин кран), после получения бонуса, идёт отсчёт 300сек, после чего страница автоматически обновляется и можно получить следующий бонус. И, как не крути, во время обновления страницы стартует TIMEOUT_PAGE - либо который задаю я, либо которы
…vitoff пишетесть ли такие команды, которые заставят/запретят imacros ждать окончания загрузки страницы, может они помогут?
SET !TIMEOUT_PAGE x - время ожидания загрузки страницы (знач по умолчанию 60)
SET !TIMEOUT_STEP x - время ожидания загрузки элемента на странице (знач по умолчанию 10)
SET !ERRORIGNORE YES - игнор ошибок (например, игнорирование ошибки о том что страница не загрузилась, при использовании timeout)
Игнором пользовался и раньше, а вот эта штука SET !TIMEOUT_PAGE x очень помогла. Всё как бы работает, но остались вопросы.
В общем, мне нужно сделать рандомную паузу. Делаю так:
SET !VAR1 EVAL(\"var randomNumber=Math.random() * (320 - 310) + 310; randomNumber;\") SET !TIMEOUT_PAGE 10 WAIT SECONDS={{!VAR1}} следующая команда...
vitoff
читаем фак по имакросу на форуме, там есть описание, как имакрос работает с вкладками, в том числе из js
Если вы об этом: https://forum.mozilla-russia.org/viewto … 34#p682034, информация оказалась полезной. Спасибо.
vitoff пишетпосле которого закрывается текущая (первая) вкладка. В итоге открытой остаётся вторая вкладка - страница подтверждения публикации в твитере. В общем не то
скрытый текстА ну тогда тебе наоборот нужно закрыть все вкладки, кроме текущей.
Предложенный вами код работает так же, как и мой - через раз. Первый раз всё проходит нормально, а второй раз, после клика, запускается таймаут 60 сек и вкладка закрывается после него.
Код ошибки между шагами - 802. Возможно, эта ошибка возникает из-за того, что imacros не успевает загрузить страницу, которая открывается во второй вкладке, так как его тут же перебрасывает на первую. Я не знаю, есть ли такие команды, которые заставят/запретят imacros ждать окончания загрузки страницы, может они помогут?
vitoff
скрытый текстВыделить кодКод:
iimPlay('CODE:ONDIALOG POS=1 BUTTON=OK CONTENT=\nFRAME F='+i+'\nTAG POS=1 TYPE=SPAN ATTR=ID:l'); ... iimPlay('CODE:ONDIALOG POS=1 BUTTON=OK CONTENT=\nTAB CLOSE');
Не хочет этот код закрывать вторую вкладку. Пожалуй стоит объяснить механику действий, она там странная.
Например, чтобы зашарить на фейсбук, пользователь кликает по соответствующей кнопке - его перебрасывает на вторую вкладку, где он должен подтвердить публикацию на своей стене в фейсбук. Подтвердив публикацию, вкладка закрывается и исходному сайту идёт ответ от сервера, что публикация размещена, в результате чего, на исходном сайте появляется алерт ОК.
С твитом дела обстоят иначе. Здесь почему-то не нужно подтверждать публикацию на стене, то есть сам клик уже присылает ответ серверу, что публикация размещена. Получается следующая картина - после клика, открывается вторая вкладка, где нужно подтвердить размещение на стене, но поскольку уже пришёл полож
…vitoff пишетНо вы поменяли местами клик по элементу (Tweet) и клик по алерту (ОК) и это не работает.
если бы вы посмотрели пример, увидели бы, что только так - оно и работает, если не работает у вас - ищите ошибку
Действительно работает, но только как самостоятельная команда. А мне ещё нужно вторую вкладку закрыть. Если добавляю
vitoff пишет!TIMEOUT_STEP 0 не помогает
а какое отношение, эта команда, имеет к заданному вами вопросу?
Просто на последнем этапе, несмотря на то, что вторая вкладка закрыта (выполнен шаг 3), идёт таймаут (по умолчанию 60сек.), а мне нужно, что бы скрипт продолжил выполнение (в примере только часть скрипта).
может быть, вы, все же прочтете офф. вики и посмотрите пример, приведенный там же? Для того, например, чтобы понимать где и каким образом должна располагаться данная команда (ONDIALOG)?
Попробую разобраться, спасибо.
vitoff пишетiimPlay(WAIT SECONDS=2);
В этих командах ошибка
iimPlay('CODE:
WAIT SECONDS=2
'
);
И твоя пробл
…
перевести ошибку не пробовали?
Я понимаю содержимое ошибки.
страница выдала запрос, на который и ругается iMacros
Мне не совсем понятно почему он реагирует ещё на какой-то запрос страницы, если единственной задачей был клик, с которой он уже справился?
RTFM по ONDIALOG и поиск по данной ветви форума по этой же команде
Потому и зарегистрировался, что не нашёл ответа в ветке, а с англодокументацией, боюсь, у меня возникнут проблемы.
InfSub, спасибо за отклик, но проблема ещё актуальна.
Если углубиться в её суть, то речь идёт о нескольких шагах:
1. Клик (tweet)
2. Закрыть алерт (ОК)
3. Закрыть вторую вкладку
Об ошибке первого шага я уже рассказал, если выполнить все три, то ошибка возникает на последнем этапе - 802:
Page loading timeout, URL: http://www.robotcoingame.com/, line 1 (Error code: 802)
Кстати, адрес, о котором идёт речь.
Всем привет! Прошу помощи в разборе ошибок imacros.
Для наглядности сократил свой скрипт до одной строки:
RuntimeError: unhandled alert dialog detected. Dialog message: "Please actually share your tweet! Thanks and enjoy the 10% bonus attack!", line 2 (Error code: -1450)
Собственно вопрос: зачем imacros производит дополнительные манипуляции и как это пресечь?
Буду признателен за помощь.
Страницы: 1