adf.ly && lienscash.com && adfoc.us && bc.vc && sh.st bypasser

Ignorar links do adf.ly, lienscash.com, adfoc.us, bc.vc e sh.st.

  1. // ==UserScript==
  2. // @name adf.ly && lienscash.com && adfoc.us && bc.vc && sh.st bypasser
  3. // @namespace tag: adfly,lienscash,adfocus,bcvc,shst,bypasser
  4. // @version 1.7
  5. // @description Ignorar links do adf.ly, lienscash.com, adfoc.us, bc.vc e sh.st.
  6. // @grant none
  7. // @include http://q.gs/*
  8. // @include http://9.bb/*
  9. // @include http://u.bb/*
  10. // @include http://j.gs/*
  11. // @include http://adf.ly/*
  12. // @include http://www.lienscash.com/l/*
  13. // @include http://lienscash.com/l/*
  14. // @include http://adfoc.us/*
  15. // @include http://bc.vc/*
  16. // @include http://sh.st/*
  17. // ==/UserScript==
  18.  
  19. // Current version: check line 4 [@version header]
  20. // Changelog:
  21. // Version 1.7
  22. // - fixed sh.st bypasser.
  23. // Version 1.6.2
  24. // - fixed AGAIN the adf.ly bypasser (really adfly? "hitommy"?)
  25. // Version 1.6.1
  26. // - fixed again the adf.ly bypasser (nice try?)
  27. // Version 1.6
  28. // - reverse engineered new adf.ly protection. Good job, it was /quite/ difficult!
  29. // Version 1.5.1
  30. // - fixed adf.ly bypasser, bimm.in bypasser coming soon...
  31. // Version 1.5
  32. // - fixed adf.ly bypasser. Nice try adf.ly, nice try!
  33. // - fixed bc.vc bypasser.
  34. // Version 1.4.1
  35. // - fixed adfoc.us bypasser
  36. // Version 1.4
  37. // - fixed bc.vc bypasser finally. No more 1 star reviews for me :)
  38. // - fixed the double redirection message.
  39. // Version 1.3
  40. // - fixed a bad typo in bc.vc bypasser, maybe it should fix some problems the users have
  41. // - added a 100% fail safe method for adf.ly bypasser, it should now work for every link!
  42. // - added a small credit string while redirecting, for bad users which do not check for updates! :D
  43. // - added @grant directive as requested by http://wiki.greasespot.net/@grant
  44. // [ not a changelog entry: remember to report any issues to the userscript URL, aka http://userscripts.org/scripts/show/122331 ]
  45. // Version 1.2.1
  46. // - fixed adfly's bypasser bug with urls like adf.ly/number/site.com
  47. // Version 1.2.0
  48. // - bypassed new adfly's protection
  49. // - added new bypasser: bc.vc
  50. // - new script headers added (updating notification?)
  51. // Version 1.1.1
  52. // - small bugfixes
  53. // Version 1.1
  54. // - improvements all around the code
  55. // Version 1.0
  56. // - Initial release
  57.  
  58. /**
  59. * NOTE: The real and UNIQUE version of this bypasser is located at http://userscripts.org/scripts/show/122331.
  60. * Any other page or script which uses this source OR claims to be this script, it is a fake.
  61. * Please note that the author is named Robertof, and you can check his website at http://r.usr.sh.
  62. * You can PM me on Userscripts if you find any copy.
  63. * The last warning: I'm NOT responsible for ANY damages caused by UNOFFICIAL scripts downloaded from
  64. * websites which aren't http://userscripts.org/scripts/show/122331.
  65. * Enjoy.
  66. * Robertof
  67. */
  68.  
  69. (function() {
  70. var loc = document.location.href, interval, secinterval, bypassers = {
  71. adfly: function() {
  72. var tehregxp = /var zzz = ['"]([^'"]+)['"]/,
  73. reg2 = /\/locked(?:\/|\?url=)([a-zA-Z0-9\-_]+)/,
  74. reg3 = /\d+\/(http.+?)$/i,
  75. reg4 = /\d+\/([a-zA-Z\-]+\.[a-zA-Z\-]+.*)/i,
  76. reg5 = /blocked\.php(?:\?t=1)?$/;
  77. if (loc.match (reg2))
  78. {
  79. clearInterval (interval);
  80. var uri = (reg2.exec (loc))[1];
  81. document.title = "** Waiting .. **";
  82. secinterval = setInterval (function() {
  83. if (document.getElementById ("continue").style.display != "none")
  84. bypassers.doRedirect ("http://adf.ly/" + uri);
  85. }, 1000);
  86. }
  87. else if (loc.match (reg3))
  88. {
  89. clearInterval (interval);
  90. bypassers.doRedirect ((reg3.exec (loc))[1]);
  91. }
  92. else if (loc.match (reg4))
  93. {
  94. clearInterval (interval);
  95. bypassers.doRedirect ("http://" + (reg4.exec (loc))[1]);
  96. }
  97. else if (document.head.innerHTML.match (tehregxp))
  98. {
  99. document.title = "** adfly bypasser: Bypassing the link... **";
  100. clearInterval (interval);
  101. bypassers._inject (function() {
  102. // set base64 helper for decoding adfly's base64
  103. // thanks to webtoolkit for the code
  104. var Base64 = {
  105. // private property
  106. _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  107.  
  108. // public method for encoding
  109. encode: function (input) {
  110. var output = "";
  111. var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
  112. var i = 0;
  113.  
  114. input = Base64._utf8_encode(input);
  115.  
  116. while (i < input.length) {
  117.  
  118. chr1 = input.charCodeAt(i++);
  119. chr2 = input.charCodeAt(i++);
  120. chr3 = input.charCodeAt(i++);
  121.  
  122. enc1 = chr1 >> 2;
  123. enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  124. enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  125. enc4 = chr3 & 63;
  126.  
  127. if (isNaN(chr2)) {
  128. enc3 = enc4 = 64;
  129. } else if (isNaN(chr3)) {
  130. enc4 = 64;
  131. }
  132.  
  133. output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
  134.  
  135. }
  136.  
  137. return output;
  138. },
  139.  
  140. // public method for decoding
  141. decode: function (input) {
  142. var output = "";
  143. var chr1, chr2, chr3;
  144. var enc1, enc2, enc3, enc4;
  145. var i = 0;
  146.  
  147. input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
  148.  
  149. while (i < input.length) {
  150.  
  151. enc1 = this._keyStr.indexOf(input.charAt(i++));
  152. enc2 = this._keyStr.indexOf(input.charAt(i++));
  153. enc3 = this._keyStr.indexOf(input.charAt(i++));
  154. enc4 = this._keyStr.indexOf(input.charAt(i++));
  155.  
  156. chr1 = (enc1 << 2) | (enc2 >> 4);
  157. chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
  158. chr3 = ((enc3 & 3) << 6) | enc4;
  159.  
  160. output = output + String.fromCharCode(chr1);
  161.  
  162. if (enc3 != 64) {
  163. output = output + String.fromCharCode(chr2);
  164. }
  165. if (enc4 != 64) {
  166. output = output + String.fromCharCode(chr3);
  167. }
  168.  
  169. }
  170.  
  171. output = Base64._utf8_decode(output);
  172.  
  173. return output;
  174.  
  175. },
  176.  
  177. // private method for UTF-8 encoding
  178. _utf8_encode: function (string) {
  179. string = string.replace(/\r\n/g, "\n");
  180. var utftext = "";
  181.  
  182. for (var n = 0; n < string.length; n++) {
  183.  
  184. var c = string.charCodeAt(n);
  185.  
  186. if (c < 128) {
  187. utftext += String.fromCharCode(c);
  188. } else if ((c > 127) && (c < 2048)) {
  189. utftext += String.fromCharCode((c >> 6) | 192);
  190. utftext += String.fromCharCode((c & 63) | 128);
  191. } else {
  192. utftext += String.fromCharCode((c >> 12) | 224);
  193. utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  194. utftext += String.fromCharCode((c & 63) | 128);
  195. }
  196.  
  197. }
  198.  
  199. return utftext;
  200. },
  201.  
  202. // private method for UTF-8 decoding
  203. _utf8_decode: function (utftext) {
  204. var string = "";
  205. var i = 0;
  206. var c = c1 = c2 = 0;
  207.  
  208. while (i < utftext.length) {
  209.  
  210. c = utftext.charCodeAt(i);
  211.  
  212. if (c < 128) {
  213. string += String.fromCharCode(c);
  214. i++;
  215. } else if ((c > 191) && (c < 224)) {
  216. c2 = utftext.charCodeAt(i + 1);
  217. string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
  218. i += 2;
  219. } else {
  220. c2 = utftext.charCodeAt(i + 1);
  221. c3 = utftext.charCodeAt(i + 2);
  222. string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
  223. i += 3;
  224. }
  225.  
  226. }
  227.  
  228. return string;
  229. }
  230. };
  231. // adf.ly updates? Not scaring me! 15/07/13: Take this adfly ^_^
  232. window.onbeforeunload = null;
  233. var neededVar = ysmm;
  234. var __t = neededVar.indexOf ("?");
  235. var __u = neededVar.indexOf ("!HiTommy");
  236. if (__u != -1)
  237. neededVar = neededVar.substr (0, __u);
  238. if (__t != -1)
  239. neededVar = neededVar.substr (0, __t);
  240. /*if (document.head.innerHTML.match (/view6\.js/))
  241. neededVar = ysmm;
  242. else
  243. neededVar = zzz;*/
  244. if (easyUrl == 'true') {
  245. document.head.innerHTML = "<title>** Redirect in progress</title>";
  246. document.body.innerHTML = "Ignorando este link (redirecionando para " + neededVar + "), aguarde...";
  247. window.location = neededVar;
  248. } else {
  249. var f = "", z = "";
  250. for (var l = 0; l < neededVar.length; l++) {
  251. if (l % 2 == 0)
  252. f += neededVar.charAt (l);
  253. else
  254. z = neededVar.charAt (l) + z;
  255. }
  256. var result = f + z;
  257. result = Base64.decode (result);
  258. result = result.substring (result.length - (result.length - 2));
  259. document.head.innerHTML = "<title>** Redirect in progress</title>";
  260. document.body.innerHTML = "Ignorando este link (redirecionando para " + result + "), aguarde...";
  261. window.location = result;
  262. }
  263. });
  264. //bypassers.doRedirect ((tehregxp.exec (document.head.innerHTML))[1]);
  265. }
  266. else if (loc.match (reg5))
  267. {
  268. clearInterval (interval);
  269. var errorMsg = "** ERROR: adf.ly detected our bypassing attempt.\n";
  270. errorMsg += "Please report the problem on the following url: http://userscripts.org/scripts/discuss/122331 and INCLUDE the adfly link.\n";
  271. errorMsg += "Thanks, Robertof (the script author - and note that I'm NOT an Arabian guy or something)";
  272. alert (errorMsg);
  273. }
  274. else {
  275. clearInterval(interval);
  276. alert ("Something went wrong! Please report the problem on the following url: http://userscripts.org/scripts/discuss/122331 and INCLUDE the adfly link!");
  277. }
  278. },
  279. lienscash: function() {
  280. var matches = /<a href="([^"]+)">skip/;
  281. if (document.body.innerHTML.match (matches))
  282. {
  283. clearInterval (interval);
  284. bypassers.doRedirect ((matches.exec (document.body.innerHTML))[1]);
  285. }
  286. },
  287. adfocus: function() {
  288. var regxp = /var click_url = ["']([^"']+)["']/;
  289. if (document.body.innerHTML.match (regxp))
  290. bypassers.doRedirect ( ( regxp.exec (document.body.innerHTML.replace(/\/\/var\sclick_url\s=.+/, "")) )[1] );
  291. //alert(document.body.innerHTML.replace(/\/\/var\sclick_url\s=.+/, ""));
  292. },
  293. shst: function() {
  294. var matches = /<a class="skip-btn" href="([^"]+)" id="skip_button">/;
  295. if (document.body.innerHTML.match (matches))
  296. {
  297. clearInterval (interval);
  298. bypassers.doRedirect ((matches.exec (document.body.innerHTML))[1]);
  299. }
  300. },
  301. bcvc: function() {
  302. // bypassing this site is harder than expected, because
  303. // to get the link it does an AJAX request
  304. // so we should make one too :(
  305. // inject script
  306. bypassers._inject (function() {
  307. // get AJAX data from the page
  308. var ajaxrx = /\{(opt:'make.+)/; //?rgs:\{[^\}+]\})/;
  309. if (document.body.innerHTML.match (ajaxrx))
  310. {
  311. var p = ajaxrx.exec(document.body.innerHTML)[1];
  312. // opt:'make_log',args:{aid:626,lid:1689504,oid:1684,ref: ''}},
  313. p = p.substr (0, (p.length - 1)); // remove final ;
  314. var _a = eval ('({' + p + ')');
  315. //alert(_a.args.aid);
  316. // do request
  317. document.head.innerHTML = "<title>** Bypassing, please wait..</title>";
  318. document.body.innerHTML = "Eu vou ignorar este site ruim, por favor, aguarde alguns segundos...<br /><strong style='font-size:18px;' id='sReplace'>0</strong>";
  319. //alert (_a.opt);
  320. //return;
  321. var gayCallback = function (myself, retShit, count) {
  322. document.getElementById('sReplace').innerHTML = "Try #" + count + ": " + ( count == 1 ? "a few more.." : ( count == 2 ? "just a few tries left.." : ( count == 3 ? "so close.." : ( count == 4 ? "almost done.." : ( count == 5 ? "GOTCHA! (probably)" : (count > 5 ? "wait, what?" : "a moment.." ) ) ) ) ) );
  323. // scumbag bc.vc which changes ajax.fly.php in ajax.fly2.php :>
  324. $.post ("http://bc.vc/fly/ajax.fly2.php", retShit, function (res) {
  325. var jsono = eval ('(' + res + ')');
  326. if (jsono.message) {
  327. document.head.innerHTML = "<title>** Redirect in progress **</title>";
  328. document.body.innerHTML = "Ignorando este link (redirecionando para " + jsono.message.url + "), aguarde...";
  329. window.location = jsono.message.url;
  330. return;
  331. }
  332. else
  333. setTimeout (function(){myself (myself, retShit, ++count);}, 1000);
  334. });
  335. };
  336. gayCallback (gayCallback, _a, 0);
  337. // old code kept for debugging reasons
  338. /*_a.opt = 'check_log';
  339. var _intAu = setInterval (function () {
  340. $.post ('http://bc.vc/fly/ajax.fly.php', _a, function (res) {
  341. var sonOf = eval ('(' + res + ')');
  342. if (!sonOf.message)
  343. return;
  344. clearInterval (_intAu);
  345. _a.opt = 'make_log';
  346. $.post ('http://bc.vc/fly/ajax.fly.php', _a, function (r) {
  347. var _j = eval ('(' + r + ')');
  348. if (_j.message) {
  349. document.head.innerHTML = "<title>** Redirect in progress **</title>";
  350. document.body.innerHTML = "Ignorando este link (redirecionando para " + _j.message.url + "), aguarde...";
  351. document.body.innerHTML += "<br />Multiple bad-sites bypasser is brought to you by Robertof. Always check <a href='http://userscripts.org/scripts/show/122331'>this link</a> for updates and to report issues!";
  352. window.location = _j.message.url;
  353. }
  354. else {
  355. document.body.innerHTML = "bc.vc denied our request, waiting a bit and then reloading..";
  356. alert (JSON.stringify (_j));
  357. setTimeout (function() { window.location = document.location.href; }, 3000);
  358. }
  359. });
  360. });
  361. }, 1000);*/
  362. }
  363. });
  364. },
  365. doRedirect: function (uri) {
  366. document.head.innerHTML = "<title>** Redirect in progress **</title>";
  367. document.body.innerHTML = "Ignorando este link (redirecionando para " + uri + "), agurade...";
  368. window.location = uri;
  369. },
  370. _inject: function (fn) {
  371. // inject a script into the webpage
  372. var _scr = document.createElement ("script");
  373. _scr.appendChild (document.createTextNode ("(" + fn + ")();"));
  374. (document.body || document.head || document.documentElement).appendChild (_scr);
  375. }
  376. };
  377. if (loc.indexOf ("adf.ly") !== -1 || loc.indexOf ("q.gs") !== -1 || loc.indexOf("9.bb") !== -1 || loc.indexOf ("u.bb") !== -1 || loc.indexOf ("j.gs") !== -1)
  378. interval = setInterval (bypassers.adfly, 1000);
  379. else if (loc.indexOf ("lienscash.com") !== -1)
  380. interval = setInterval (bypassers.lienscash, 1000);
  381. else if (loc.indexOf ("bc.vc") !== -1)
  382. bypassers.bcvc();
  383. else if (loc.indexOf ("sh.st") !== -1)
  384. bypassers.shst();
  385. else
  386. bypassers.adfocus();
  387. })();