2024-03-14 20:29:13 +05:00
// ==UserScript==
// @name mega-enlace bypass
2024-07-11 19:17:51 +05:00
// @include /(mega-enlace|acortados).com/
2024-03-14 20:29:13 +05:00
// @grant GM_xmlhttpRequest
// @run-at document-start
// ==/UserScript==
2024-03-15 00:17:19 +05:00
// ----- Bypass mega-enlace ( Taken from AdGuard https://github.com/AdguardTeam/AdguardFilters/blob/b1622e8b387148509ca355e8070ffa5cdcf87525/SpanishFilter/sections/general_extensions.txt#L108 / https://github.com/AdguardTeam/AdguardFilters/issues/174863#issuecomment-1996735239) -----
2024-03-15 18:35:54 +05:00
// used in: pelisenhd.org latinomegahd.net gatonplayseries.com peliculasgd.net tododvdfull.com cinemaniahdd.net programasvirtualespc.net compucalitv.pro
2024-03-14 20:29:13 +05:00
( function ( ) {
2024-07-11 19:17:51 +05:00
if ( /(mega-enlace|acortados).com/ . test ( window . location . href ) ) {
2024-03-14 20:29:13 +05:00
const window = unsafeWindow ; //Added so it works in ViolentMonkey instead of AdGuard
2024-03-15 00:17:19 +05:00
//Adguard snippet expanded and modified
! function ( ) {
const e = e => { // The e function: It sends a POST request to the link shortener's server and performs some string replacements to modify the form data and action URL. Finally, it sends another POST request with the modified form data to the action URL.
const o = new XMLHttpRequest ;
o . open ( "POST" , "/check.php" , ! 0 ) , o . setRequestHeader ( "Content-type" , "application/x-www-form-urlencoded" ) , o . send ( "a" ) ;
const t = atob ( window . ext _site ) . replace ( /[a-z]/gi , ( e => String . fromCharCode ( e . charCodeAt ( 0 ) + ( e . toLowerCase ( ) <= "m" ? 13 : - 13 ) ) ) ) ;
let n = e . replaceAll ( '\\"' , '"' ) ;
n = n . replace ( "'+ api_key+ '" , window . api _key ) , n = n . replace ( "'+ link_out+ \"" , window . link _out ) , n = n . replace ( /action="'\+ .*?\+ '"/ , ` action=" ${ t } " ` ) ;
var a ;
const i = ( a = n , ( new DOMParser ) . parseFromString ( a , "text/html" ) ) . querySelector ( "form" ) ,
r = new FormData ( i ) ,
c = new XMLHttpRequest ;
c . open ( "POST" , t , ! 0 ) , c . send ( r ) , window . tab2 = window , postMessage ( "_clicked_b" , location . origin )
} ,
o = { // The o object: This object is a proxy that intercepts function calls. It checks if the function call includes the api_key parameter and performs additional modifications to the function's code. If the necessary conditions are met, it tries to bypass the link shortener by calling the e function.
apply : ( o , t , n ) => {
if ( n [ 1 ] && n [ 1 ] . includes ( "api_key" ) ) {
const o = window . link _out ,
t = window . api _key ,
a = n [ 1 ] . match ( /window\.open\(.*?\(atob\(main_site\)\).*?("\/.*\.php\?.*=").*?("&.*?=").*?(api_key),"view"/ ) ,
i = a [ 1 ] . replaceAll ( '"' , "" ) ,
r = a [ 2 ] . replaceAll ( '"' , "" ) ,
c = n [ 1 ] . match ( /<form target=[\s\S]*?<\/form>/ ) [ 0 ] ;
if ( n [ 1 ] = n [ 1 ] . replace ( "window.location.href" , "var nulled" ) , n [ 1 ] = n [ 1 ] . replace ( "window.open(f" , "location.assign(f" ) , n [ 1 ] = n [ 1 ] . replace ( /(parseInt\(c\.split\("-"\)\[0\]\)<= 0).*?(\)\{)/ , "$1$2" ) , o && t && i && r && c ) try {
"loading" === document . readyState ? window . addEventListener ( "load" , ( ( ) => {
//Check if there is already access permission before launching the POST requests for the bypass
2024-04-02 20:19:34 +05:00
let button = document . querySelector ( 'input[type="button"][id="contador"][value="IR AL ENLACE"]' ) ;
if ( ! button ) {
2024-03-15 00:17:19 +05:00
e ( c ) ; //Launch the POST requests
2024-04-02 20:19:34 +05:00
// Check periodically if access is granted to click the button
let intervalId = setInterval ( ( ) => {
let button = document . querySelector ( 'input[type="button"][id="contador"][value="Ir al enlace"]' ) ;
if ( button ) {
button . click ( ) ;
clearInterval ( intervalId ) ;
}
} , 1000 ) ;
} else if ( button ) {
2024-03-15 00:36:35 +05:00
button . click ( ) ;
2024-03-15 00:17:19 +05:00
}
} ) , {
once : ! 0
} ) : e ( c )
} catch ( e ) {
console . debug ( e )
}
}
return Reflect . apply ( o , t , n )
}
} ;
window . Function . prototype . constructor = new Proxy ( window . Function . prototype . constructor , o )
} ( ) ;
2024-03-14 20:29:13 +05:00
}
} ) ( ) ;
2024-03-15 00:17:19 +05:00
// ----- ----- -----