2015-08-10 8 views
-1

Ищет способ решения reCAPTCHA с iMacros. Есть ли способ решить эту проблему, возможно ли это?iMacros для решения reCAPTCHA

Здесь вы можете найти демо: google.com/recaptcha/api2/demo

Оно не должно быть идеальным, это просто было бы здорово, если можно решить 2 из 30 каптч.

спасибо.

+0

Я имею в виду, конечно, конечно, это возможно, но почему вы хотели бы сделать это в любом случае? –

+0

Я могу сэкономить столько времени, когда он работает при создании ссылок bit.ly. Я нашел способ работать с iMacro, но цитата плохая 3 из ~ 80 работ (этот сервис captcha чрезвычайно сложный.). Я все еще оптимизирую его, тогда я выложу окончательный код здесь. –

+0

Ох, я вижу сейчас. –

ответ

0

Тир этот код, но Google действительно подозревает, что это бота:

VERSION BUILD=9052613 
TAB T=1 
TAB CLOSEALLOTHERS 
' you need to insert get other url where ReCaptcha is located. 
URL GOTO=http://tarex.ru/testdir/recaptcha/recaptcha.php 
SET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*5 + 1); randomNumber;") 
WAIT SECONDS={{!VAR1}} 
FRAME F=1 TAG POS=1 TYPE=SPAN ATTR=ID:recaptcha-anchor 
0

Пример с imacros (Firefox) для рекапчи (API2 демо) в JavaScript и JQuery:

Файл: recaptcha_v2.js

// 
 
// The script fill the captcha of recaptcha v2 demo. 
 
// 
 
// Note for users with firefox with the message "Firefox prevented this page from automatically reloading.": 
 
// UNCHECK the option "warn me when pages try to redirect" in your browser 
 
// You find the checkbox under Options > Advanced > General > Accessibility 
 
// 
 
// Please set your browser language to english! (EN) 
 
// 
 

 
// Loops 
 
var max_loop = 1; 
 

 
// Url 
 
var myurl = "URL GOTO=https://www.google.com/recaptcha/api2/demo\n"; 
 
myurl += "";//extra lines 
 

 
// Submit 
 
mysubmit = "TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:NoFormName ATTR=*\n"; 
 
mysubmit += "";//extra lines 
 

 
// Debug 
 
var breakOnError = false; 
 
var onBreakAlert = true; 
 
var logFile = true; 
 
var logFileName = 'iimLog.txt'; 
 
var max_loop_limit = 500; 
 

 
//Main 
 
var logFilePath = getiMacrosFolder('Logs')+'\\'+logFileName; 
 

 
//Performance for recaptchav2 
 
var start_frame_number = 0; 
 
var max_frame_number = 40; 
 

 
//JQuery 
 
var url_jquery = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"; 
 

 
// Step 1: Config for 9kw.eu for your apikey 
 
var apikey = ""; 
 

 
//And priority (prio 1-20) 
 
var prio = "1"; 
 

 
(function() { 
 
\t // Syntaxcheck: API Key, prio 
 
\t if(apikey.match(/^[a-zA-Z0-9]+$/) && apikey.length <= 50 && apikey.length >= 5){}else{alert_message("API Key \""+apikey+"\" is wrong.");return false;} 
 
\t var d = parseFloat(prio); if(d >= 0 && d <= 20){}else{alert_message("Prio \""+prio+"\" is not in the set range.");return false;} 
 

 
\t // only valid number 
 
\t if (/[^\d]/.test(max_loop)) { 
 
\t \t alert_message('Please enter a valid number for loop play'); 
 
\t \t return false; 
 
\t } 
 
\t 
 
\t max_loop = parseInt(max_loop); 
 
\t if(max_loop > max_loop_limit){ 
 
\t \t alert_message('Loop limit exceed (' + max_loop_limit + ') , edit the following variable to use your own limit.\n\nvar max_loop_limit = ' + max_loop_limit + ';'); 
 
\t \t return false; 
 
\t } \t 
 
\t 
 
\t for(var loop = 1; loop <= max_loop; loop++){ 
 
\t \t var function_code = ""; 
 
\t \t function_code = recaptchav2(); 
 
\t \t if(function_code == false && breakOnError == true){ 
 
\t \t \t return false; 
 
\t \t } 
 
\t } 
 
})(); 
 
//End 
 

 
// functions 
 
// recaptcha v2 
 
function recaptchav2(){ 
 
\t //header 
 
\t var imacros_header = "SET !EXTRACT_TEST_POPUP NO\n"; 
 
\t imacros_header += "SET !ERRORIGNORE NO\n"; 
 
\t imacros_header += "SET !TIMEOUT_PAGE 999\n"; 
 
\t imacros_header += "SET !TIMEOUT_STEP 999\n"; 
 
\t 
 
\t var imacros_first = "CODE:"+imacros_header+"TAB CLOSEALLOTHERS\n"; 
 
\t imacros_first += "TAB T=1\n"; 
 
\t imacros_first += myurl; 
 
\t iimPlay(imacros_first) 
 
\t 
 
\t // JQuery after url goto! (really important) 
 
\t loadScriptFromURL(url_jquery); 
 
\t $ = window.$, 
 
\t JQuery = window.JQuery; 
 
\t 
 
\t // start execution 
 
\t var start = new Date(), end; // for benchmarking 
 
\t 
 
\t // Step 2: Save the captcha picture to local disk 
 
\t // initial click macro 
 
\t 
 
\t $('iframe[src*="anchor"]').contents().find('.recaptcha-checkbox-checkmark').click(); 
 
\t 
 
\t //Wait a random number of seconds 
 
\t wait(Math.floor(Math.random()*3 + 2)); 
 
\t var checkOK; 
 
\t var more_correct_solutions; 
 
\t var captchaid; 
 
\t var numbers_rc2; 
 

 
\t for(var i3=1;i3<=5;i3++){ 
 
\t \t captchaid = ""; 
 
\t \t // macro for checking captcha checkbox 
 
\t \t if($('iframe').contents().find('html').find("#recaptcha-anchor").hasClass("recaptcha-checkbox-checked") == true){ 
 
\t \t \t end =+ new Date(); 
 
\t \t \t if(logFile){ 
 
\t \t \t \t log_message('Captcha is solved\n\rTime spent: '+Math.floor((end-start)/1000)); 
 
\t \t \t } 
 
\t \t \t //break; 
 
\t \t }else{ 
 
\t \t \t if(i3 > 1){ 
 
\t \t \t \t //more_correct_solutions = SearchOK("TAG POS=2 TYPE=DIV ATTR=TXT:Multiple<SP>correct<SP>solutions<SP>required<SP>-<SP>please*&&STYLE: CONTENT=EVENT:MOUSEOVER",0+other_frame_number); 
 
\t \t \t \t if(more_correct_solutions < 1){ 
 
\t \t \t \t \t if($('iframe').contents().find('html').find("#recaptcha-anchor").hasClass("recaptcha-checkbox-checked") != true){ 
 
\t \t \t \t \t \t iimPlay(imacros_first) 
 
\t \t \t \t \t \t wait(3) 
 
\t \t \t \t \t \t $('iframe[src*="anchor"]').contents().find('.recaptcha-checkbox-checkmark').click(); 
 
\t \t \t \t \t \t loadScriptFromURL(url_jquery); 
 
\t \t \t \t \t \t $ = window.$, 
 
\t \t \t \t \t \t JQuery = window.JQuery; 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t } 
 

 
\t \t \t numbers_rc2 = $('iframe').contents().find('html').find(".rc-image-tile-wrapper"); 
 
\t \t \t if(numbers_rc2.length > 1){ 
 
\t \t \t \t for(var i=0; i<numbers_rc2.length; i++){ 
 
\t \t \t \t \t var i_high = i + 1; 
 
\t \t \t \t \t if(numbers_rc2.length > 10 && i < 9){ 
 
\t \t \t \t \t \t $('iframe').contents().find('html').find(".rc-image-tile-wrapper").eq(i).append("<span style='position: absolute;width: 18px;left: 0px;top: 0px;border: 1px red black;color:rgb(0, 0, 0);background: rgba(255, 255, 255, 0.9);font: bold 18px Helvetica, Sans-Serif;padding: 0px 0px 0px 6px;'>0"+i_high+"</span>"); 
 
\t \t \t \t \t }else{ 
 
\t \t \t \t \t \t $('iframe').contents().find('html').find(".rc-image-tile-wrapper").eq(i).append("<span style='position: absolute;width: 18px;left: 0px;top: 0px;border: 1px red black;color:rgb(0, 0, 0);background: rgba(255, 255, 255, 0.9);font: bold 18px Helvetica, Sans-Serif;padding: 0px 0px 0px 6px;'>"+i_high+"</span>"); 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t \t var recaptcha_v2_error = false; 
 
\t \t \t \t 
 
\t \t \t \t var text_title; 
 
\t \t \t \t $('iframe').contents().find('html').find(".rc-imageselect-desc-no-canonical").html($('iframe').contents().find('html').find(".rc-imageselect-desc-no-canonical").html()+"<br><span style='border: 1px red solid;color: rgba(255, 255, 255, 0.9);background: rgba(0, 0, 0, 0.8);font: bold 18px Helvetica, Sans-Serif;padding: 0px 0px 0px 8px;'>Type the image numbers <br>&nbsp; without spaces, e.g: 358 </span>"); 
 
\t \t \t \t $('iframe').contents().find('html').find(".rc-imageselect-desc").html($('iframe').contents().find('html').find(".rc-imageselect-desc").html()+"<br><span style='border: 1px red solid;color: rgba(255, 255, 255, 0.9);background: rgba(0, 0, 0, 0.8);font: bold 18px Helvetica, Sans-Serif;padding: 0px 0px 0px 8px;'>Type the image numbers <br>&nbsp; without spaces, e.g: 358 </span>"); 
 
\t \t \t } 
 

 
\t \t \t var root = window.document.documentElement; 
 
\t \t \t var canvas = window.document.createElementNS('http://www.w3.org/1999/xhtml', 'html:canvas'); 
 
\t \t \t var context = canvas.getContext('2d'); 
 
\t \t \t 
 
\t \t \t var selection; 
 
\t \t \t if(numbers_rc2.length > 1){ 
 
\t \t \t \t $('div:nth-of-type(2)').css({ transform: 'scale(.70)' }); \t \t \t 
 
\t \t \t \t selection = { 
 
\t \t \t \t \t top: $('div:nth-of-type(2)').offset().top, 
 
\t \t \t \t \t left: $('div:nth-of-type(2)').offset().left, 
 
\t \t \t \t \t width: $('div:nth-of-type(2)').width()*0.70, 
 
\t \t \t \t \t height: (($('div:nth-of-type(2)').height() - $('iframe').contents().find('html').find(".rc-footer").height())*0.70), 
 
\t \t \t \t }; 
 
\t \t \t }else{ 
 
\t \t \t \t selection = { 
 
\t \t \t \t \t top: $('div:nth-of-type(2)').offset().top, 
 
\t \t \t \t \t left: $('div:nth-of-type(2)').offset().left, 
 
\t \t \t \t \t width: $('div:nth-of-type(2)').width(), 
 
\t \t \t \t \t height: ($('div:nth-of-type(2)').height() - $('iframe').contents().find('html').find(".rc-footer").height()), 
 
\t \t \t \t }; 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t canvas.height = selection.height; 
 
\t \t \t canvas.width = selection.width; 
 
\t \t \t 
 
\t \t \t context.drawWindow(
 
\t \t \t \t window, 
 
\t \t \t \t selection.left, 
 
\t \t \t \t selection.top, 
 
\t \t \t \t selection.width, 
 
\t \t \t \t selection.height, 
 
\t \t \t \t 'rgb(255, 255, 255)' 
 
\t \t \t); 
 

 
\t \t \t //Step 3: Open a new tab, and go to 9kw.eu, and submit the captcha picture 
 
\t \t \t var imacros_main2 = "CODE:"+imacros_header; 
 
\t \t \t imacros_main2 += "TAB OPEN\n"; 
 
\t \t \t imacros_main2 += "TAB T=2\n"; 
 
\t \t \t imacros_main2 += "URL GOTO=http://www.9kw.eu/grafik/form_base64.html\n"; 
 
\t \t \t //The apikey is used to identify each of our customers, which you can get from the our page. It is assigned to the CONTENT. 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT ATTR=NAME:apikey CONTENT="+apikey+"\n"; 
 
\t \t \t //Priority in our system like min. 0 to max. 20 (cost +0-20) 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT ATTR=NAME:prio CONTENT="+prio+"\n"; 
 
\t \t \t //Options for the form. See more under http://www.9kw.eu/grafik/form.html and http://www.9kw.eu/api.html 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:selfsolve CONTENT=NO\n"; 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:confirm CONTENT=NO\n"; 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:case-sensitive CONTENT=NO\n"; 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:nomd5 CONTENT=YES\n"; 
 
\t \t \t //We need only numbers for this captcha 
 
\t \t \t if(numbers_rc2.length > 1){ 
 
\t \t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:numeric CONTENT=YES\n"; 
 
\t \t \t } 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT ATTR=NAME:source CONTENT=imacros\n"; 
 
\t \t \t // recaptcha v2 for non text captcha or recaptcha for text captcha 
 
\t \t \t if(numbers_rc2.length > 1){ 
 
\t \t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT ATTR=NAME:oldsource CONTENT=recaptchav2\n"; 
 
\t \t \t }else{ 
 
\t \t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT ATTR=NAME:oldsource CONTENT=recaptcha\n"; 
 
\t \t \t } 
 
\t \t \t //The path of the captcha picture saved is assigned to the CONTENT 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT ATTR=NAME:file-upload-01 CONTENT="+canvas.toDataURL('image/png', '').split(',')[1]+"\n"; 
 
\t \t \t //Submit the formdata to 9kw.eu 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT ATTR=TYPE:submit\n"; 
 
\t \t \t //Clean the !EXTRACT variable for the next task 
 
\t \t \t imacros_main2 += "SET !EXTRACT NULL\n"; 
 
\t \t \t //Extract the characters that are recoginzed from the picture of captcha. 
 
\t \t \t imacros_main2 += "TAG POS=1 TYPE=INPUT ATTR=NAME:result EXTRACT=TXT\n"; 
 
\t \t \t iimPlay(imacros_main2) 
 
\t \t \t var answer = iimGetLastExtract(); 
 
\t \t \t //Step 4: Check the captcha answer (text or nothing like #EANF# = Extraction Anchor Not Found) 
 
\t \t \t if(answer == "#EANF#" || answer == "ERROR NO USER"){ 
 
\t \t \t \t answer = ""; 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t //Extract the captchaid from your captcha submit 
 
\t \t \t var imacros_main3 = "CODE:"; 
 
\t \t \t imacros_main3 += "SET !EXTRACT NULL\n"; 
 
\t \t \t imacros_main3 += "TAG POS=1 TYPE=INPUT ATTR=NAME:captchaid EXTRACT=TXT\n"; 
 
\t \t \t imacros_main3 += "SET captchaid {{!EXTRACT}}\n"; 
 
\t \t \t imacros_main3 += "TAB CLOSE\n"; 
 
\t \t \t iimPlay(imacros_main3) 
 
\t \t \t captchaid = iimGetLastExtract(); 
 
\t \t \t 
 
\t \t \t //Clean the !EXTRACT variable for the next task 
 
\t \t \t var imacros_main4 = "SET !EXTRACT NULL\n"; 
 
\t \t \t iimPlay(imacros_main4) 
 
\t \t \t 
 
\t \t \t //Display extracted data (only for debug) 
 
\t \t \t //iimDisplay("captchaid: "+captchaid+"\nanswer: "+answer) 
 
\t \t \t 
 
\t \t \t //Step 5: Fill the recognized characters to the verification box (Click the pictures 1..16) 
 
\t \t \t if(numbers_rc2.length > 1){ 
 
\t \t \t \t $('div:nth-of-type(2)').css({ transform: 'scale(1.0)' }); 
 
\t \t \t \t 
 
\t \t \t \t var myarray = answer.split(''); 
 
\t \t \t \t if(myarray.length < 2){ 
 
\t \t \t \t \t alert_message("No answer found. Check the history on 9kw.eu!"); 
 
\t \t \t \t \t if(breakOnError){ 
 
\t \t \t \t \t \t return false; 
 
\t \t \t \t \t }else{ 
 
\t \t \t \t \t \t break; 
 
\t \t \t \t \t } 
 
\t \t \t \t }else{ 
 
\t \t \t \t \t for(var i = 0;i < myarray.length; i++){ 
 
\t \t \t \t \t \t if(myarray[i].match(/^[0-9]+$/)){ 
 
\t \t \t \t \t \t \t if(numbers_rc2.length > 10){ 
 
\t \t \t \t \t \t \t \t var two_values; 
 
\t \t \t \t \t \t \t \t if(myarray[i+1].match(/^[0-9]+$/)){ 
 
\t \t \t \t \t \t \t \t \t two_values = myarray[i]+myarray[i+1]; 
 
\t \t \t \t \t \t \t \t }else{ 
 
\t \t \t \t \t \t \t \t \t two_values = myarray[i]; 
 
\t \t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t \t \t i += 1; 
 
\t \t \t \t \t \t \t \t two_values = two_values.replace("0", ""); 
 
\t \t \t \t \t \t \t \t two_values = parseFloat(two_values) - 1; 
 
\t \t \t \t \t \t \t \t if(two_values == ""){ 
 
\t \t \t \t \t \t \t \t \t two_values = 0; 
 
\t \t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t \t \t $('iframe').contents().find('html').find(".rc-image-tile-wrapper").eq(two_values).click(); 
 
\t \t \t \t \t \t \t }else{ 
 
\t \t \t \t \t \t \t \t myarray[i] = parseFloat(myarray[i]) - 1; 
 
\t \t \t \t \t \t \t \t if(myarray[i] == ""){ 
 
\t \t \t \t \t \t \t \t \t myarray[i] = 0; 
 
\t \t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t \t \t $('iframe').contents().find('html').find(".rc-image-tile-wrapper").eq(myarray[i]).click(); 
 
\t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t } 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t }else{//text captcha 
 
\t \t \t \t SearchFrame("TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:default-response CONTENT="+answer,start_frame_number); 
 
\t \t \t } 
 
\t \t \t \t 
 
\t \t \t //Click the Verify button 
 
\t \t \t if(numbers_rc2.length > 1){ 
 
\t \t \t \t SearchFrame("EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV>DIV>DIV:nth-of-type(3)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV\" BUTTON=0",start_frame_number); 
 
\t \t \t }else{ 
 
\t \t \t \t SearchFrame("TAG POS=1 TYPE=DIV ATTR=ID:recaptcha-verify-button",start_frame_number); 
 
\t \t \t } 
 
\t \t } 
 
\t \t wait(1) 
 
\t \t \t 
 
\t \t // Submit 
 
\t \t var solved_OK; 
 
\t \t if($('iframe').contents().find('html').find("#recaptcha-anchor").hasClass("recaptcha-checkbox-checked") == true){ 
 
\t \t \t if($('iframe').contents().find('html').find("#recaptcha-anchor").hasClass("recaptcha-checkbox-checked") == true){ 
 
\t \t \t \t solved_OK = 1; 
 
\t \t \t } 
 
\t \t \t SearchFrame(mysubmit,start_frame_number); 
 
\t \t \t loadScriptFromURL(url_jquery); 
 
\t \t \t $ = window.$, 
 
\t \t \t JQuery = window.JQuery; 
 
\t \t }else{ 
 
\t \t \t solved_OK = 0; 
 
\t \t \t if($('iframe').contents().find('html').find('.rc-imageselect-incorrect-response').css('display') == 'block'){ 
 
\t \t \t \t more_correct_solutions = 1; 
 
\t \t \t }else{ 
 
\t \t \t \t more_correct_solutions = ""; 
 
\t \t \t } 
 
\t \t } 
 
\t \t \t 
 
\t \t //Step 6: Check and send the captcha feedback back to the captcha service (OK:1, NotOK:2, EN: Right/False, DE: Richtig/Falsch) 
 
\t \t var htmlcode = ""; 
 
\t \t if(captchaid.length > 0){ 
 
\t \t \t if($('iframe').contents().find('html').find("#recaptcha-anchor").hasClass("recaptcha-checkbox-checked") == true){ 
 
\t \t \t \t var imacros_main4b = "CODE:TAG POS=1 TYPE=DIV ATTR=CLASS:recaptcha-success EXTRACT=TXT\n"; 
 
\t \t \t \t iimPlay(imacros_main4b) 
 
\t \t \t \t htmlcode = iimGetLastExtract(); 
 
\t \t \t } 
 
\t \t } 
 
\t \t \t \t \t \t 
 
\t \t var feedback; 
 
\t \t if(htmlcode.match(/Juhu/) || htmlcode.match(/Hooray/) || more_correct_solutions < 1 || solved_OK == 1){ 
 
\t \t \t feedback = 1; 
 
\t \t }else{ 
 
\t \t \t feedback = 2; 
 
\t \t } 
 
\t \t \t 
 
\t \t if(captchaid.length > 0){ 
 
\t \t \t var imacros_main5 = "CODE:TAB OPEN\n"; 
 
\t \t \t imacros_main5 += "TAB T=2\n"; 
 
\t \t \t imacros_main5 += "URL GOTO=http://www.9kw.eu/index.cgi?source=imacros&action=usercaptchacorrectback&apikey="+apikey+"&correct="+feedback+"&id="+captchaid+"\n"; 
 
\t \t \t imacros_main5 += "TAB CLOSE\n"; 
 
\t \t \t iimPlay(imacros_main5) 
 
\t \t } 
 

 
\t \t if(feedback == "1"){ 
 
\t \t \t break; 
 
\t \t } 
 
\t } 
 
\t return; 
 
} 
 

 
// random between 1 and 9 
 
function rand(){ 
 
\t return Math.floor(Math.random()*9) + 1; 
 
} 
 

 
// wait function like wait(2) for two seconds 
 
function wait(waittime){ 
 
\t iimPlay("CODE: WAIT SECONDS="+waittime+"\n"); 
 
\t return; 
 
} 
 

 
// wait function like wait(2) for two seconds 
 
function getextract(shortcode){ 
 
\t iimPlay("CODE: "+shortcode); 
 
\t return iimGetLastExtract(); 
 
} 
 

 
// date functione 
 
function tempfile_date() { 
 
\t now = new Date(); 
 
\t year = "" + now.getFullYear(); 
 
\t month = "" + (now.getMonth() + 1); if (month.length == 1) { month = "0" + month; } 
 
\t day = "" + now.getDate(); if (day.length == 1) { day = "0" + day; } 
 
\t hour = "" + now.getHours(); if (hour.length == 1) { hour = "0" + hour; } 
 
\t minute = "" + now.getMinutes(); if (minute.length == 1) { minute = "0" + minute; } 
 
\t second = "" + now.getSeconds(); if (second.length == 1) { second = "0" + second; } 
 
\t return year + month + day + "_" + hour + minute + second; 
 
} 
 

 
// find frame with true or false as return 
 
function SearchOK(checkcode,firstframenumber,lastframenumber){ 
 
\t var check = "CODE:"; 
 
\t check += "SET !ERRORIGNORE YES" + "\n"; 
 
\t check += "SET !TIMEOUT_STEP 0" + "\n"; 
 
\t check += "FRAME F={{i}}" + "\n"; 
 
\t check += "SET !ERRORIGNORE NO" + "\n"; 
 
\t \t \t 
 
\t if (checkcode != ""){ 
 
\t \t check += checkcode + "\n"; 
 
\t }else{ 
 
\t \t return 0; 
 
\t } 
 
\t \t 
 
\t if(/^\d+$/.test(firstframenumber)) { 
 
\t \t frame = firstframenumber; 
 
\t }else{ 
 
\t \t frame = 1; 
 
\t } 
 
\t 
 
\t if(/^\d+$/.test(lastframenumber)) { 
 
\t \t frame2 = lastframenumber; 
 
\t }else{ 
 
\t \t frame2 = total_frame_number; 
 
\t } 
 

 
\t for(var i=frame;i<=frame2;i++){ 
 
\t \t iimSet("i",i) 
 

 
\t \t if(iimPlay(check) == true){ 
 
\t \t \t return 1; 
 
\t \t } 
 
\t } 
 
\t return 0; 
 
} 
 

 
// find frame with the framenumber as return 
 
function SearchFrame(checkcode,firstframenumber){ 
 
\t var check = "CODE:"; 
 
\t check += "SET !ERRORIGNORE YES" + "\n"; 
 
\t check += "SET !TIMEOUT_STEP 0" + "\n"; 
 
\t check += "FRAME F={{i}}" + "\n"; 
 
\t check += "SET !ERRORIGNORE NO" + "\n"; 
 
\t \t \t 
 
\t if (checkcode != ""){ 
 
\t \t check += checkcode + "\n"; 
 
\t }else{ 
 
\t \t return 0; 
 
\t } 
 
\t \t 
 
\t if(/^\d+$/.test(firstframenumber)) { 
 
\t \t frame = firstframenumber; 
 
\t }else{ 
 
\t \t frame = 1; 
 
\t } 
 

 
\t for(var i=frame;i<=max_frame_number;i++){ 
 
\t \t iimSet("i",i) 
 

 
\t \t //if the result of the macro is true save frame number and break 
 
\t \t if(iimPlay(check) == true){ 
 
\t \t \t frame = i; 
 
\t \t \t break; 
 
\t \t } 
 
\t } 
 
\t //return frame number 
 
\t return frame; 
 
} 
 

 
// Get the imacros folder 
 
function getiMacrosFolder(folderName){ 
 
    var pname; 
 
    switch (folderName){ 
 
     case "Macros" : 
 
     pname = "defsavepath"; 
 
     break; 
 
     case "DataSources" : 
 
     pname = "defdatapath"; 
 
     break; 
 
     case "Downloads" : 
 
     pname = "defdownpath"; 
 
     break; 
 
     case "Logs" : 
 
     pname = "deflogpath"; 
 
     break; 
 
     default : 
 
     throw folderName + " is not a valid iMacros folder name"; 
 
     break; 
 
    } 
 
    return imns.Pref.getFilePref(pname).path; 
 
} 
 

 
// Logfunction 
 
function log_message(msg) { 
 
\t var time = new Date().toString().replace(/\s+GMT.*/, ''); 
 
\t msg = time + ' - ' + msg + '\n'; 
 
\t var file_o = imns.FIO.openNode(logFilePath); 
 
\t imns.FIO.appendTextFile(file_o, msg); 
 
} 
 

 
// Logfunction 
 
function alert_message(msg){ 
 
\t if(logFile){ 
 
\t \t log_message(msg); 
 
\t } 
 

 
\t iimDisplay(msg); 
 

 
\t if(onBreakAlert){ 
 
\t \t alert(msg); 
 
\t } 
 
} 
 

 
// jquery 
 
function loadScriptFromURL(url) { 
 
\t var request = Components.classes['@mozilla.org/xmlextras/xmlhttprequest;1'].createInstance(Components.interfaces.nsIXMLHttpRequest), 
 
\t async = false; 
 
\t request.open('GET', url, async); 
 
\t request.send(); 
 
\t if(request.status !== 200){ 
 
\t \t var message = 'an error occurred while loading script at url: ' + url + ', status: ' + request.status; 
 
\t \t iimDisplay(message); 
 
\t \t return false; 
 
\t } 
 
\t eval(request.response); 
 
\t return true; 
 
}

Смежные вопросы