Auto click to a link mostly for download purpose, iframe killer. Supported hosts: zippyshare, mediafire, sendspace, uptobox, cloud.mail.ru, adf.ly, and many more...
// ==UserScript== // @name Maknyos AutoIn // @namespace http://userscripts.org/scripts/show/91629 // @icon https://github.com/idoenk/maknyos-autoin/raw/master/assets/img/icon-60x60.png // @version 3.9.42 // @description Auto click to a link mostly for download purpose, iframe killer. Supported hosts: zippyshare, mediafire, sendspace, uptobox, cloud.mail.ru, adf.ly, and many more... // @homepageURL https://greasyfork.org/scripts/97 // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js // @author Idx // @grant GM_log // @include http*://*.zippyshare.com/v/*/* // @include http*://*.dfpan.com/fs/* // @include http*://*.dfpan.com/file/down/* // @include http*://*.4shared.com/*/*/* // @include http*://*.mediafire.com/*/*/* // @include http*://*.sendspace.com/file/* // @include http*://*uptobox.com/* // @include http*://*.yimuhe.com/file-* // @include http*://*.yimuhe.com/down-* // @include http*://*howfile.com/file/* // @include http*://*uppit.com/*/* // @include http*://*clicknupload.org/* // @include http*://*sendmyway.com/* // @include http*://*tusfiles.net/* // @include http*://*.dropbox.com/s/* // @include http*://*.solidfiles.com/v/* // @include http*://*yadi.sk/i/* // @include http*://*yadi.sk/d/* // @include http*://*.datafilehost.com/d/* // @include http*://*userscloud.com/* // @include http*://*hulkload.com/* // @include http*://*up2me.net/* // @include http*://app.box.com/* // @include http*://*dailyuploads.net/* // @include http*://rgho.st/* // @include http*://*uplod.org/* // @include http*://*.upload.ee/files/* // @include http*://*uploads.to/* // @include http*://*uploadbank.com/* // @include http*://*drop.me/* // @include http*://*jzrputtbut.net/* // @include http*://dropapk.com/* // @include http*://*suprafiles.org/* // @include http*://*cloudyfiles.org/* // @include http*://*megadrive.co/* // @include http*://*douploads.com/* // @include http*://*file-upload.com/* // @include http*://*topddl.net/file/* // @include http*://*.up-4ever.com/* // @include http*://*3rbup.com/* // @include http*://*9xupload.me/* // @include http*://*samaup.com/* // @include http*://*bdnupload.com/* // @include http*://*indishare.me/* // @include http*://ako.am/* // @include http*://rapidgator.net/file/* // @include http*://*filefactory.com/file/* // @include http*://dl.free.fr/getfile.pl?file=* // @include http*://up.top4top.net/* // @include http*://cloud.mail.ru/public/* // @include http*://drive.google.com/file/* // @include http*://docs.google.com/uc* // @include http*://my.pcloud.com/publink/* // @include http*://minhateca.com.br/* // @include http*://bc.vc/* // @include http*://sh.st/* // @include http*://adf.ly/* // @include http*://adfoc.us/* // @include http*://filescdn.com/* // @include http*://gen.lib.rus.ec/* // @include http*://libgen.io/* // @include http*://libgen.me/* // @include http*://b-ok.org/* // ==/UserScript== (function() { var gvar = function(){}; gvar.__DEBUG__ = !1; function MaknyosHelper(baseURI){ this.baseURI = baseURI; this.domain = null; gvar.isFF = !1; if("function" !== typeof GM_log || (gvar.isFF = (navigator.userAgent.indexOf('Firefox') !== -1)) ){ GM_log = function(_msg) { try { unsafeWindow.console.log('GM_log: '+_msg) } catch(e){} }; try { GM_log('GM_log function GM_log rewriten'); } catch(e){} } this.action = new Actions(); } MaknyosHelper.prototype = { matchDomain: function(){ var domain = this.baseURI.match(/^https?:\/\/([^\/]+)\//); if(domain) this.domain=domain[1]; return this; }, matchAction: function(){ if(this.domain) this.action.find(this.domain); return this; }, invokeAction: function(){ if(this.action.invoked){ if(!this.action.noBaseClean) this.action.baseCleanUp(); this.action.invoked(); } return this; }, }; function Actions(){ this.invoked=null; this.noBaseClean=null; } Actions.prototype = { find: function(domain){ this.clog('Actions:find, domain='+domain); var isMatch, pattern; for(var key in this.patterns){ pattern = this.patterns[key]; this.clog('pattern-check: '+pattern.rule+' vs '+domain); isMatch = typeof pattern.rule === 'string' ? pattern.rule == domain : pattern.rule.test(domain); if(isMatch){ this.invoked = pattern.run; this.noBaseClean = !isUndefined(pattern.noBaseClean) && pattern.noBaseClean; return; } } }, get_href: function(){ return location.href; }, set_href: function(x){ location.href = x; }, parse_handle_href: function(x){ var cucok, href; if( "string" == typeof x ) href = x; else if( "object" == typeof x ) href = x.getAttribute("href"); if( href && /\/handle\?/.test(href) ){ href = href.replace('&', '&'); if( cucok = /\&?fl=((?:f|ht)tps?[^\&]+)/i.exec(href) ) href = decodeURIComponent(cucok[1]); else this.clog("parsing fail on href, missing param `fl=`"); } return href; }, /** * Try find form to submit of given button element * If it fail, just click that button anyway */ trySumbit: function(button, cb_before){ var tform = null, el = null ; if (!button) return !1; if (button.nodeName != 'FORM') tform = this.closest(button, 'form'); if( 'function' === typeof cb_before ) cb_before(tform); if( tform ){ if( el = g('[name="referer"]', tform) ) el.value = ''; if( button.nodeName != 'FORM' && button.getAttribute('name') ){ el = document.createElement('input'); el.setAttribute('type', 'hidden'); el.setAttribute('name', button.getAttribute('name')); if( button.value ) el.value = button.value; else if(button.textContent) el.value = button.textContent; tform.appendChild(el); } tform.submit(); } else{ this.clog('Inside trySumbit: form not found. Clicking button..'); SimulateMouse(button, "click", true); } }, // do waitwhat -> thenwhat waitforit: function(waitwhat, thenwhat, delay){ var ME = this, stoWait = null, itry = 0, maxtry = 10, thenwhatwrap = function(r){ ME.clog('callback waiting element, doing thenwhatwrap..'); ('function' == typeof thenwhat ) && thenwhat(r); }; if( !delay ) delay = 0; delay = parseInt( delay ); ME.clog('waiting for element..'); if('function' == typeof waitwhat){ var waitwrap = function(){ ME.clog('['+itry+']: inside waitwrap..'); itry++; var r_ = null; if( r_ = waitwhat() ){ stoWait && clearTimeout( stoWait ) thenwhatwrap( r_ ); } else{ if( itry < maxtry ) stoWait = setTimeout(waitwrap, delay+1000); else{ ME.clog('waitforit failed...'); } } }; stoWait = setTimeout(waitwrap, delay+1000); } else thenwhatwrap(); }, observer_init_: function(ev){ var ME = this, params = ME.param_observe ; ME.clog('inside observer_init_..'); ME.clog(ME.param_observe); if( ev.type == params.event ){ ME.clog('ahoy this match event...'+ev.type) } }, observe: function(element, params){ var ME = this, config = {} ; if( !(params && params.callback) ){ ME.clog('missing required params'); return !1; } // create an observer instance var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; var observer = new MutationObserver(function(mutations) { var BreakException = {}; try{ mutations.forEach(function(mutation) { // var $el = $(mutation.target); // if( is_observed ) throw BreakException; if( 'function' == typeof params.callback ) params.callback( mutation.target ); }); }catch(e){ if(e!==BreakException) throw e; } }); // configuration of the observer: config = $.extend({ attributes: true, childList: true, characterData: true }, params.config); ME.clog(config); // pass in the target node, as well as the observer options observer.observe(element, config); // later, you can stop observing // observer.disconnect(); gvar.observer = observer; }, injectBodyStyle: function(stylesString){ var style = document.createElement("style"); style.appendChild( document.createTextNode(stylesString) ); document.body.appendChild(style); }, injectBodyScript: function(scriptFunc){ var script = document.createElement("script"); script.textContent = "(" + scriptFunc.toString() + ")();"; document.body.appendChild(script); }, // load url to an iframe frameload: function(url){ var body, cb_fn, idfrm = 'xMNyFrame'; var iframe = document.createElement('iframe'); if( g('#'+idfrm) ) g('#'+idfrm).removeChild(); iframe.setAttribute('id', idfrm); iframe.setAttribute('title', "iFrame of "+idfrm+"; src="+url); iframe.setAttribute('style', 'position:absolute; z-index:999999; '+(gvar.__DEBUG__ ? 'border:1px solid #000; left:0; top:0; width:100%;' : 'border:0; height:0; width:0; left:-9999; bottom:9999')); iframe.setAttribute('src', url); body = g('body'); if( gvar.__DEBUG__ ) body.insertBefore(iframe, body.firstChild); else g('body').appendChild(iframe); if( gvar.__DEBUG__ ){ if( g('#'+idfrm) ) this.clog("iframe created, src="+url); else this.clog("error while creating iframe"); } }, // resize capcay rezCapcay: function(target, dims){ if(!target) return; if(dims.length){ var styleStr=''; dims[0] && (styleStr += 'width:'+dims[0]+'px;'); dims[1] && (styleStr += 'height:'+dims[1]+'px;'); target.setAttribute('style', styleStr); } }, disableWindowOpen: function(){ if(unsafeWindow){ unsafeWindow.open = function(){}; } if(window){ window.open = function(){}; } }, // get codes of simple capcay code scrap_simplecapcay: function(el_code){ var $code = $(el_code); var codes=[], thecodes = []; var $trycode = $code.closest("td").prev(); if( $trycode.length ){ $trycode.find(">div > span").each(function(){ var $me = $(this); var pl = $me.css("paddingLeft").replace('px',''); thecodes.push({ 'id': pl, 'val': $me.text() }) }); thecodes.sort(function(a,b) { return a.id - b.id; }); for(var i=0, iL=thecodes.length; i<iL; i++) codes.push( thecodes[i].val ); if( codes.length ) $code.val( codes.join("") ); } return codes; }, scrapScriptsByRegex: function(pattern, parent){ // must be ( match instanceof RegExp ) if( 'undefined' == typeof parent ) parent = document; var scripts = parent.getElementsByTagName('script'), cucok = null, inner = '' ; for( var i = 0; i < scripts.length; i++ ){ if( inner = scripts[i].innerHTML ){ this.clog(inner); if( cucok = pattern.exec(inner) ) break; } } return cucok; }, // basic cleanup document from anoying things // eg. iframe, onclick body, etc baseCleanUp: function(){ this.clog("killing frames.."); this.killframes(); this.clog("killing click events."); this.killevents(null, 'click'); this.killevents(null, 'mousedown'); this.clog("killing onbeforeunload events."); this.killunload(); }, // brutaly kill frames killframes: function(par){ !par && (par = document); var o = par.getElementsByTagName('iframe'); for(var i=o.length-1;i>=0;i--) o[i].parentNode.removeChild(o[i]); o = gAll('.ad'+'sbygo'+'ogle'); for(var i=o.length-1;i>=0;i--) o[i].parentNode.removeChild(o[i]); this.clog("killframes done"); }, killevents: function(par, type, handle){ !type && (type = 'click'); !par && (par = document); !handle && (handle = function(){}); var o = par.getElementsByTagName('*'); for(var i=o.length-1;i>=0;i--){ if ( o[i].removeEventListener ) { o[i].removeAttribute("on"+type); //W3C Standard o[i].removeEventListener( type, handle, true ); } } this.clog("killevents done"); }, killunload: function(){ window.onbeforeunload = null; window.onunload = null; unsafeWindow.onbeforeunload = null; }, hidefixed: function(orAbsolute){ var style = document.createElement("style"), css = '' +'body>*[style*="fixed"]' +(orAbsolute ? ',body>*[style*="absolute"]' : '') +'{display: none!important;}'; style.textContent = css; document.body.insertBefore(style, document.body.firstChild); }, isVisible: function (ele) { // this.clog("visibility-test; clientWidth="+ele.clientWidth+'; clientHeight='+ele.clientHeight+'; opacity='+ele.style.opacity+'; visibility='+ele.style.visibility+'; offsetParent='+ele.offsetParent); return true && // ele.clientWidth !== 0 && // ele.clientHeight !== 0 && ele.offsetParent !== null && ele.style.opacity !== 0 && ele.style.visibility !== 'hidden'; }, isInIframe: function () { try { return window.self !== window.top; } catch (e) { return true; } }, hasClass: function(cName, ele){ if(!cName || !ele) return; var clss = (ele.getAttribute('class')||'').split(' '); return (clss.indexOf(cName) != -1); }, // get nearest parent element matching selector closest: function (el, selector) { var parent, matchesFn; // find vendor prefix ['matches','webkitMatchesSelector','mozMatchesSelector','msMatchesSelector','oMatchesSelector'].some(function(fn) { if (typeof document.body[fn] == 'function') { matchesFn = fn; return true; } return false; }); // traverse parents while (el) { parent = el.parentElement; if (parent && parent[matchesFn](selector)) { return parent; } el = parent; } return null; }, show_alert: function(msg, force) { if(arguments.callee.counter) { arguments.callee.counter++ }else { arguments.callee.counter = 1 } if("function" == typeof GM_log){ GM_log("(" + arguments.callee.counter + ") " + (typeof msg == "object" ? ">>" : msg)); if( typeof msg == "object" ) GM_log( msg ); } else{ console && console.log && console.log(msg); } if( force == 0 ) return }, clog: function(x){ if( !gvar.__DEBUG__ ) return this.show_alert(x); } }; Actions.prototype.patterns = { sendspace: { rule: /sendspace\.com/, run: function(){ this.clog('inside sendspace'); g('#download_button') && SimulateMouse(g('#download_button'), "click", true); } }, zippyshare: { rule: /zippyshare\.com/, run: function(){ this.clog('inside zippyshare'); var btn = g("#dlbutton"); // failover, just incase if( !btn ) { btn = g("[alt*=Download]"); if( btn ) btn = btn.parentNode; else btn = g(".download"); if( btn ) btn = btn.parentNode; } if( btn ) { this.waitforit(function(){ return /(?:\.zippyshare\.com)?\/d\/.+/.test( btn.getAttribute("href") ); }, function(){ btn && SimulateMouse(btn, "click", true); }); } else{ this.clog('missing: download button'); } } }, mediafire: { rule: /mediafire\.com/, noBaseClean: true, run: function(){ var that = this, dcg, selector, btn, nbtn ; if( dcg = g("#docControlGroup") ){ selector = './/a[contains(@target,"_blank")]'; selector = xp(selector, dcg, true); selector && that.set_href(selector.getAttribute('href')) } else if( dcg = g('#recaptcha_widget_div') ){ var recapcay = g('.g-recaptcha', dcg), site_key = recapcay.getAttribute('data-sitekey') ; if('function' === typeof $ && site_key){ $('.g-recaptcha', dcg) .replaceWith($('<div id="maknyos-recaptcha" data-bijikuda="1" data-sitekey="'+site_key+'"></div>')); // recaptcha-rebuilder var scriptHandler = function(_site_key){ return (function(win, $){ if("undefined" !== typeof grecaptcha){ grecaptcha.render("maknyos-recaptcha", { sitekey: "___SITEKEY___", callback: function(){ $(".dl_startlink > a").trigger("click") } }); } else{ console.log('grecaptcha undefined'); } })(window, $); }; scriptHandler = scriptHandler.toString(); scriptHandler = scriptHandler.replace(/___SITEKEY___/, site_key); that.injectBodyScript(scriptHandler); var cssString = '' +'#form_captcha .captchaPromo:before { content: "Click to download"; font-size: 1.2em; color: #ccc; position: absolute; top: 6px; left: -20px; margin-top: -30px;}' +'.nonpro_adslayout #form_captcha .captchaPromo, .freeAccount .pro #form_captcha .captchaPromo{ background-size: 275%; background-position-y: -110px; }' ; that.injectBodyStyle(cssString); } } else { that.waitforit(function(){ return g('.download_link a'); }, function(){ btn = g('.download_link a'); nbtn = document.createElement('a'); nbtn.setAttribute('href', btn.getAttribute('href')); nbtn.setAttribute('onclick', 'location.href=this.href; return !1'); nbtn.innerHTML = btn.innerHTML; btn.parentNode.replaceChild(nbtn, btn); SimulateMouse(nbtn, "click", true); }, 100); } } }, uptobox: { rule: /uptobox\.com/, run: function(){ var that = this waitStr = null, waitFor = !1, countdown = g('#timeLeft'), btnDownload = g('#btn_download') ; // force download link with https based on its parent protocol var prefilter_uptobox_https = function(href_){ var prot = location.protocol; if( location.protocol == 'https:' && !/https:/i.test(href_) ){ href_ = href_.replace(/^http\:/i, 'https:'); that.clog('https download-link='+href_); } return href_; }; if( countdown ){ scripts = document.getElementsByTagName( 'script' ); for( var i = 0; i < scripts.length; ++i ) { if( cucok = /\bcountdownNum\s*=\s*(\d+)/.exec(scripts[i].innerHTML)) { waitFor = Math.floor(parseInt( cucok[1] ) / 3); break; } } if( waitFor ){ this.waitforit(function(){ var disabled = btnDownload.getAttribute('disabled'); return ('undefined' != typeof disabled && disabled ? !1 : btnDownload); }, function(el){ SimulateMouse(el, "click", true); }, waitFor * 1000); } } else{ // is the timeleft timer simply not activated if( btnDownload ){ SimulateMouse(btnDownload, "click", true, prefilter_uptobox_https); } else{ btnDownload = g('#countdown_str'); if( btnDownload ){ this.clog('disabled='+btnDownload.getAttribute('disabled')); if( !btnDownload.getAttribute('disabled') ){ // do downoad } else{ waitStr = String(g('#countdown_str').textContent).replace(/[\s\W]/g,'').toLowerCase(); if( cucok = /(?:[a-zA-Z]+)?(\d+)(?:[a-zA-Z]+)?/.exec(waitStr) ){ this.waitforit(function(){ return g('#btn_download'); }, function(el){ SimulateMouse(el, "click", true, prefilter_uptobox_https); }, parseInt(cucok[1] * 1000)); } } } else if( g('.button_upload') ){ // take-care of fake exe download var link, rlink, el = g('.button_upload'); if( link = el.parentNode ){ rlink = getParameterByName("prod"+"uct_d"/*fo*/+"ownloa"+"d_url", link.getAttribute("href")); // hiding the-arse if( rlink ){ rlink = 'http://blankrefer.com/?'+rlink; this.frameload(rlink); } else{ // last-resort, key may changed. SimulateMouse(link, "click", true, prefilter_uptobox_https); } } }else{ this.clog('tpl-changed, mismatch element'); } } } } }, howfile: { rule: /howfile\.com/, run: function(){ this.clog('inside howfile'); this.waitforit(function(){ return xp('//a[contains(.,"Download")]', null, true); }, function(){ var btnDownload = xp('//a[contains(@href, "/downfile/")]', g("#downloadtable"), true); btnDownload && SimulateMouse(btnDownload, "click", true); }, 234); } }, uppit: { rule: /uppit\.com/, run: function(){ this.clog('inside uppit'); var countdown = g('#countdown'); var cucok, waitFor, scripts; if( countdown ){ scripts = document.getElementsByTagName( 'script' ); for( var i = 0; i < scripts.length; ++i ) { if( cucok = /\bcount\s*=\s*(\d+)/.exec(scripts[i].innerHTML)) { waitFor = parseInt(cucok[1]); break; } } if( waitFor ){ this.waitforit(function(){ return !g('#countdown'); }, function(){ SimulateMouse(g('#btn_download'), "click", true); }, waitFor * 1000); } } else{ SimulateMouse(g('.m-btn'), "click", true); } } }, tusfiles: { rule: /tusfiles\.net/, run: function(){ var that = this, maxTry = 3, iTry = 0, sTryStop = null, btnDl = null ; var cb_pagestop = function(){ var el = null; if( el = g('[name=quick]') ){ el.removeAttribute('checked'); el.parentNode.removeChild(el); } if( el = g('[name=F1]') ) el.submit(); }; if( btnDl = g('[name=F1]') ){ sTryStop = setInterval(function(){ window.stop(); iTry++; if( iTry > maxTry ){ sTryStop && clearInterval( sTryStop ); if("function" == typeof cb_pagestop) cb_pagestop() } }, 10); } else{ that.clog('Not download page or missing download button'); } } }, sendmyway: { rule: /sendmyway\.com/, run: function(){ this.clog('inside sendmyway'); var dd, adcopy = g('#adcopy_response'), btnDownload = g('#download_link'), btnFreeDownload = g('.btn-free.dl_btn') ; if( !adcopy && !btnDownload ){ this.clog('adad adcopy'); btnFreeDownload && SimulateMouse(btnFreeDownload, "click", true); } else{ if( !btnDownload ){ adcopy.focus(); } else{ dd = g('#direct_download'); btnDownload = g('#download_link', dd); this.frameload(btnDownload.getAttribute('href')) } } } }, box: { rule: /app\.box\.com/, run: function(){ var that = this; this.waitforit(function(){ var $pcw = $('.preview-content-wrapper'), $phr = $('.preview-header-right'), $btn1 = xp('.//button[contains(@data-type, "download-btn")]', $phr.get(0), true), $btn2 = xp('.//button[contains(.,"Download")]', $pcw.get(0), true); return ($btn1 && $btn2 ? $btn1 : null); }, function(btnDl){ setTimeout(function(){ btnDl && SimulateMouse(btnDl, "click", true); }, 3456); }, 100); } }, dropbox: { rule: /dropbox\.com/, run: function(){ var that = this; this.waitforit(function(){ var parent = g('.react-title-bar'); return xp('.//button[contains(.,"Download")]', parent, true); }, function(btn){ if (btn){ btn && SimulateMouse(btn, "click", true); } else{ this.clog('dropbox: missing download button, page may changed'); } }, 234); } }, solidfiles: { rule: /solidfiles\.com/, run: function(){ var that = this, $bc = g('.box-content:first-child'), btnDownload ; that.clog('inside solidfiles, '+that.get_href()); setTimeout(function(){ that.killframes(); that.disableWindowOpen(); }, 123); if( btnDownload = g('[type=submit]', g('form.ng-pristine')) ){ setTimeout(function(){ SimulateMouse(btnDownload, "click", true) }, 125); } else { if( $bc.textContent.indexOf('downloading') == -1 ) this.clog('solidfiles: missing download button, page may changed'); } } }, yadi: { rule: /yadi\.sk/, run: function(){ var that = this, api_url = location.protocol+'//'+location.hostname+'/public-api-desktop/download-url'; that.clog('inside yadi, '+that.get_href()); this.waitforit(function(){ return el = xp('//button[contains(@class,"button2") and contains(.,"ownloa")]', null, true); }, function(btnDownload){ that.clog(btnDownload); if( btnDownload ){ // models-client json var json = g('#store-prefetch').innerHTML, pdata = {"hash": "", "sk": ""}; if( json ){ try{ json = JSON.parse(json) }catch(e){ json = null; } } if( json ){ var fields = ['environment', 'resources'], firstKey = null, item = null; for(var key in json){ if(fields.indexOf(key) === -1) continue; item = json[key]; switch(key){ case "environment": if('undefined' != typeof item['sk']){ pdata['sk'] = item['sk']; continue; } break case "resources": firstKey = Object.keys(item)[0]; if(firstKey && 'undefined' != typeof item[firstKey]['hash']){ pdata['hash'] = item[firstKey]['hash']; continue; } break } } // end: for json setTimeout(function(){ that.clog('Prepping XHR...'); // xhr $.ajax({ type: 'POST', url: api_url, contentType: 'text/plain', dataType: 'json', data: JSON.stringify(pdata) }) .done(function(ret){ that.clog('on DONE'); that.clog(ret) if (ret && ret.data && ret.data.url){ that.frameload( ret.data.url ); } else{ that.clog('yadi: missing download data.url'); } }) .fail(function(r){ that.clog('on FAIL'); }) .always(function(r){ that.clog('on ALWAYS'); that.clog(r); }); }, 1200); } else{ that.clog('yadi: missing models-clients'); } } else{ that.clog('yadi: missing download button, page may changed'); } }, 100); } }, datafilehost: { rule: /datafilehost\.com/, run: function(){ var that, btnDownload; that = this; that.clog('inside datafilehost, '+that.get_href()); setTimeout(function(){ that.killframes() }, 123); // pick selector dat relevant and exist on several browsers if( btnDownload = xp('//a[contains(@href,"/get.php?") or contains(@class,"ownloa")]', null, true) ) setTimeout(function(){ if( href = that.parse_handle_href( btnDownload.getAttribute("href") ) ) btnDownload.setAttribute("href", href); SimulateMouse(btnDownload, "click", true) }, 125); else this.clog('datafilehost: missing download button, page may changed'); } }, userscloud: { rule: /userscloud\.com/, run: function(){ var that = this, btnDl = null, tform = null, btn_selector = '//button[contains(@id, "ownlo") and not(contains(@disabled,"disabled"))]' ; that.clog('inside userscloud, '+that.get_href()); setTimeout(function(){ that.killframes() }, 456); if( g('.innerTB') ){ if( btnDl = xp(btn_selector, null, true) ){ setTimeout(function(){ tform = that.closest(btnDl, 'form'); if( tform ){ tform.submit() } else{ SimulateMouse( btnDl, "click", true); } }, 345); } else if( btnDl = g('#dl_link a') ){ // Final link that.set_href(btnDl.getAttribute('href')); } else{ that.clog('Missing download button'); } } else{ that.clog('Not download page'); } } }, hulkload: { rule: /hulkload\.com|up2me\.net/, run: function(){ var that = this, btnDl = null; that.clog('inside hulkload, '+that.get_href()); if (!$('.filepanelag').length){ that.clog('Now download page'); return !1; } // cleanup page setTimeout(function(){ that.killframes(); $('[class*="adscent"]').remove(); }, 1100); btnDl = $('#direct_link'); if (btnDl.length){ btnDl = btnDl.get(0); SimulateMouse( btnDl, "click", true); } else{ // count down with captcha.. that.clog('Please wait then insert captcha'); } } }, dailyuploads: { rule: /dailyuploads\.net/, run: function(){ var that = this, recapcay = g('.g-recaptcha'), site_key = null, form = null, btnDl = null, par = null ; // Final-page if ((par = g('.inner')) && xp('//h2[contains(text(),"Link Generated")]', par, true)){ btnDl = g('a[href*=".dailyuploads.net"]', par); if( btnDl ){ setTimeout(function(){ SimulateMouse(btnDl, "click", true); }, 1235) } else{ that.clog('Missing download button'); } } else{ // Init page form = g('form[name=F1]'); btnDl = g('[name=fs_download_file]'); if ($('#chkIsAdd').is(':checked')) $('#chkIsAdd').trigger('click'); if (recapcay){ site_key = recapcay.getAttribute('data-sitekey'); that.clog('Recapcay found, site_key: '+site_key); $(recapcay) .replaceWith($('<div id="maknyos-recaptcha" data-sitekey="'+site_key+'"></div>')); // Incase of grecaptcha lib properly loaded setTimeout(function(){ // recaptcha-rebuilder var scriptHandler = function(_site_key){ return (function(win, $){ if("undefined" !== typeof grecaptcha){ grecaptcha.render("maknyos-recaptcha", { sitekey: "___SITEKEY___", callback: function(){ var $par = null; if ($('#chkIsAdd').is(':checked')) $('#chkIsAdd').trigger('click'); $par = $('#chkIsAdd').closest('div'); $par.find('button:visible').trigger("click") } }); } else{ console.log('grecaptcha undefined'); } })(window, $); }; scriptHandler = scriptHandler.toString(); scriptHandler = scriptHandler.replace(/___SITEKEY___/, site_key); that.injectBodyScript(scriptHandler); }, 567); } else if(form || btnDl){ that.clog('Recapcay not found, direct submitting..'); if (form) that.trySumbit(form); else if (btnDl) that.trySumbit(btnDl); else that.clog('Missing download button'); } else{ that.clog('Not a download page'); } } } }, rgho: { rule: /rgho\.st/, run: function(){ var that = this, href = '', btn_selector = '//a[contains(@href,"/download/") and contains(text(),"ownload")]'; if( btnDl = xp(btn_selector, null, true) ){ href = btnDl.getAttribute('href'); if( href ) that.set_href( href ); else SimulateMouse(btnDl, "click", true); }else{ this.clog('rgho: missing wrapper button, page may changed'); } } }, uploadee: { rule: /upload\.ee/, run: function(){ var wrapBox = g('.textbody:last-child'), btnDl = null ; if( wrapBox ){ btnDl = g('a[href*="/download/"]', wrapBox); if( btnDl ) SimulateMouse(btnDl, "click", true); else this.clog('uploadee: missing download button, page may changed'); } else{ this.clog('uploadee: missing wrapper button, page may changed'); } } }, bcvc: { rule: /bc\.vc/, noBaseClean: true, run: function(){ var that = this, loc = location.href, btnSel = '#skip_btt' ; if( loc.indexOf('#') == -1 ){ top.location.href = loc+'#'; location.reload(); return !1; } else{ if('function' === typeof window['IFrameLoaded']) window['IFrameLoaded'](); try{ $('body>iframe') .css('position','absolute') .css('width',0) .css('height',0) .css('left','-999999px') ; }catch(e){} (function wait2Click(){ that.waitforit(function(){ return g(btnSel); }, function(){ SimulateMouse(g(btnSel), "click", true); }, 567); })(); } } }, shst: { rule: /sh\.st/, run: function(){ var that = this, scripts = document.getElementsByTagName( 'script' ), cbu = null, si = null, cucok, cbName ; for( var i = 0; i < scripts.length; ++i ) { innerScript = scripts[i].innerHTML; if( !innerScript ) continue; if( null === cbu && (cucok = /callbackUrl\s*:\s*[\'\"]([^\'\"]+)/i.exec(innerScript)) ) cbu = cucok[1]; if( null === si && (cucok = /sessionId\s*:\s*[\'\"]([^\'\"]+)/i.exec(innerScript)) ) si = cucok[1]; if( cbu != null && si != null) break; } if( cbu && si && 'function' == typeof reqwest ){ cbName = 'mkycb_'+String(Math.random()).replace(/0\./,''); that.waitforit(function(){ var btn = g("#skip_button"); return that.isVisible(btn) && that.hasClass('show', btn); }, function(){ reqwest({ url: cbu+'?', method: 'get', data: { adSessionId: si, adbd: 1, callback: cbName, }, type: 'jsonp', success: function(ret){ if( ret && ret.destinationUrl ) location.href = ret.destinationUrl; }, timeout: 1e4, error: function(e){ that.clog( e ) } }); var scriptHandler = function(){ return (function(win){ win["__cbName__"] = function(ret){ var btn = document.getElementById("skip_button"); btn.textContent = 'Redirecting...'; if(ret && ret.destinationUrl) location.href = ret.destinationUrl; setTimeout(function(){ btn.setAttribute('disabled', 'disabled'); }, 200) }; })(window); }; scriptHandler = scriptHandler.toString(); scriptHandler = scriptHandler.replace(/__cbName__/i, cbName); that.injectBodyScript(scriptHandler); }, 345); } else{ that.clog('Missing callbackUrl | sessionId'+('undefined' == typeof reqwest ? ' | reqwest is Undefined' : '')); } } }, adfly: { rule: /adf\.ly/, noBaseClean: true, run: function(){ var that = this, lpath = location.pathname, id = '#home', ndv = '', link = '' ; that.clog(location.href); if( /\/ad\/locked/.test(lpath) ){ return that.waitforit(function(){ var el = g('#continue'); return (that.isVisible(el) ? el : !1); }, function(cnt){ that.clog(cnt); return setTimeout(function(){ SimulateMouse(g('a', cnt), "click", true); }); }); } //https://adf.ly/redirecting/aHR0cDovL3d3dy5tZWRpYWZpcmUuY29tLz83ajczODR3NjdiM3RyOXE= else if( /\/redirecting\/\w+/.test(lpath) ){ that.clog('inside redirecting page...'); if( (link = g('a')) ){ that.set_href( link.getAttribute('href') ); return !1; } } else if( !g(id) || !/\/\w+$/.test(lpath) ) { that.clog('['+location.href+']:: Not a redirecter page..'); return !1; } var continuum = function(ndv){ // stage-1 if( ndv ){ var poluted = ndv.indexOf('!HiT'+'o'+'mmy'), a = '', b = '' ; if (poluted >= 0) ndv = ndv.substring(0, poluted); for (var i = 0; i < ndv.length; ++i) { if (i % 2 === 0) { a = a + ndv.charAt(i); } else { b = ndv.charAt(i) + b; } } ndv = atob(a + b); ndv = ndv.substr(2); if( location.hash ) ndv += location.hash; that.set_href( ndv ); that.clog('stage-1: found link: '+ndv); return !1; } else{ that.clog('stage-1: FAIL'); } // stage-2 (failover) var elck = g('#cookie_notice'), skipSel = '#top span img[src*=sk'+'ip_'+'ad]' ; if( elck ) elck.parentNode.removeChild( elck ); that.waitforit(function(){ var btn = g(skipSel), href; if( btn ){ btn = btn.parentNode; href = btn.getAttribute('href'); } return href && /^((?:(?:ht|f)tps?\:\/\/){1}\S+)/.test(href); }, function(){ var btn = g(skipSel).parentNode, href = btn.getAttribute('href') ; if( href ) location.href = href; else that.clog('Unable get redirect link'); }, 345); }; that.killunload(); that.killevents(null, 'click'); that.killevents(null, 'mousedown'); that.injectBodyStyle('iframe{visibility:hidden!important;}'); // wait to find these elements that.clog('finding ndv'); var ping_url = location.protocol+'//'+location.hostname+'/callback/', id = $('#adReporter').find('[name="lt"]').val() ; if( id ){ ping_url += id; return $.post(ping_url, {hithere:(new Date().getTime())}, function(){ return $.get(location.href, function(ret){ var patterns = [ /var\s+eu\s+=\s+'(?!false)(.+)'/, /var\s+ysmm\s+=\s+'(.+)'/ ], cucok = null ; if( cucok = patterns[0].exec(ret) ){ that.clog('patterns[0]'); cucok = cucok[1]; } else if( cucok = patterns[1].exec(ret) ){ that.clog('patterns[1]'); cucok = cucok[1]; } return continuum( cucok ); }); }); } else{ continuum( null ); } } }, adfocus: { rule: /adfoc\.us/, run: function(){ var that = this, id = '#interstitial', skipSel = '#showSkip >a' ; if( !g(id) ){ that.clog('['+location.href+']:: Not a redirecter page..'); return !1; } that.waitforit(function(){ var btn = g(skipSel), href = null; if( btn ) href = btn.getAttribute('href'); return href && /^((?:(?:ht|f)tps?\:\/\/){1}\S+)/.test(href); }, function(){ var btn = g(skipSel), href = (btn ? btn.getAttribute('href') : null) ; if( href ) location.href = href; else that.clog('Unable get redirect link'); }, 345); } }, mypcloudcom: { rule: /my\.pcloud\.com/, run: function(){ var that = this, btn_selector = '//div[contains(@class,"button") and contains(text(),"ownload")]' ; if( xp(btn_selector, g('.button-area'), true) ){ var scriptHandler = function(_site_key){ return (function(win, $){ var gvar = gvar||{}, btn_selector = '.button-area > .button.greenbut', g = ___func_g___, frameload = ___func_frameload___, SimulateMouse = ___func_simulatemouse___ ; if('undefined' != typeof publinkData && publinkData.downloadlink){ frameload( publinkData.downloadlink ); } else{ console.log('publinkData undefined'); SimulateMouse( $(btn_selector).first().get(0), "click", true ); } })(window, $); }; scriptHandler = scriptHandler.toString(); scriptHandler = scriptHandler.replace(/___func_simulatemouse___/, SimulateMouse.toString()); scriptHandler = scriptHandler.replace(/___func_g___/, g.toString()); scriptHandler = scriptHandler.replace(/___func_frameload___/, that.frameload.toString()); that.injectBodyScript(scriptHandler); } else{ that.clog('mypcloudcom: missing button element, page may changed'); } } }, uploadrocket: { rule: /uploadrocket\.net/, run: function(){ var that = this, form = g('[name=freeorpremium]'), btnDl = null, href ; if( form ) btnDl = g('[name=method_isfree]', form); if( form && btnDl ){ SimulateMouse(btnDl, "click", true); } else if( btnDl = g('#btn_download') ){ var blah = g('#glasstop'); blah.parentNode.removeChild( blah ); that.clog('insert captcha...'); g('[name=adcopy_response]').focus(); btnDl.removeAttribute('disabled'); } else{ btnDl = xp('//a[contains(.,"rect Downlo")]', null, true); if( btnDl ){ href = btnDl.getAttribute('href'); if( href ) that.set_href( href ); else SimulateMouse(btnDl, "click", true); } else{ that.clog('uploadrocket: missing download button, page may changed'); } } } }, uplodorg: { rule: /(uplod\.org)/, run: function(){ var that = this, el = null, tform = g('#myDownloadForm'), btnDl = g('.downloadbtn:not([name])'), recapcay = g('.g-recaptcha', tform), site_key = null, href = '' ; if( tform || btnDl ){ if( el = g('a[href*="apploading.mobi"]') ) el.parentNode.removeChild( el ); if( el = g('#chkIsAdd') ) el.checked = false; if (recapcay){ if (site_key = recapcay.getAttribute('data-sitekey')){ $(recapcay) .replaceWith($('<div id="maknyos-recaptcha" data-bijikuda="1" data-sitekey="'+site_key+'"></div>')); if( g('#maknyos-recaptcha') ){ that.clog('g-recaptcha tampered'); that.waitforit(function(){ return ('undefined' == typeof grecaptcha ? !1 : grecaptcha); }, function(gr){ gr.render("maknyos-recaptcha", { sitekey: site_key, callback: function(){ if( tform ){ tform.submit(); } else{ $(btnDl).trigger('click'); } } }); }); } else{ that.clog('tampering g-recaptcha FAILED'); } } } else{ if( tform ){ tform.submit(); } else{ SimulateMouse(btnDl, "click", true); } } } else{ if( el = g('.fileInfo') ){ // # Stage 2 if( btnDl = g('.btn-download', el) ){ href = btnDl.getAttribute('href'); if( href ) that.set_href( href ); else SimulateMouse(btnDl, "click", true); } } else{ that.clog('Not download page'); } } } }, uploadsto: { rule: /uploads\.to/, run: function(){ var that = this, gtable = g('.table'), recapcay = g('.g-recaptcha', gtable), site_key = null, btnCheck = null, tform = null, btnDl = g("#method_free") ; if( recapcay && g('#method_free') ){ site_key = recapcay.getAttribute('data-sitekey') if('function' === typeof $ && site_key){ $(recapcay) .replaceWith($('<div id="maknyos-recaptcha" data-bijikuda="1" data-sitekey="'+site_key+'"></div>')); if( g('#maknyos-recaptcha') ){ that.clog('g-recaptcha tampered'); that.waitforit(function(){ return ('undefined' == typeof grecaptcha ? !1 : grecaptcha); }, function(gr){ gr.render("maknyos-recaptcha", { sitekey: site_key, callback: function(){ $("#method_free").trigger("click") } }); }); } else{ that.clog('tampering g-recaptcha FAILED'); } } else{ that.clog('Error: site_key or jQuery is not defined'); } } else{ if( btnDl ){ // # Stage 1, incase no recapcay SimulateMouse( btnDl, "click", true); } else if( btnDl = g('#btn_download') ){ // # Stage 2 if( btnCheck = g('#chkIsAdd') ) btnCheck.checked = false; tform = that.closest(btnDl, 'form'); if( tform ) tform.submit(); else SimulateMouse( btnDl, "click", true); } else if( btnDl = g('.btn.btn-primary[href*="downlod.me"]') ){ that.clog('Stage 3'); // # Stage 3 SimulateMouse( btnDl, "click", true); } else{ that.clog('Not download page or missing download button [Stage-?], page may changed'); } } } }, cloudmailru: { rule: /cloud\.mail\.ru/, run: function(){ var that = this; that.waitforit(function(){ var toolbar = g('#toolbar'); // return g('.b-toolbar__btn_download'); return g('[data-name="download"]', toolbar); }, function(btn){ var layers = g('.layers'), param_observe = { config: { attributes: false, childList: true, subtree: true, characterData: false }, callback: function(e){ var $dialog = $(e); if( $dialog && $dialog.length ) setTimeout(function(){ $dialog.find(".b-checkbox").trigger('click'); $dialog.find(".btn.btn_main").trigger('click'); if( gvar.observer ) gvar.observer.disconnect(); }, 123) } } ; that.observe(layers, param_observe); SimulateMouse(btn, "click", true); }, 345); } }, gdrive: { rule: /drive\.google\.com|docs\.google\.com/, run: function(){ var that = this, loc = that.get_href() ; if( /drive.google.com/.test( loc ) ){ gvar.stoRedirectGDrive = null; var $wrapper = $('.drive-viewer'), id_timer = 'maknyos-gd-timer', countdown = 4, $btn_cancel = $('<a href="javascript:;" class="drive-viewer-dark-button goog-inline-block drive-viewer-button drive-viewer-button-clear-border btn-cancelredirect">cancel</a>'); ; $btn_cancel.click(function(e){ if( gvar.stoRedirectGDrive ) clearInterval( gvar.stoRedirectGDrive ); $('#'+id_timer).parent().remove(); e.preventDefault(); that.clog('Redirect plan canceled..'); }); $wrapper.prepend('' +'<div class="drive-viewer-toolstrip-name timer-autodownload" style="position:absolute; z-index: 10; top:9px; right: 260px; width: auto;">' + 'Redirecting <span id="'+id_timer+'">in (X) </span>...' +'</div>' ); $wrapper.find(".timer-autodownload").append( $btn_cancel ); // stInterval gvar.stoRedirectGDrive = setInterval(function(){ var $tgt = $('#'+id_timer), count = $tgt.data('count') ; if( !(count && !isNaN(count)) && count != 0 ) $tgt.data('count', countdown); count = parseInt( $tgt.data('count') ); if( count > 0 ){ count = (count - 1); $tgt.text( 'in ('+count+') ' ); $tgt.data('count', count); } else{ clearInterval( gvar.stoRedirectGDrive ); $tgt.text(''); var id = (function(url){ var ret = null, cucok; if( cucok = /\/file\/d\/([^\/]+)/i.exec(url) ) ret = cucok[1]; return ret; })( loc ), href = location.protocol+'//docs.google.com/uc?id='+id+'&export=download' ; if( id ){ that.clog('opening href:'+href); that.set_href( href ); } } }, 1000); } else{ that.clog('Force Downloading ....'); SimulateMouse(g('#uc-download-link'), "click", true); } } }, "e-book:genlib": { rule: /gen\.lib\.rus\.ec|libgen\.io|(|\w+\.)bookfi\.net|b-ok\.org/, run: function(){ var that = this, pathname = location.pathname, host = location.hostname, matchLoc = ['foreignfiction','search.php','book'], imgdl, btnDl, form, rows, healLinks, href ; if (that.isInIframe()){ that.clog('Exiting script, soz it loaded in iframe..'); } healLinks = function(){ var $parent = $('table.c'); if( !$parent.length || !$parent.html() ){ if( $parent.length ) $parent = $('table[rules="cols"]'); else $parent = $('table'); } setTimeout(function(){ $('a[href*="ads.php"], a[href*="book/index"], a[href*="libgen.me"], a[href*="bookzz.org"], a[href*="bookfi.net"]', $parent).each(function(){ var $me = $(this), href = $me.attr('href') ; $me.html('' +'<strong>'+$me.text()+'</strong>' ); if( /ads\.php/.test(href) ){ href = href.replace('ads.php', 'get.php'); $me.attr('href', href); $me.on('click', function(e){ e.preventDefault(); $(this).addClass('opened'); window.open(this, href.replace(/\W/g,'')); return !1; }); } else{ $me.on('click', function(e){ e.preventDefault(); $(this).addClass('opened'); window.open(this, href); return !1; }); } }); that.clog('Links healed'); }, 10); }; var cssString = '' +'a#mlink:link{color: #1a0dab;text-decoration:none;}' +'a#mlink:link>strong{font-weight:normal;}' +'a#mlink:hover{text-decoration:underline;}' +'a#mlink:visited,a#mlink.opened{color: #609;}' +'a#mlink:visited>strong,a#mlink.opened>strong{font-weight:bold;}' ; host = host.replace(/^w{3}\./, ''); that.clog('host: '+host); that.clog('pathname: '+pathname); switch(host){ case "libgen.io": that.clog('pathname='+pathname); if( /\/ads\.php/.test(pathname) ){ btnDl = g('[href*="get.php?md5"]'); if( btnDl ) SimulateMouse(btnDl, "click", true); else that.clog('Missing download button') } else{ that.injectBodyStyle(cssString); healLinks(); } break; case "b-ok.org": case "en.bookfi.net": rows = gAll('.resItemBox'); form = g('#searchForm'); that.clog('Row count='+(rows && rows.length ? rows.length : 0)); that.clog(rows); if( rows && rows.length == 1 ){ if( btnDl = g('.ddownload', rows[0]) ){ try{ if (href = btnDl.getAttribute('href')) that.set_href(href); }catch(e){ SimulateMouse(btnDl, "click", true); } } else that.clog('Missing download button'); } else if(/\/book\/\w+/i.test(pathname) ){ if( btnDl = xp('//a[contains(.,"ownloa") and contains(@href,"/dl/")]', null, true) ){ try{ if (href = btnDl.getAttribute('href')) that.set_href(href); }catch(e){ SimulateMouse(btnDl, "click", true); } } else that.clog('Missing download button'); } break; // gen.lib.rus.ec default: var unsupported = true; for(var i=0, iL=matchLoc.length; i<iL; i++){ if( pathname.indexOf('/'+matchLoc[i]) !== -1 ){ unsupported = false; break; } } if( unsupported ){ that.clog('Exiting, location not supported, '+pathname); return !1 } that.injectBodyStyle(cssString); healLinks(); break; }; } }, filescdn: { rule: /filescdn\.com/, run: function(){ var that = this, btnDl = null, tform = null ; if( btnDl = g('#btn_download') ){ tform = that.closest(btnDl, 'form'); if( tform ){ tform.submit() } else{ SimulateMouse( btnDl, "click", true); } } else if( btnDl = xp('//a[(contains(.,"ownloa") and contains(.,"irect")) or contains(.,"eady!")]', null, true) ){ SimulateMouse( btnDl, "click", true ); } else{ that.clog('Not download page') } } }, uploadbank: { rule: /uploadbank\.com/, run: function(){ var that = this, cont = g('#container'), recapcay = g('.g-recaptcha', cont), site_key = null, btnDl = null ; if( recapcay ){ site_key = recapcay.getAttribute('data-sitekey') if('function' === typeof $ && site_key){ $(recapcay) .replaceWith($('<div id="maknyos-recaptcha" data-bijikuda="1" data-sitekey="'+site_key+'"></div>')); if( g('#maknyos-recaptcha') ) that.clog('g-recaptcha tampered'); else that.clog('tampering g-recaptcha FAILED'); that.waitforit(function(){ return ('undefined' == typeof grecaptcha ? !1 : grecaptcha); }, function(gr){ gr.render("maknyos-recaptcha", { sitekey: site_key, callback: function(){ $("#downloadbtn").trigger("click") } }); }); } else{ that.clog('Error: site_key or jQuery is not defined'); } } else if( btnDl = g('#downloadbtn') ){ SimulateMouse( btnDl, "click", true ); } else if( btnDl = g('img[src*="downloadbutton"]') ){ btnDl = btnDl.parentNode; SimulateMouse( btnDl, "click", true ); } else{ that.clog('Not download page or missing download button'); } } }, top4top: { rule: /top4top\.net/, run: function(){ var that = this, parent = g('#url'), btnDl = null, scripts, inner, cucok, gotit ; if( parent ){ btnDl = g('a', parent); scripts = document.getElementsByTagName( 'script' ); gotit = !1; for( var i = 0; i < scripts.length; ++i ) { inner = scripts[i].innerHTML; if( !inner ) continue; if( inner.indexOf('timer') === -1 ) continue; if( cucok = /<a\shref=['"]([^'"]+)/.exec(inner) ){ btnDl = document.createElement('a'); btnDl.setAttribute('href', cucok[1]); gotit = true; setTimeout(function(){ SimulateMouse( btnDl, "click", true ); }, 100); break; } } // end: for if( !gotit ) this.waitforit(function(){ return g('.download', parent); }, function(el){ btnDl = g('a', el); if( btnDl ) SimulateMouse( btnDl, "click", true ); }, 100); } } }, dropme: { rule: /drop\.me/, run: function(){ var that = this; return this.waitforit(function(){ return g('form[name="myFile"]'); }, function(el){ if( el ) return el.submit(); }, 100); } }, dropapk: { rule: /dropapk\.com/, run: function(){ var that = this; if( g('div[id*="ez-downloa"]') || g('div[class*="gez-downloa"]') ){ return that.waitforit(function(){ var sel = '#downloadbtn', el = null, daform = null ; if( !g(sel) ){ if( g('img[src*="down_final.png"]') ) sel = 'img[src*="down_final.png"]'; else sel = '[type="submit"][name="method_free"]'; } that.clog('sel='+sel); if( sel ) return g(sel, null, true); }, function(el){ var hid = null; if( el ) { if( el.nodeName == 'IMG' ){ SimulateMouse(el.parentNode, "click", true); } else{ if( el.nodeName == 'INPUT' ){ hid = document.createElement('input') hid.setAttribute('type', 'hidden'); hid.setAttribute('name', el.getAttribute('name')); hid.setAttribute('value', el.getAttribute('value')); } daform = that.closest(el, 'form'); if( daform ){ if( hid ) daform.appendChild( hid ); daform.submit(); } else{ SimulateMouse(el, "click", true); } } } }, 100); } else{ that.clog('Not download page'); } } }, /** * Applied for these hosts: * cloudyfiles.org * suprafiles.org * megadrive.co */ suprafiles:{ rule: /suprafiles\.org|cloudyfiles\.org|megadrive\.co/, run: function(){ var that = this, btnDownload = g('[type="submit"][name="method_free"]',null,true), recapcay = g('.g-recaptcha'), site_key = null, form = null, cont = null, lite_hostname = null, el = null ; that.clog(recapcay); // # 1 if( btnDownload ){ that.clog('#1'); that.trySumbit( btnDownload ); } else{ if( form = g('form[name="F1"]') ){ // # 2 that.clog('#2'); if( recapcay ){ site_key = recapcay.getAttribute('data-sitekey'); that.clog('Recapcay found, site_key: '+site_key); $(recapcay) .replaceWith($('<div id="maknyos-recaptcha" data-sitekey="'+site_key+'"></div>')); // Incase of grecaptcha lib properly loaded setTimeout(function(){ // recaptcha-rebuilder var scriptHandler = function(_site_key){ return (function(win, $){ if("undefined" !== typeof grecaptcha){ grecaptcha.render("maknyos-recaptcha", { sitekey: "___SITEKEY___", callback: function(){ var theform = document.querySelector('form[name=F1]'); if (theform) theform.submit(); } }); } else{ console.log('grecaptcha undefined'); } })(window, $); }; scriptHandler = scriptHandler.toString(); scriptHandler = scriptHandler.replace(/___SITEKEY___/, site_key); that.injectBodyScript(scriptHandler); }, 567); } else{ that.clog('Recapcay not found, directly submitting..'); form.submit(); } } else{ // # 3 that.clog('#3'); cont = g('#container'); lite_hostname = (location.hostname+'').replace(/^w{3}\./,''); if( cont && (el = g('a[href*="'+lite_hostname+'"]', cont)) ){ SimulateMouse(el, "click", true); } else{ that.clog('Not download page'); } } } } }, publicopera: { rule: /public\.upera\.co/, run: function(){ var that = this, section = g('.hbox'), anyform = null, btnDl = null ; if( section ) { anyform = g('form'); // # stage-1 if( anyform ){ anyform.submit(); } // # stage-2 else{ btnDl = xp('//*[contains(@class,"btn") and contains(.,"ownloa")]', null, true); if( !btnDl ){ btnDl = xp('.//a[contains(@href,"upera.co") and last()]', g('.panel', section), true); } if( btnDl ) SimulateMouse(btnDl, "click", true); } } else{ that.clog("Not a download page"); return !1; } } }, fileupload: { rule: /file-upload\.com/, run: function(){ var that = this, recapcay = g('.g-recaptcha'), site_key = null, countdown = null, btnDl = null, tform = g('form[name=F1]'), cb_countdown = function(){} ; if( btnDl = g('[type="submit"][name="method_free"]', null, true) ){ // # Stage 1 that.trySumbit( btnDl ); } else if( btnDl = g('#download-btn', tform) ){ // # Stage 3 SimulateMouse(btnDl, "click", true); } else{ // # Stage 2 $('#downloadbtn') .css('font-size', '2em'); cb_countdown = function(){ var btnDl_ = g('#downloadbtn', tform); if( recapcay ){ that.waitforit(function(){ return ('undefined' == typeof grecaptcha ? !1 : grecaptcha); }, function(gr){ if (!$('#maknyos-recaptcha').html()){ gr.render("maknyos-recaptcha", { sitekey: recapcay.getAttribute('data-sitekey'), callback: function(){ return that.trySumbit( btnDl_ ); } }); } else{ that.trySumbit( btnDl_ ); } }); } else if( btnDl_ ){ SimulateMouse( btnDl_, "click", true ); } else{ that.clog('Missing download button') } }; // is there recapcay, early tampered dom g-recaptcha if( recapcay ){ site_key = recapcay.getAttribute('data-sitekey') if('function' === typeof $ && site_key){ $(recapcay) .replaceWith($('<div id="maknyos-recaptcha" data-bijikuda="1" data-sitekey="'+site_key+'"></div>')); if( g('#maknyos-recaptcha') ) that.clog('g-recaptcha tampered'); else that.clog('tampering g-recaptcha FAILED'); that.waitforit(function(){ return ('undefined' == typeof grecaptcha ? !1 : grecaptcha); }, function(gr){ gr.render("maknyos-recaptcha", { sitekey: site_key, callback: function(){ $('#maknyos-recaptcha').attr('data-checked', !0); var countdown_ = g('#countdown .seconds'); if (countdown_) if ((parseInt(countdown_.textContent)-1) <= 0){ return cb_countdown(); } } }); }); } } countdown = g('#countdown .seconds'); if( countdown && (countdown = (parseInt(countdown.textContent)-1) ) ){ countdown = Math.floor(countdown / 3); that.waitforit(function(){ var cnt = g('#countdown .seconds'); return ((parseInt(cnt.textContent)-1) > 0 ? !1 : true); }, function(){ cb_countdown(); }, countdown * 1000); } else{ // remove disabled if( btnDl = g('#downloadbtn', tform) ){ btnDl.disabled = false; if( recapcay ) cb_countdown(); else that.trySumbit( btnDl ); } if( !g('.page-wrap') ){ that.clog('Not download page'); } } } } }, topddl: { rule: /topddl\.net/, run: function(){ var that = this, btnDownload = g('#btn-download',null,true) ; if( btnDownload ){ SimulateMouse(btnDownload, "click", true); } else if( (btnDownload = g('.btn.btn-success',null,true)) ){ btnDownload.innerHTML = '<i class="fa fa-google"></i> Login to Download File..'; try{ $(btnDownload).removeClass('btn-success').addClass('btn-danger'); }catch(e){} } else{ that.clog('Button download not found, page may changed.'); } } }, douploads: { rule: /douploads\.com/, run: function(){ var that = this, btnCheck = null, btnDl = null, countdown = g('#countdown'), cb_countdown = function(){} ; if( btnDl = g('#downloadbtn') ){ if( btnCheck = g('#chkIsAdd') ) btnCheck.checked = false; cb_countdown = function(){ tform = that.closest(btnDl, 'form'); if( tform ){ tform.submit() } else{ SimulateMouse( btnDl, "click", true); } }; countdown = g('#countdown .seconds'); if( countdown && (countdown = (parseInt(countdown.textContent)-1) ) ){ countdown = Math.floor(countdown / 3); that.waitforit(function(){ var cnt = g('#countdown .seconds'); return ((parseInt(cnt.textContent)-1) > 0 ? !1 : true); }, function(){ cb_countdown(); }, countdown * 1000); } else{ cb_countdown() } } else if( btnDl = g('#direct_link a[href*="douploads.com"]') ){ SimulateMouse( btnDl, "click", true ); } else{ if( g('.directlinkpage') || g('.downloadfile1') ) that.clog('missing download button') else that.clog('Not download page') } } }, dfpan: { rule: /dfpan\.com/, noBaseClean: true, run: function(){ var that = this, el = null, tform = null, wrap = null, vth = null, btnDl = null, waitFor = !1, unit = '', interval = g('#interval_div') ; that.killframes(); that.killevents(null, 'mousedown'); if( btnDl = g('#inputDownWait>.slow_button') ){ if( !that.isVisible(interval) ){ that.clog(btnDl); SimulateMouse( btnDl, "click", true ); setTimeout(function(){ vth = g('#vcode_th'); if( vth && that.isVisible(vth) ){ if( wrap = g('td>div', vth) ){ el = document.createElement('p'); el.style.color = '#d00'; el.innerHTML = 'Press ENTER to continue<br/><small>You may need to wait 30 seconds before download started</small>'; wrap.appendChild( el ); } setTimeout(function(){ g('[type=text]', vth).focus(); }, 0); btnDl.style.backgroundColor = '#3b8ccc'; } else{ that.clog('vcode is not visible'); } }, 567); } else{ that.clog('Download interupted with interval'); btnDl.disabled = "disabled"; if( waitFor = g('#down_interval_tag') ){ unit = waitFor.parentNode.textContent.trim(); unit = unit.replace(/\s*/g,''); unit = unit.replace(/\d+-/g,''); waitFor = parseInt( waitFor.textContent ); if( /minut/.test(unit) ) waitFor = (waitFor * 60); else if( /hour/.test(unit) ) waitFor = (waitFor * 60 * 60); waitFor = (waitFor + 3); this.waitforit(function(){ var int = g('#interval_div'); return that.isVisible(int) ? !1 : true; }, function(){ location.href = location.href; }, waitFor * 1000); } } } else if( btnDl = g('#downbtn > a:first-child') ){ SimulateMouse( btnDl, "click", true ); } else{ that.clog('Not download page or missing download button') } } }, yimuhe: { rule: /yimuhe\.com/, noBaseClean: true, run: function(){ var that = this, el = null, el_ch = null, tform = null, btnDl = null ; that.killframes(); that.killevents(null, 'mousedown'); if( g('.sharp .w630') ){ if( btnDl = g('a[href*=down-]', g('.sharp .w630')) ){ SimulateMouse( btnDl, "click", true ); } else{ that.clog('Missing download button'); } } else if( g('.sharp .w632') ){ if( el = g('#download') ) el.style.backgroundColor = '#f0f0f0'; if( btnDl = gAll('.download>a') ){ btnDl = btnDl[0]; btnDl.style.backgroundColor = '#ccc'; btnDl.style.borderColor = '#999'; btnDl.style.verticalAlign = 'top'; btnDl.style.position = 'relative'; btnDl.style.display = 'inline-block'; btnDl.setAttribute('title', 'DOWNLOAD'); el_ch = document.createElement('abbr'); el_ch.style.position = 'absolute'; el_ch.style.left = '0'; el_ch.style.bottom = '0'; el_ch.style.width = '100%'; el_ch.style.backgroundColor = 'rgba(60, 132, 137, 0.98)'; el_ch.style.color = '#fff'; el_ch.style.lineHeight = '1.2'; el_ch.innerText = 'DOWNLOAD'; btnDl.appendChild(el_ch); } el = g('#loading'); if( el && that.isVisible(el) ){ var wrap_waitfor = function(btn){ that.clog('inside wrap_waitfor..'); that.waitforit(function(){ var dl = g('#download'); return (that.isVisible(dl) ? true : !1); }, function(){ that.clog('inside callbak of wrap_waitfor'); that.clog(btn); SimulateMouse( btn, "click", true ); }); }; that.waitforit(function(){ var el_ = g('#loading'); return (el_ && that.isVisible(el_) ? !1 : g('.yzm #code')); }, function(el__){ if( el__ ){ if('undefined' != typeof $){ $(el__).on('keydown', function(e){ that.clog('keydown='+$(this).val()+'; e.keyCode='+e.keyCode); if( e.keyCode === 13 && btnDl ) wrap_waitfor(btnDl); }); } setTimeout(function(){ el__.focus(); }, 0); } else{ that.clog('Missing input code'); if( tform = g('form', g('.yzm')) ) tform.submit(); } }, 567); } else{ that.clog('throbber element not found, page may changed'); } } else if( /\/n_dd\.php/.test(location.pathname) ){ if( btnDl = g('#downs') ){ btnDl.innerText = 'DOWNLOAD'; if('function' === typeof $){ $('.kuan, .ggao').css('visibility', 'hidden'); btnDl.style.position = 'absolute'; btnDl.style.zIndex = '999999'; btnDl.style.display = 'block'; btnDl.style.fontSize = '2.5em'; btnDl.style.lineHeight = '2em'; } setTimeout(function(){ SimulateMouse( btnDl, "click", true ); }, 123); } else{ that.clog('Missing download button'); } } else{ that.clog('Not download page'); } } }, // alias for: linkbucks? jzrputtbut: { rule: /jzrputtbut\.net/, noBaseClean: true, run: function(){ var that = this; that.killevents(null, 'mousedown'); // iframe handler var o = document.getElementsByTagName('iframe'); for(var i=o.length-1; i>=0; i--){ o[i].style.position = 'absolute'; o[i].style.left = '-999999px'; o[i].style.top = '-999999px'; } that.waitforit(function(){ var timer = g('#timer'); return (that.isVisible(timer) ? !1 : g('#skiplink')); }, function(el){ if( el ) SimulateMouse( el, "click", true ); }, 100); } }, up4ever: { rule: /up-4ever\.com/, noBaseClean: true, run: function(){ var that = this, recapcay = g('.g-recaptcha'), site_key = null, btnDl = null, el = null, hs = null, countdown = null, cb_countdown = function(){} ; setTimeout(function(){ $('#adblock_detected').val(0); $("#hiddensection").show(); }, 1555); el = g('#hiddensection2'); if( el ) el.parentNode.removeChild(el); if( btnDl = g('[type="submit"][name="method_free"]', null, true) ){ // # Stage 1 that.trySumbit( btnDl ); } else if( btnDl = g('#btn_downloadLink') ){ // # Stage 3 that.killframes(); this.killevents(null, 'click'); SimulateMouse(btnDl, "click", true); } else{ // # Stage 2 hs = g('#hiddensection'); cb_countdown = function(){ $(hs).show(); if( recapcay ){ that.waitforit(function(){ return ('undefined' == typeof grecaptcha ? !1 : grecaptcha); }, function(gr){ $('.alert-waiting').remove(); gr.render("maknyos-recaptcha", { sitekey: recapcay.getAttribute('data-sitekey'), callback: function(){ $("#downloadbtn").trigger("click") } }); var btnDl_ = g('#downloadbtn'); if( btnDl_ && 'undefined' != typeof $) $(btnDl_).prev().remove(); }); } else if( btnDl = g('#downloadbtn') ){ SimulateMouse( btnDl, "click", true ); } else{ that.clog('Missing download button') } }; // is there recapcay, early tampered dom g-recaptcha if( recapcay ){ site_key = recapcay.getAttribute('data-sitekey') if( site_key ){ $(recapcay) .replaceWith($('<div id="maknyos-recaptcha" data-bijikuda="1" data-sitekey="'+site_key+'"></div>')); $(hs).prev().replaceWith($('<div class="alert alert-success alert-waiting"><h3 style="text-align:center;">Wait For it...</h3></div>')); if( g('#maknyos-recaptcha') ) that.clog('g-recaptcha tampered'); else that.clog('tampering g-recaptcha FAILED'); } } $(hs).show(); countdown = g('#countdown .seconds'); if( countdown && (countdown = (parseInt(countdown.textContent)-1) ) ){ countdown = Math.floor(countdown / 3); that.waitforit(function(){ that.killframes(); $(hs).show(); var cnt = g('#countdown .seconds'); return ((parseInt(cnt.textContent)-1) > 0 ? !1 : true); }, function(){ cb_countdown(); }, countdown * 1000); } else{ that.clog('countdown not found.'); // remove disabled if( btnDl = g('#downloadbtn') ){ btnDl.disabled = false; if( recapcay ) cb_countdown(); else SimulateMouse(btnDl, "click", true); } else{ that.clog('Not download page'); } } } // end: stage-2 } }, '3rbup': { rule: /\b3rbup\.com/, run: function(){ var that = this, btnDl = null, countdown = null, cdown_sel = '.download-timer-seconds', dltimer = g('.download-timer') ; if( dltimer ){ if( countdown = g(cdown_sel) ){ that.waitforit(function(){ var eltimer = g(cdown_sel); return (eltimer ? !1 : g('.btn', dltimer)); }, function(link){ if( link.getAttribute('href') ){ that.set_href( link.getAttribute('href') ); } else{ SimulateMouse(btn, "click", true); } }); } else if( btnDl = g('.btn', dltimer) ){ SimulateMouse(btnDl, "click", true); } else{ that.clog('Not download page'); } } else if( btnDl = g('a[href*="download_token"]') ){ SimulateMouse(btnDl, "click", true); } else{ that.clog('Missing download link'); } } }, megadrive: { rule: /megadrive\.co/, run: function(){ var that = this, btnDl = g('[type="submit"][name="method_free"]', null, true) ; // # 1 if( btnDl ){ that.trySumbit( btnDl ); } else if( btnDl = g('#downloadbtn') ){ that.trySumbit( btnDl ); } else{ that.clog('Not download page or missing download button'); } } }, samaupcom: { rule: /samaup\.com/, run: function(){ var that = this, btnCheck = null, btnDl = null, countdown = g('#countdown'), cb_countdown = function(){} ; if( btnDl = g('#downloadbtn') ){ if( btnCheck = g('#chkIsAdd') ) btnCheck.checked = false; cb_countdown = function(){ tform = that.closest(btnDl, 'form'); if( tform ){ tform.submit() } else{ SimulateMouse( btnDl, "click", true); } }; countdown = g('#countdown .seconds'); if( countdown && (countdown = (parseInt(countdown.textContent)-1) ) ){ countdown = Math.floor(countdown / 3); that.waitforit(function(){ var cnt = g('#countdown .seconds'); return ((parseInt(cnt.textContent)-1) > 0 ? !1 : true); }, function(){ cb_countdown(); }, countdown * 1000); } else{ cb_countdown() } } else if( btnDl = g('.downloadbtn a[href*="samaup.com"]') ){ SimulateMouse( btnDl, "click", true ); } else{ that.clog('Not download page OR missing download button') } } }, akoam: { rule: /ako\.am/, run: function(){ var that = this, url = that.get_href(), pdata = {}, parDT = null, dlGotIt = null ; if( parDT = g('.download_timer') ){ // which-ever done earlier, try xhr first $.post(url, pdata, function(ret){ if( ret ){ try{ ret = JSON.parse(ret); }catch(e){ that.clog('Fail parsing JSON'); } } if( ret && ret.direct_link ){ dlGotIt = true; var $el = $('<a '+(ret.hash_data ? 'hash-data="'+ret.hash_data+'"':'')+' class="download_buttonX" style="color: #ff0000; border: 5px solid #ff0000;" href="'+ret.direct_link+'">DOWNLOAD</a>'); $('<div id="wrapfdl" style="position:absolute; top: 0; left:0; color: #ddd; background-color:rgba(34, 34, 34, 0.89); padding: 10px 0; text-align: center; width: 100%;"></div>') .appendTo( $(parDT) ); $('#wrapfdl').html( $el ); $el = $('#wrapfdl').find('.download_buttonX'); if( $el.length ) SimulateMouse($el.get(0) , "click", true ); } else{ that.clog('XHR Failed.') that.clog(ret); } }); // inline we keep on waiting.. that.waitforit(function(){ var btn = g('#timerHolder .download_button'); return btn ? btn : null; }, function(el){ if( !dlGotIt ) SimulateMouse( el, "click", true ); }, 1000); } else{ that.clog('Not download page, or missing element: .download_timer'); } } }, rapidgator: { rule: /rapidgator\.net/, run: function(){ var that = this, el = null, dlBtn = null ; if( el = g('.btn-free.link') ){ SimulateMouse( el, "click", true ); } else if( dlBtn = g('.btn-download') ){ SimulateMouse( dlBtn, "click", true ); } else{ that.clog('Missing download button'); } } }, filefactory: { rule: /filefactory\.com/, run: function(){ var that = this, el = null, delay = 0, dlBtn = null ; if( el = g('#file-download-free-action-slow') ){ delay = parseInt( g('#countdown_clock').getAttribute('data-delay') ); SimulateMouse( el, "click", true ); if( delay ){ setTimeout(function(){ // inline we keep on waiting.. that.waitforit(function(){ var btn = g('#file-download-free-action-start'); return btn ? btn : null; }, function(el){ SimulateMouse( el, "click", true ); }, 1000); }, delay * 1000); } else if( dlBtn = g('#file-download-free-action-start') ){ SimulateMouse( dlBtn, "click", true ); } else{ that.clog('Missing download button'); } } else{ // #file-download-free-action-start that.clog('Missing download button'); } } }, dlfree: { rule: /dl\.free\.fr/, run: function(){ var that = this, el = g('.form-button') ; if( el ){ that.trySumbit( el ); } else{ that.clog('Missing download button'); } } }, '4shared':{ rule: /4shared\.com/, run: function(){ var that = this, el = null, rgx = /^\/(\w+)\//, cucok = rgx.exec(location.pathname), url = that.get_href() ; if( !(cucok && cucok.length > 1) ) return !1; if( cucok[1] == 'folder' ){ that.clog('Do nothing on folder page'); return !1; } if( cucok[1] != 'get' ){ rgx = new RegExp("^/"+cucok[1]+"/"); url = location.pathname.replace(rgx, "/get/"); url = location.protocol+'//'+location.hostname+url; that.set_href( url ); return !1; } // Good-togo if( el = g('.freeDownloadButton') ){ that.trySumbit( el ); setTimeout(function(){ if( g('.p_window') && document.hidden ) alert('Please login to continue download'); }, 456); } else{ that.clog('Not a download page or missing download button'); } } }, bdnupload: { rule: /bdnupload\.com/, run: function(){ var that = this, btnDl = null, pSel = g('#pSel'), host = location.hostname, wrapper = 'b' ; that.hidefixed(); if( btnDl = g('[type="submit"][name="method_free"]',null,true) ){ that.trySumbit( btnDl ); } else if( xp('//'+wrapper+'[contains(text(),"Link Generated")]', pSel, true) ){ host = host.replace(/^w{3}\./, ''); btnDl = g('a[href*=".'+host+'"]') if (!btnDl) btnDl = g('#direct_link>a'); if( btnDl ){ that.trySumbit( btnDl ); } else{ that.clog('Missing download button'); } } else if( btnDl = g('#btn_download,#downloadbtn') ){ that.trySumbit( btnDl ); } else{ that.clog('Not download page or missing download button'); } // if( btnDl = g('#downloadbtn') ){ // cb_countdown = function(){ // that.trySumbit( btnDl ); // }; // countdown = g('#countdown .seconds'); // if( countdown && (countdown = (parseInt(countdown.textContent)-1) ) ){ // countdown = Math.floor(countdown / 3); // that.waitforit(function(){ // var cnt = g('#countdown .seconds'); // return ((parseInt(cnt.textContent)-1) > 0 ? !1 : true); // }, function(){ // cb_countdown(); // }, countdown * 1000); // } // else{ // cb_countdown() // } // } // else if( btnDl = g('img[alt*="o Download"]') ){ // SimulateMouse( btnDl.parentNode, "click", true ); // } // else{ // that.clog('Not download page OR missing download button') // } } }, '9xupload': { rule: /9xupload\.me/, run: function(){ var that = this, btnDl = null, par = g('#container>table') ; if( btnDl = g('#downloadbtn') ){ that.trySumbit( btnDl ); } else if( xp('//*[contains(text(),"d Link Generated")]', g('table', par), true) ){ if( btnDl = g('a[href*=".'+location.hostname+'"]', par) ){ that.trySumbit( btnDl ); } else{ that.clog('Missing download button'); } } else{ that.clog('Not download page or Missing download button'); } } }, indishare: { rule: /indishare\.me/, run: function(){ var that = this, btnDl = null, elxp = null, countdown = 0, par = g('.content_mdl'), cb_countdown = function(){} ; that.hidefixed(); if( btnDl = g('#btn_download') ){ cb_countdown = function(){ that.trySumbit( btnDl ); }; countdown = g('#countdown_str span'); if( countdown && (countdown = (parseInt(countdown.textContent)-1) ) ){ countdown = Math.floor(countdown / 3); that.waitforit(function(){ var cnt = g('#countdown_str span'); return ((parseInt(cnt.textContent)-1) > 0 ? !1 : true); }, function(){ cb_countdown(); }, countdown * 1000); } else{ setTimeout(function(){ cb_countdown() }, 5 * 1000); } } else if( par && (elxp = xp('//h1[contains(text(),"Link Generated")]', par, true)) ){ if( btnDl = g('a>img[src*="'+location.hostname+'"]', elxp.parentNode) ){ btnDl = btnDl.parentNode; that.trySumbit( btnDl ); } else{ that.clog('Missing download button'); } } else{ that.clog('Not download page or Missing download button'); } } }, minhatecacom: { rule: /minhateca\.com\.br/, run: function(){ var that = this, btnDl = null, wrapper = g('#fileDetails') ; if( !wrapper ){ that.clog('Not download page'); return !1; } // Good togo if( (btnDl = g('.greenActionButton', wrapper)) ){ // doin xhr var pdata = {}, el = null, url = location.protocol+'//'+location.hostname+'/action/License/Download', tokenfield = '__RequestVerificationToken', defaultAct = function(button){ SimulateMouse(button, "click", true); } ; if( el = g('[name="'+tokenfield+'"]') ) { pdata[tokenfield] = el.value; if( el = g('[name="FileId"]') ) pdata.fileId = el.value; $.post(url, pdata, function(ret){ that.clog(ret); if( ret && ret.redirectUrl ){ setTimeout(function(){ that.frameload( ret.redirectUrl ); }, 1324); } else{ that.clog('Bad response of XHR, failing over...'); defaultAct(btnDl); } }); } else{ that.clog('Mehh, failover. just do click button'); defaultAct(btnDl); } } else{ that.clog('Missing download button'); } } }, clicknuploadorg: { rule: /clicknupload\.org/, noBaseClean: true, run: function(){ var that = this, btnDl = g('[type="submit"][name="method_free"]',null,true), parent = null, cucok = null ; if( btnDl ){ that.trySumbit( btnDl ); } else if( btnDl = g('#downloadbtn') ){ parent = btnDl.parentNode; if( parent.nodeName == 'FORM' ){ that.trySumbit( btnDl ); } else{ if( !/https?\:/.test(btnDl.getAttribute('href')) && btnDl.getAttribute('onClick') ){ if( cucok = /(https?\:[^\'\"]+)/.exec(btnDl.getAttribute('onClick')) ){ that.set_href( cucok[1] ); } else{ that.clog('Something went wrong while getting download link'); } } else{ SimulateMouse( btnDl, "click", true ); } } } else{ that.clog('Not downlaod page'); } } } }; // end of patterns var MNy = new MaknyosHelper(document.baseURI); MNy.matchDomain().matchAction().invokeAction(); // lil-helpers function isDefined(x) { return!(x == null && x !== null) } function isUndefined(x) { return x == null && x !== null } function SimulateMouse(elem, event, preventDef, prefilter) { if(typeof elem != "object") return; // is it an a element? try with iframe loader var is_error = null, href = (elem && elem.getAttribute ? elem.getAttribute("href") : null); // make sure it's link, not some sumthin like: "javascript:;" if( href && /^((?:(?:ht|f)tps?\:\/\/){1}\S+)/.test(href) ){ try{ if('function' == typeof prefilter) href = prefilter( href ); if( typeof href === "string" && href ){ // is the direct-link is not Mixed Content with https of parent location var rgx = new RegExp("^"+location.protocol); if( !rgx.test(href) ){ is_error = true; } else{ MNy.action.clog("SimulateMouse trying href loaded to iFrame"); MNy.action.frameload(href); is_error = false; } } else{ if( href ) is_error = false; else is_error = true; } }catch(e){ is_error = true } } else{ MNy.action.clog("Element is either not link or invalid format. href="+href); } // failover, just click dat button if( is_error || is_error === null ){ MNy.action.clog("SimulateMouse-click with MouseEvents"); var evObj = document.createEvent("MouseEvents"); preventDef = isDefined(preventDef) && preventDef ? true : false; evObj.initEvent(event, preventDef, true); try { elem.dispatchEvent(evObj) }catch(e) {} } } function getParameterByName(name, the_url) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); if( isUndefined(the_url) ) the_url = location.search; var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), r###lts = regex.exec(the_url); return r###lts === null ? "" : decodeURIComponent(r###lts[1].replace(/\+/g, " ")); } function g(x, par){ !par && (par = document); return ('string' == typeof x ? par.querySelector(x) : x); } function gAll(x, par){ !par && (par = document); return ('string' == typeof x ? par.querySelectorAll(x) : x); } function xp(q, root, single) { if(root && typeof root == "string") { root = $D(root, null, true); if(!root) { return null } } if(!q) { return false } if(typeof q == "object") { return q } root = root || document; if(q[0] == "#") { return root.getElementById(q.substr(1)); }else { if(q[0] == "/" || q[0] == "." && q[1] == "/") { if(single) { return document.evaluate(q, root, null, XPathR###lt.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue } return document.evaluate(q, root, null, XPathR###lt.ORDERED_NODE_SNAPSHOT_TYPE, null) }else { if(q[0] == ".") { return root.getElementsByClassName(q.substr(1)) } } } return root.getElementsByTagName(q) } })(); /* eof. */