AdsBypasserLite

Bypass Ads

目前为 2014-11-16 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name AdsBypasserLite
  3. // @namespace AdsBypasser
  4. // @description Bypass Ads
  5. // @copyright 2012+, Wei-Cheng Pan (legnaleurc)
  6. // @version 5.6.0
  7. // @license BSD
  8. // @homepageURL https://adsbypasser.github.io/
  9. // @supportURL https://github.com/adsbypasser/adsbypasser/issues
  10. // @icon https://raw.githubusercontent.com/adsbypasser/adsbypasser/v5.6.0/img/logo.png
  11. // @grant unsafeWindow
  12. // @grant GM_xmlhttpRequest
  13. // @grant GM_addStyle
  14. // @grant GM_getResourceText
  15. // @grant GM_getResourceURL
  16. // @grant GM_getValue
  17. // @grant GM_openInTab
  18. // @grant GM_registerMenuCommand
  19. // @grant GM_setValue
  20. // @run-at document-start
  21. // @resource alignCenter https://raw.githubusercontent.com/adsbypasser/adsbypasser/v5.6.0/css/align_center.css
  22. // @resource scaleImage https://raw.githubusercontent.com/adsbypasser/adsbypasser/v5.6.0/css/scale_image.css
  23. // @resource bgImage https://raw.githubusercontent.com/adsbypasser/adsbypasser/v5.6.0/img/imagedoc-darknoise.png
  24. // @include http://*
  25. // @include https://*
  26. // ==/UserScript==
  27.  
  28. var _ = typeof module !== 'undefined' ? module.exports : {};
  29. (function () {
  30. 'use strict';
  31. function setupStack () {
  32. if (Error.captureStackTrace) {
  33. Error.captureStackTrace(this, this.constructor);
  34. } else if (!this.hasOwnProperty('stack')) {
  35. var stack = (new Error()).stack.split('\n').slice(2);
  36. var e = stack[0].match(/^.*@(.*):(\d*)$/);
  37. this.fileName = e[1];
  38. this.lineNumber = parseInt(e[2], 10);
  39. this.stack = stack.join('\n');
  40. }
  41. }
  42. function AdsBypasserError (message) {
  43. setupStack.call(this);
  44. this.message = message;
  45. }
  46. AdsBypasserError.prototype = Object.create(Error.prototype);
  47. AdsBypasserError.prototype.constructor = AdsBypasserError;
  48. AdsBypasserError.prototype.name = 'AdsBypasserError';
  49. AdsBypasserError.extend = function (protoProps, staticProps) {
  50. var parent = this, child = function () {
  51. setupStack.call(this);
  52. protoProps.constructor.apply(this, arguments);
  53. };
  54. extend(child, parent, staticProps);
  55. child.prototype = Object.create(parent.prototype);
  56. extend(child.prototype, protoProps);
  57. child.prototype.constructor = child;
  58. child.super = parent.prototype;
  59. return child;
  60. };
  61. AdsBypasserError.super = null;
  62. _.AdsBypasserError = AdsBypasserError;
  63. function any (c, fn) {
  64. if (c.some) {
  65. return c.some(fn);
  66. }
  67. if (typeof c.length === 'number') {
  68. return Array.prototype.some.call(c, fn);
  69. }
  70. return Object.keys(c).some(function (k) {
  71. return fn(c[k], k, c);
  72. });
  73. }
  74. function all (c, fn) {
  75. if (c.every) {
  76. return c.every(fn);
  77. }
  78. if (typeof c.length === 'number') {
  79. return Array.prototype.every.call(c, fn);
  80. }
  81. return Object.keys(c).every(function (k) {
  82. return fn(c[k], k, c);
  83. });
  84. }
  85. function each (c, fn) {
  86. if (c.forEach) {
  87. c.forEach(fn);
  88. } else if (typeof c.length === 'number') {
  89. Array.prototype.forEach.call(c, fn);
  90. } else {
  91. Object.keys(c).forEach(function (k) {
  92. fn(c[k], k, c);
  93. });
  94. }
  95. }
  96. function map (c, fn) {
  97. if (c.map) {
  98. return c.map(fn);
  99. }
  100. if (typeof c.length === 'number') {
  101. return Array.prototype.map.call(c, fn);
  102. }
  103. return Object.keys(c).map(function (k) {
  104. return fn(c[k], k, c);
  105. });
  106. }
  107. function extend(c) {
  108. Array.prototype.slice.call(arguments, 1).forEach(function (source) {
  109. if (!source) {
  110. return;
  111. }
  112. _.C(source).each(function (v, k) {
  113. c[k] = v;
  114. });
  115. });
  116. return c;
  117. }
  118. function CollectionProxy (collection) {
  119. this._c = collection;
  120. }
  121. CollectionProxy.prototype.size = function () {
  122. if (typeof this._c.length === 'number') {
  123. return this._c.length;
  124. }
  125. return Object.keys(c).length;
  126. };
  127. CollectionProxy.prototype.at = function (k) {
  128. return this._c[k];
  129. };
  130. CollectionProxy.prototype.each = function (fn) {
  131. each(this._c, fn);
  132. return this;
  133. };
  134. CollectionProxy.prototype.find = function (fn) {
  135. var result;
  136. any(this._c, function (value, index, self) {
  137. var tmp = fn(value, index, self);
  138. if (tmp !== _.nop) {
  139. result = {
  140. key: index,
  141. value: value,
  142. payload: tmp,
  143. };
  144. return true;
  145. }
  146. return false;
  147. });
  148. return result;
  149. };
  150. CollectionProxy.prototype.all = function (fn) {
  151. return all(this._c, fn);
  152. };
  153. CollectionProxy.prototype.map = function (fn) {
  154. return map(this._c, fn);
  155. };
  156. _.C = function (collection) {
  157. return new CollectionProxy(collection);
  158. };
  159. _.T = function (s) {
  160. if (typeof s === 'string') {
  161. } else if (s instanceof String) {
  162. s = s.toString();
  163. } else {
  164. throw new AdsBypasserError('template must be a string');
  165. }
  166. var T = {
  167. '{{': '{',
  168. '}}': '}',
  169. };
  170. return function () {
  171. var args = Array.prototype.slice.call(arguments);
  172. var kwargs = args[args.length-1];
  173. return s.replace(/\{\{|\}\}|\{([^\}]+)\}/g, function (m, key) {
  174. if (T.hasOwnProperty(m)) {
  175. return T[m];
  176. }
  177. if (args.hasOwnProperty(key)) {
  178. return args[key];
  179. }
  180. if (kwargs.hasOwnProperty(key)) {
  181. return kwargs[key];
  182. }
  183. return m;
  184. });
  185. };
  186. };
  187. _.P = function (fn) {
  188. if (typeof fn !== 'function') {
  189. throw new _.AdsBypasserError('must give a function');
  190. }
  191. var slice = Array.prototype.slice;
  192. var args = slice.call(arguments, 1);
  193. return function () {
  194. return fn.apply(this, args.concat(slice.call(arguments)));
  195. };
  196. };
  197. _.nop = function () {
  198. };
  199. function log (method, args) {
  200. args = Array.prototype.slice.call(args);
  201. if (typeof args[0] === 'string' || args[0] instanceof String) {
  202. args[0] = 'AdsBypasser: ' + args[0];
  203. } else {
  204. args.unshift('AdsBypasser:');
  205. }
  206. var f = console[method];
  207. if (typeof f === 'function') {
  208. f.apply(console, $.inject(args));
  209. }
  210. }
  211. _.info = function () {
  212. log('info', arguments);
  213. };
  214. _.warn = function () {
  215. log('warn', arguments);
  216. };
  217. })();
  218.  
  219. var $;
  220. (function () {
  221. 'use strict';
  222. function bootstrap (context) {
  223. var _ = context._;
  224. var window = context.window;
  225. var unsafeWindow = context.unsafeWindow;
  226. var GM = context.GM;
  227. var document = window.document;
  228. var DomNotFoundError = _.AdsBypasserError.extend({
  229. name: 'DomNotFoundError',
  230. constructor: function (selector) {
  231. DomNotFoundError.super.constructor.call(this, _.T('`{0}` not found')(selector));
  232. },
  233. });
  234. var $ = function (selector, context) {
  235. if (!context || !context.querySelector) {
  236. context = document;
  237. }
  238. var n = context.querySelector(selector);
  239. if (!n) {
  240. throw new DomNotFoundError(selector);
  241. }
  242. return n;
  243. };
  244. $.$ = function (selector, context) {
  245. try {
  246. return $(selector, context);
  247. } catch (e) {
  248. return null;
  249. }
  250. };
  251. $.$$ = function (selector, context) {
  252. if (!context || !context.querySelectorAll) {
  253. context = document;
  254. }
  255. var ns = context.querySelectorAll(selector);
  256. return _.C(ns);
  257. };
  258. function deepJoin (prefix, object) {
  259. return _.C(object).map(function (v, k) {
  260. var key = _.T('{0}[{1}]')(prefix, k);
  261. if (typeof v === 'object') {
  262. return deepJoin(key, v);
  263. }
  264. return _.T('{0}={1}').apply(this, [key, v].map(encodeURIComponent));
  265. }).join('&');
  266. }
  267. function toQuery (data) {
  268. if (typeof data === 'string') {
  269. return data;
  270. }
  271. if (data instanceof String) {
  272. return data.toString();
  273. }
  274. return _.C(data).map(function (v, k) {
  275. if (typeof v === 'object') {
  276. return deepJoin(k, v);
  277. }
  278. return _.T('{0}={1}').apply(this, [k, v].map(encodeURIComponent));
  279. }).join('&');
  280. }
  281. function ajax (method, url, data, headers, callback) {
  282. var l = document.createElement('a');
  283. l.href = url;
  284. var reqHost = l.hostname;
  285. headers.Host = reqHost || window.location.host;
  286. headers.Origin = window.location.origin;
  287. headers.Referer = window.location.href;
  288. headers['X-Requested-With'] = 'XMLHttpRequest';
  289. var controller = GM.xmlhttpRequest({
  290. method: method,
  291. url: url,
  292. data: data,
  293. headers: headers,
  294. onload: function (response) {
  295. var headers = {
  296. get: function (key) {
  297. return this[key.toLowerCase()];
  298. },
  299. };
  300. response.responseHeaders.split(/[\r\n]+/g).filter(function (v) {
  301. return v.length !== 0;
  302. }).map(function (v) {
  303. return v.split(/:\s+/);
  304. }).forEach(function (v) {
  305. headers[v[0].toLowerCase()] = v[1];
  306. });
  307. callback(response.responseText, headers);
  308. },
  309. });
  310. return controller;
  311. }
  312. $.toDOM = function(rawHTML) {
  313. try {
  314. var parser = new DOMParser();
  315. var DOMHTML = parser.parseFromString(rawHTML, "text/html");
  316. return DOMHTML;
  317. } catch (e) {
  318. throw new _.AdsBypasserError('could not parse HTML to DOM');
  319. }
  320. };
  321. $.get = function (url, data, callback, headers) {
  322. data = toQuery(data);
  323. data = data!==''? '?' + data : '';
  324. headers = headers || {};
  325. return ajax('GET', url + data, '', headers, callback);
  326. };
  327. $.post = function (url, data, callback, headers) {
  328. data = toQuery(data);
  329. var h = {
  330. 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  331. 'Content-Length': data.length,
  332. };
  333. if (headers) {
  334. _.C(headers).each(function (v, k) {
  335. h[k] = v;
  336. });
  337. }
  338. return ajax('POST', url, data, h, callback);
  339. };
  340. function go (path, params, method) {
  341. method = method || 'post';
  342. var form = document.createElement('form');
  343. form.method = method;
  344. form.action = path;
  345. _.C(params).each(function (value, key) {
  346. var input = document.createElement('input');
  347. input.type = 'hidden';
  348. input.name = key;
  349. input.value = value;
  350. form.appendChild(input);
  351. });
  352. document.body.appendChild(form);
  353. form.submit();
  354. }
  355. $.openLinkByPost = function (url, data) {
  356. go(url, data, 'post');
  357. };
  358. $.openLink = function (to) {
  359. if (!to) {
  360. _.warn('false URL');
  361. return;
  362. }
  363. var from = window.location.toString();
  364. _.info(_.T('{0} -> {1}')(from, to));
  365. window.top.location.replace(to);
  366. };
  367. $.openLinkWithReferer = function (to) {
  368. if (!to) {
  369. _.warn('false URL');
  370. return;
  371. }
  372. var from = window.location.toString();
  373. _.info(_.T('{0} -> {1}')(from, to));
  374. var a = document.createElement('a');
  375. a.href = to;
  376. a.style.display = 'none';
  377. document.body.appendChild(a);
  378. a.click();
  379. };
  380. $.openImage = function (imgSrc) {
  381. if (config.redirectImage) {
  382. $.openLink(imgSrc);
  383. }
  384. };
  385. $.removeAllTimer = function () {
  386. var intervalID = window.setInterval(_.nop, 10);
  387. while (intervalID > 0) {
  388. window.clearInterval(intervalID--);
  389. }
  390. };
  391. $.enableScrolling = function () {
  392. var o = document.compatMode === 'CSS1Compat' ? document.documentElement : document.body;
  393. o.style.overflow = '';
  394. };
  395. function toggleShrinking () {
  396. this.classList.toggle('adsbypasser-shrinked');
  397. }
  398. function checkScaling () {
  399. var nw = this.naturalWidth;
  400. var nh = this.naturalHeight;
  401. var cw = document.documentElement.clientWidth;
  402. var ch = document.documentElement.clientHeight;
  403. if ((nw > cw || nh > ch) && !this.classList.contains('adsbypasser-resizable')) {
  404. this.classList.add('adsbypasser-resizable');
  405. this.classList.add('adsbypasser-shrinked');
  406. this.addEventListener('click', toggleShrinking);
  407. } else {
  408. this.removeEventListener('click', toggleShrinking);
  409. this.classList.remove('adsbypasser-shrinked');
  410. this.classList.remove('adsbypasser-resizable');
  411. }
  412. }
  413. function scaleImage (i) {
  414. var style = GM.getResourceText('scaleImage');
  415. GM.addStyle(style);
  416. if (i.naturalWidth && i.naturalHeight) {
  417. checkScaling.call(i);
  418. } else {
  419. i.addEventListener('load', checkScaling);
  420. }
  421. var h;
  422. window.addEventListener('resize', function () {
  423. window.clearTimeout(h);
  424. h = window.setTimeout(checkScaling.bind(i), 100);
  425. });
  426. }
  427. function changeBackground () {
  428. var bgImage = GM.getResourceURL('bgImage');
  429. document.body.style.backgroundColor = '#222222';
  430. document.body.style.backgroundImage = _.T('url(\'{0}\')')(bgImage);
  431. }
  432. function alignCenter () {
  433. var style = GM.getResourceText('alignCenter');
  434. GM.addStyle(style);
  435. }
  436. function injectStyle (d, i) {
  437. $.removeNodes('style, link[rel=stylesheet]');
  438. d.id = 'adsbypasser-wrapper';
  439. i.id = 'adsbypasser-image';
  440. }
  441. $.replace = function (imgSrc) {
  442. if (!config.redirectImage) {
  443. return;
  444. }
  445. if (!imgSrc) {
  446. _.warn('false url');
  447. return;
  448. }
  449. _.info(_.T('replacing body with `{0}` ...')(imgSrc));
  450. $.removeAllTimer();
  451. $.enableScrolling();
  452. document.body = document.createElement('body');
  453. var d = document.createElement('div');
  454. document.body.appendChild(d);
  455. var i = document.createElement('img');
  456. i.src = imgSrc;
  457. d.appendChild(i);
  458. if (config.alignCenter || config.scaleImage) {
  459. injectStyle(d, i);
  460. }
  461. if (config.alignCenter) {
  462. alignCenter();
  463. }
  464. if (config.changeBackground) {
  465. changeBackground();
  466. }
  467. if (config.scaleImage) {
  468. scaleImage(i);
  469. }
  470. };
  471. $.removeNodes = function (selector, context) {
  472. $.$$(selector, context).each(function (e) {
  473. e.parentNode.removeChild(e);
  474. });
  475. };
  476. function searchScriptsByRegExp (pattern, context) {
  477. var m = $.$$('script', context).find(function (s) {
  478. var m = s.innerHTML.match(pattern);
  479. if (!m) {
  480. return _.nop;
  481. }
  482. return m;
  483. });
  484. if (!m) {
  485. return null;
  486. }
  487. return m.payload;
  488. }
  489. function searchScriptsByString (pattern, context) {
  490. var m = $.$$('script', context).find(function (s) {
  491. var m = s.innerHTML.indexOf(pattern);
  492. if (m < 0) {
  493. return _.nop;
  494. }
  495. return m;
  496. });
  497. if (!m) {
  498. return null;
  499. }
  500. return m.value.innerHTML;
  501. }
  502. $.searchScripts = function (pattern, context) {
  503. if (pattern instanceof RegExp) {
  504. return searchScriptsByRegExp(pattern, context);
  505. } else if (typeof pattern === 'string') {
  506. return searchScriptsByString(pattern, context);
  507. } else {
  508. return null;
  509. }
  510. };
  511. $.setCookie = function (key, value) {
  512. var now = new Date();
  513. now.setTime(now.getTime() + 3600 * 1000);
  514. var tpl = _.T('{0}={1};path=/;');
  515. document.cookie = tpl(key, value, now.toUTCString());
  516. };
  517. $.getCookie = function (key) {
  518. var c = _.C(document.cookie.split(';')).find(function (v) {
  519. var k = v.replace(/^\s*(\w+)=.+$/, '$1');
  520. if (k !== key) {
  521. return _.nop;
  522. }
  523. });
  524. if (!c) {
  525. return null;
  526. }
  527. c = c.value.replace(/^\s*\w+=([^;]+).+$/, '$1');
  528. if (!c) {
  529. return null;
  530. }
  531. return c;
  532. };
  533. $.resetCookies = function () {
  534. var a = document.domain;
  535. var b = document.domain.replace(/^www\./, '');
  536. var c = document.domain.replace(/^(\w+\.)+?(\w+\.\w+)$/, '$2');
  537. var d = (new Date(1e3)).toUTCString();
  538. _.C(document.cookie.split(';')).each(function (v) {
  539. var k = v.replace(/^\s*(\w+)=.+$/, '$1');
  540. document.cookie = _.T('{0}=;expires={1};')(k, d);
  541. document.cookie = _.T('{0}=;path=/;expires={1};')(k, d);
  542. var e = _.T('{0}=;path=/;domain={1};expires={2};');
  543. document.cookie = e(k, a, d);
  544. document.cookie = e(k, b, d);
  545. document.cookie = e(k, c, d);
  546. });
  547. };
  548. $.captcha = function (imgSrc, cb) {
  549. if (!config.externalServerSupport) {
  550. return;
  551. }
  552. var a = document.createElement('canvas');
  553. var b = a.getContext('2d');
  554. var c = new Image();
  555. c.src = imgSrc;
  556. c.onload = function () {
  557. a.width = c.width;
  558. a.height = c.height;
  559. b.drawImage(c, 0, 0);
  560. var d = a.toDataURL();
  561. var e = d.substr(d.indexOf(',') + 1);
  562. $.post('http://www.wcpan.info/cgi-bin/captcha.cgi', {
  563. i: e,
  564. }, cb);
  565. };
  566. };
  567. function injectClone (vaccine) {
  568. var injected;
  569. if (typeof cloneInto !== 'function') {
  570. injected = vaccine;
  571. } else {
  572. injected = cloneInto(vaccine, unsafeWindow, {
  573. cloneFunctions: true,
  574. });
  575. }
  576. return injected;
  577. }
  578. function injectFunction (vaccine) {
  579. var injected;
  580. if (typeof exportFunction !== 'function') {
  581. injected = vaccine;
  582. } else {
  583. try {
  584. injected = exportFunction(vaccine, unsafeWindow);
  585. } catch(e) {
  586. console.error(e);
  587. }
  588. }
  589. return injected;
  590. }
  591. function injectReference () {
  592. var injected;
  593. if (typeof createObjectIn !== 'function') {
  594. injected = {};
  595. } else {
  596. injected = createObjectIn(unsafeWindow);
  597. }
  598. return injected;
  599. }
  600. $.inject = function (vaccine) {
  601. if (typeof vaccine === 'function') {
  602. return injectFunction(vaccine);
  603. } else if (typeof vaccine === 'undefined') {
  604. return injectReference();
  605. } else {
  606. return injectClone(vaccine);
  607. }
  608. };
  609. var patterns = [];
  610. $.register = function (pattern) {
  611. patterns.push(pattern);
  612. };
  613. function load () {
  614. var tmp = {
  615. version: GM.getValue('version', 0),
  616. alignCenter: GM.getValue('align_center'),
  617. changeBackground: GM.getValue('change_background'),
  618. externalServerSupport: GM.getValue('external_server_support'),
  619. redirectImage: GM.getValue('redirect_image'),
  620. scaleImage: GM.getValue('scale_image'),
  621. };
  622. fixup(tmp);
  623. save(tmp);
  624. return tmp;
  625. }
  626. function save (c) {
  627. GM.setValue('version', c.version);
  628. GM.setValue('align_center', c.alignCenter);
  629. GM.setValue('change_background', c.changeBackground);
  630. GM.setValue('external_server_support', c.externalServerSupport);
  631. GM.setValue('redirect_image', c.redirectImage);
  632. GM.setValue('scale_image', c.scaleImage);
  633. }
  634. function fixup (c) {
  635. var patches = [
  636. function (c) {
  637. var ac = typeof c.alignCenter !== 'undefined';
  638. if (typeof c.changeBackground === 'undefined') {
  639. c.changeBackground = ac ? c.alignCenter : true;
  640. }
  641. if (typeof c.scaleImage === 'undefined') {
  642. c.scaleImage = ac ? c.alignCenter : true;
  643. }
  644. if (!ac) {
  645. c.alignCenter = true;
  646. }
  647. if (typeof c.redirectImage === 'undefined') {
  648. c.redirectImage = true;
  649. }
  650. },
  651. function (c) {
  652. if (typeof c.externalServerSupport === 'undefined') {
  653. c.externalServerSupport = false;
  654. }
  655. },
  656. ];
  657. while (c.version < patches.length) {
  658. patches[c.version](c);
  659. ++c.version;
  660. }
  661. }
  662. var config = null;
  663. $.register({
  664. rule: {
  665. host: /^adsbypasser\.github\.io$/,
  666. path: /^\/configure\.html$/,
  667. },
  668. ready: function () {
  669. unsafeWindow.commit = $.inject(function (data) {
  670. data.version = config.version;
  671. _.C(data).each(function (v, k) {
  672. config[k] = v;
  673. });
  674. setTimeout(function () {
  675. save(data);
  676. }, 0);
  677. });
  678. unsafeWindow.render($.inject({
  679. version: config.version,
  680. options: {
  681. alignCenter: {
  682. type: 'checkbox',
  683. value: config.alignCenter,
  684. label: 'Align Center',
  685. help: 'Align image to the center if possible. (default: enabled)',
  686. },
  687. changeBackground: {
  688. type: 'checkbox',
  689. value: config.changeBackground,
  690. label: 'Change Background',
  691. help: 'Use Firefox-like image background if possible. (default: enabled)',
  692. },
  693. redirectImage: {
  694. type: 'checkbox',
  695. value: config.redirectImage,
  696. label: 'Redirect Image',
  697. help: [
  698. 'Directly open image link if possible. (default: enabled)',
  699. 'If disabled, redirection will only works on link shortener sites.',
  700. ].join('<br/>\n'),
  701. },
  702. scaleImage: {
  703. type: 'checkbox',
  704. value: config.scaleImage,
  705. label: 'Scale Image',
  706. help: 'When image loaded, scale it to fit window if possible. (default: enabled)',
  707. },
  708. externalServerSupport: {
  709. type: 'checkbox',
  710. value: config.externalServerSupport,
  711. label: 'External Server Support',
  712. help: [
  713. 'Send URL information to external server to enhance features (e.g.: captcha resolving). (default: disabled)',
  714. 'Affected sites:',
  715. 'urlz.so (captcha)',
  716. ].join('<br/>\n'),
  717. },
  718. },
  719. }));
  720. },
  721. });
  722. function dispatchByObject (rule, url_6) {
  723. var matched = {};
  724. var passed = _.C(rule).all(function (pattern, part) {
  725. if (pattern instanceof RegExp) {
  726. matched[part] = url_6[part].match(pattern);
  727. } else if (pattern instanceof Array) {
  728. var r = _.C(pattern).find(function (p) {
  729. var m = url_6[part].match(p);
  730. return m || _.nop;
  731. });
  732. matched[part] = r ? r.payload : null;
  733. }
  734. return !!matched[part];
  735. });
  736. return passed ? matched : null;
  737. }
  738. function dispatchByRegExp (rule, url_1) {
  739. return url_1.match(rule);
  740. }
  741. function dispatchByArray (byLocation, rules, url_1, url_3, url_6) {
  742. var tmp = _.C(rules).find(function (rule) {
  743. var m = dispatch(byLocation, rule, url_1, url_3, url_6);
  744. if (!m) {
  745. return _.nop;
  746. }
  747. return m;
  748. });
  749. return tmp ? tmp.payload : null;
  750. }
  751. function dispatchByString (rule, url_3) {
  752. var scheme = /\*|https?|file|ftp|chrome-extension/;
  753. var host = /\*|(\*\.)?([^\/*]+)/;
  754. var path = /\/.*/;
  755. var up = new RegExp(_.T('^({scheme})://({host})?({path})$')({
  756. scheme: scheme.source,
  757. host: host.source,
  758. path: path.source,
  759. }));
  760. var matched = rule.match(up);
  761. if (!matched) {
  762. return null;
  763. }
  764. scheme = matched[1];
  765. host = matched[2];
  766. var wc = matched[3];
  767. var sd = matched[4];
  768. path = matched[5];
  769. if (scheme === '*' && !/https?/.test(url_3.scheme)) {
  770. return null;
  771. } else if (scheme !== url_3.scheme) {
  772. return null;
  773. }
  774. if (scheme !== 'file' && host !== '*') {
  775. if (wc) {
  776. up = url_3.host.indexOf(sd);
  777. if (up < 0 || up + sd.length !== url_3.host.length) {
  778. return null;
  779. }
  780. } else if (host !== url_3.host) {
  781. return null;
  782. }
  783. }
  784. path = new RegExp(_.T('^{0}$')(path.replace(/[*.\[\]?+#]/g, function (c) {
  785. if (c === '*') {
  786. return '.*';
  787. }
  788. return '\\' + c;
  789. })));
  790. if (!path.test(url_3.path)) {
  791. return null;
  792. }
  793. return url_3;
  794. }
  795. function dispatchByFunction (rule, url_1, url_3, url_6) {
  796. return rule(url_1, url_3, url_6);
  797. }
  798. function dispatch (byLocation, rule, url_1, url_3, url_6) {
  799. if (rule instanceof Array) {
  800. return dispatchByArray(byLocation, rule, url_1, url_3, url_6);
  801. }
  802. if (!byLocation) {
  803. if (typeof rule !== 'function') {
  804. return null;
  805. }
  806. return dispatchByFunction(rule, url_1, url_3, url_6);
  807. }
  808. if (rule instanceof RegExp) {
  809. return dispatchByRegExp(rule, url_1);
  810. }
  811. if (typeof rule === 'string' || rule instanceof String) {
  812. return dispatchByString(rule, url_3);
  813. }
  814. if (typeof rule === 'function') {
  815. return null;
  816. }
  817. return dispatchByObject(rule, url_6);
  818. }
  819. function findHandler (byLocation) {
  820. var url_1 = window.location.toString();
  821. var url_3 = {
  822. scheme: window.location.protocol.slice(0, -1),
  823. host: window.location.host,
  824. path: window.location.pathname + window.location.search + window.location.hash,
  825. };
  826. var url_6 = {
  827. scheme: window.location.protocol,
  828. host: window.location.hostname,
  829. port: window.location.port,
  830. path: window.location.pathname,
  831. query: window.location.search,
  832. hash: window.location.hash,
  833. };
  834. var pattern = _.C(patterns).find(function (pattern) {
  835. var m = dispatch(byLocation, pattern.rule, url_1, url_3, url_6);
  836. if (!m) {
  837. return _.nop;
  838. }
  839. return m;
  840. });
  841. if (!pattern) {
  842. return null;
  843. }
  844. var matched = pattern.payload;
  845. pattern = pattern.value;
  846. if (!pattern.start && !pattern.ready) {
  847. return null;
  848. }
  849. return {
  850. start: pattern.start ? _.P(pattern.start, matched) : _.nop,
  851. ready: pattern.ready ? _.P(pattern.ready, matched) : _.nop,
  852. };
  853. }
  854. function disableWindowOpen () {
  855. unsafeWindow.open = _.nop;
  856. }
  857. function disableLeavePrompt () {
  858. var seal = {
  859. set: function () {
  860. _.info('blocked onbeforeunload');
  861. },
  862. };
  863. _.C([unsafeWindow, unsafeWindow.document.body]).each(function (o) {
  864. if (!o) {
  865. return;
  866. }
  867. o.onbeforeunload = undefined;
  868. Object.defineProperty(o, 'onbeforeunload', seal);
  869. });
  870. }
  871. $._main = function (isNodeJS) {
  872. delete $._main;
  873. if (isNodeJS) {
  874. config = load();
  875. return;
  876. }
  877. if (window.top !== window.self) {
  878. return;
  879. }
  880. var handler = findHandler(true);
  881. if (handler) {
  882. config = load();
  883. _.info('working on\n%s \nwith\n%o', window.location.toString(), config);
  884. disableWindowOpen();
  885. handler.start();
  886. document.addEventListener('DOMContentLoaded', function () {
  887. disableLeavePrompt();
  888. handler.ready();
  889. });
  890. } else {
  891. _.info('does not match location on `%s`, will try HTML content', window.location.toString());
  892. document.addEventListener('DOMContentLoaded', function () {
  893. handler = findHandler(false);
  894. if (!handler) {
  895. _.info('does not match HTML content on `%s`', window.location.toString());
  896. return;
  897. }
  898. config = load();
  899. _.info('working on\n%s \nwith\n%o', window.location.toString(), config);
  900. disableWindowOpen();
  901. disableLeavePrompt();
  902. handler.ready();
  903. });
  904. }
  905. };
  906. GM.registerMenuCommand('AdsBypasser - Configure', function () {
  907. GM.openInTab('https://adsbypasser.github.io/configure.html');
  908. });
  909. return $;
  910. }
  911. if (typeof module !== 'undefined') {
  912. module.exports = bootstrap;
  913. } else {
  914. $ = bootstrap({
  915. _: _,
  916. window: window,
  917. unsafeWindow: unsafeWindow,
  918. GM: {
  919. getValue: GM_getValue,
  920. setValue: GM_setValue,
  921. xmlhttpRequest: GM_xmlhttpRequest,
  922. getResourceText: GM_getResourceText,
  923. addStyle: GM_addStyle,
  924. getResourceURL: GM_getResourceURL,
  925. openInTab: GM_openInTab,
  926. registerMenuCommand: GM_registerMenuCommand,
  927. },
  928. });
  929. }
  930. })();
  931.  
  932. $.register({
  933. rule: {
  934. host: /^01\.nl$/,
  935. },
  936. ready: function () {
  937. 'use strict';
  938. var f = $('iframe#redirectframe');
  939. $.openLink(f.src);
  940. },
  941. });
  942.  
  943. $.register({
  944. rule: {
  945. host: /^(www\.)?1be\.biz$/,
  946. path: /^\/s\.php$/,
  947. query: /^\?(.+)/,
  948. },
  949. start: function (m) {
  950. 'use strict';
  951. $.openLink(m.query[1]);
  952. },
  953. });
  954.  
  955. $.register({
  956. rule: {
  957. host: /^(www\.)?1tiny\.net$/,
  958. path: /\/\w+/
  959. },
  960. ready: function () {
  961. 'use strict';
  962. var rUrl = /window\.location='([^']+)';/;
  963. var directUrl = $.$$('script').find(function (script) {
  964. var m = rUrl.exec(script.innerHTML);
  965. if (!m) {
  966. return _.nop;
  967. }
  968. return m[1];
  969. });
  970. if (!directUrl) {
  971. throw new _.AdsBypasserError('script content changed');
  972. }
  973. $.openLink(directUrl.payload);
  974. },
  975. });
  976.  
  977. $.register({
  978. rule: {
  979. host: /^2ty\.cc$/,
  980. path: /^\/.+/,
  981. },
  982. ready: function () {
  983. 'use strict';
  984. $.removeNodes('iframe');
  985. var a = $('#close');
  986. $.openLink(a.href);
  987. },
  988. });
  989.  
  990. $.register({
  991. rule: {
  992. host: /^(www\.)?3ra\.be$/,
  993. },
  994. ready: function () {
  995. 'use strict';
  996. $.removeNodes('iframe');
  997. var f = unsafeWindow.fc;
  998. if (!f) {
  999. throw new _.AdsBypasserError('window.fc is undefined');
  1000. }
  1001. f = f.toString();
  1002. f = f.match(/href="([^"]*)/);
  1003. if (!f) {
  1004. throw new _.AdsBypasserError('url pattern outdated');
  1005. }
  1006. $.openLink(f[1]);
  1007. },
  1008. });
  1009.  
  1010. $.register({
  1011. rule: {
  1012. host: /^(www\.)?4fun\.tw$/,
  1013. },
  1014. ready: function () {
  1015. 'use strict';
  1016. var i = $('#original_url');
  1017. $.openLink(i.value);
  1018. },
  1019. });
  1020.  
  1021. (function () {
  1022. 'use strict';
  1023. $.register({
  1024. rule: {
  1025. host: /^ad7.biz$/,
  1026. path: /^\/\d+\/(.*)$/,
  1027. },
  1028. start: function (m) {
  1029. $.removeNodes('iframe');
  1030. var redirectLink = m.path[1];
  1031. if (!redirectLink.match(/^https?:\/\//)) {
  1032. redirectLink = "http://" + redirectLink;
  1033. }
  1034. $.openLink(redirectLink);
  1035. },
  1036. });
  1037. $.register({
  1038. rule: {
  1039. host: /^ad7.biz$/,
  1040. path: /^\/\w+$/,
  1041. },
  1042. ready: function () {
  1043. $.removeNodes('iframe');
  1044. var script = $.searchScripts('var r_url');
  1045. var url = script.match(/&url=([^&]+)/);
  1046. url = url[1];
  1047. $.openLink(url);
  1048. },
  1049. });
  1050. })();
  1051.  
  1052. $.register({
  1053. rule: {
  1054. host: /^(www\.)?adb\.ug$/,
  1055. path: /^(?!\/(?:privacy|terms|contact(\/.*)?|#.*)?$).*$/
  1056. },
  1057. ready: function () {
  1058. 'use strict';
  1059. $.removeNodes('iframe');
  1060. var m = $.searchScripts(/top\.location\.href="([^"]+)"/);
  1061. if (m) {
  1062. $.openLink(m[1]);
  1063. return;
  1064. }
  1065. m = $.searchScripts(/\{_args.+\}\}/);
  1066. if (!m) {
  1067. throw new _.AdsBypasserError('script content changed');
  1068. }
  1069. m = eval('(' + m[0] + ')');
  1070. var url = window.location.pathname + '/skip_timer';
  1071. var i = setInterval(function () {
  1072. $.post(url, m, function (text) {
  1073. var jj = JSON.parse(text);
  1074. if (!jj.errors && jj.messages) {
  1075. clearInterval(i);
  1076. $.openLink(jj.messages.url);
  1077. }
  1078. });
  1079. }, 1000);
  1080. },
  1081. });
  1082.  
  1083. (function () {
  1084. 'use strict';
  1085. $.register({
  1086. rule: {
  1087. path: /\/locked$/,
  1088. query: /url=([^&]+)/,
  1089. },
  1090. start: function (m) {
  1091. $.resetCookies();
  1092. $.openLink('/' + m.query[1]);
  1093. },
  1094. });
  1095. $.register({
  1096. rule: function () {
  1097. var h = $.$('html[id="adfly_html"]');
  1098. var b = $.$('body[id="home"]');
  1099. if (h && b) {
  1100. return true;
  1101. } else {
  1102. return null;
  1103. }
  1104. },
  1105. ready: function () {
  1106. var h = $.$('#adfly_html'), b = $.$('#home');
  1107. if (!h || !b || h.nodeName !== 'HTML' || b.nodeName !== 'BODY') {
  1108. return;
  1109. }
  1110. $.removeNodes('iframe');
  1111. unsafeWindow.cookieCheck = $.inject(_.nop);
  1112. h = unsafeWindow.eu;
  1113. if (!h) {
  1114. h = $('#adfly_bar');
  1115. unsafeWindow.close_bar();
  1116. return;
  1117. }
  1118. var a = h.indexOf('!HiTommy');
  1119. if (a >= 0) {
  1120. h = h.substring(0, a);
  1121. }
  1122. a = '';
  1123. b = '';
  1124. for (var i = 0; i < h.length; ++i) {
  1125. if (i % 2 === 0) {
  1126. a = a + h.charAt(i);
  1127. } else {
  1128. b = h.charAt(i) + b;
  1129. }
  1130. }
  1131. h = atob(a + b);
  1132. h = h.substr(2);
  1133. if (location.hash) {
  1134. h += location.hash;
  1135. }
  1136. $.openLinkWithReferer(h);
  1137. },
  1138. });
  1139. $.register({
  1140. rule: 'http://ad7.biz/*',
  1141. ready: function () {
  1142. $.removeNodes('iframe');
  1143. $.resetCookies();
  1144. var script = $.$$('script').find(function (v) {
  1145. if (v.innerHTML.indexOf('var r_url') < 0) {
  1146. return _.nop;
  1147. }
  1148. return v.innerHTML;
  1149. });
  1150. var url = script.payload.match(/&url=([^&]+)/);
  1151. url = url[1];
  1152. $.openLinkWithReferer(url);
  1153. },
  1154. });
  1155. })();
  1156.  
  1157. $.register({
  1158. rule: 'http://adfoc.us/*',
  1159. ready: function () {
  1160. 'use strict';
  1161. var root = document.body;
  1162. var observer = new MutationObserver(function (mutations) {
  1163. var o = $.$('#showSkip');
  1164. if (o) {
  1165. observer.disconnect();
  1166. o = o.querySelector('a');
  1167. $.openLink(o.href);
  1168. }
  1169. });
  1170. observer.observe(root, {
  1171. childList: true,
  1172. subtree: true,
  1173. });
  1174. },
  1175. });
  1176.  
  1177. $.register({
  1178. rule: {
  1179. host: /^(www\.)?adjet\.biz$/,
  1180. },
  1181. ready: function () {
  1182. 'use strict';
  1183. var m = $.searchScripts(/href=(\S+)/);
  1184. if (!m) {
  1185. throw new _.AdsBypasserError('site changed');
  1186. }
  1187. $.openLink(m[1]);
  1188. },
  1189. });
  1190.  
  1191. $.register({
  1192. rule: {
  1193. host: /^adlock\.org$/,
  1194. },
  1195. ready: function () {
  1196. 'use strict';
  1197. var a = $.$('#xre a.xxr, #downloadButton1');
  1198. if (a) {
  1199. $.openLink(a.href);
  1200. return;
  1201. }
  1202. a = unsafeWindow.fileLocation;
  1203. if (a) {
  1204. $.openLink(a);
  1205. }
  1206. },
  1207. });
  1208.  
  1209. $.register({
  1210. rule: {
  1211. host: /^(www\.)?adlot\.us$/,
  1212. },
  1213. ready: function () {
  1214. 'use strict';
  1215. $.removeNodes('iframe');
  1216. var script = $.$$('script').find(function (v) {
  1217. if (v.innerHTML.indexOf('form') < 0) {
  1218. return _.nop;
  1219. }
  1220. return v.innerHTML;
  1221. });
  1222. var p = /name='([^']+)' value='([^']+)'/g;
  1223. var opt = {
  1224. image: ' ',
  1225. };
  1226. var tmp = null;
  1227. while (tmp = p.exec(script.payload)) {
  1228. opt[tmp[1]] = tmp[2];
  1229. }
  1230. $.openLinkByPost('', opt);
  1231. },
  1232. });
  1233.  
  1234. $.register({
  1235. rule: {
  1236. host: /^(www\.)?ah-informatique\.com$/,
  1237. path: /^\/ZipUrl/,
  1238. },
  1239. ready: function () {
  1240. 'use strict';
  1241. var a = $('#zip3 a');
  1242. $.openLink(a.href);
  1243. },
  1244. });
  1245.  
  1246. $.register({
  1247. rule: {
  1248. host: /^aka\.gr$/
  1249. },
  1250. ready: function () {
  1251. 'use strict';
  1252. var l = $('iframe#yourls-frame');
  1253. $.openLink(l.src);
  1254. },
  1255. });
  1256.  
  1257. $.register({
  1258. rule: {
  1259. host: /^anonymbucks\.com$/,
  1260. },
  1261. ready: function () {
  1262. 'use strict';
  1263. var a = $('#boton-continuar');
  1264. a.click();
  1265. },
  1266. });
  1267.  
  1268. (function () {
  1269. 'use strict';
  1270. $.register({
  1271. rule: {
  1272. host: /^bc\.vc$/,
  1273. path: /^.+(https?:\/\/.+)$/,
  1274. },
  1275. start: function (m) {
  1276. $.openLink(m.path[1] + document.location.search + document.location.hash);
  1277. },
  1278. });
  1279. function decompress (script, unzip) {
  1280. if (!unzip) {
  1281. return script;
  1282. }
  1283. var matches = script.match(/eval(.*)/);
  1284. matches = matches[1];
  1285. script = eval(matches);
  1286. return script;
  1287. }
  1288. function searchScript (unzip) {
  1289. var content = $.$$('script').find(function (script) {
  1290. if (script.innerHTML.indexOf('make_log') < 0) {
  1291. return _.nop;
  1292. }
  1293. return script.innerHTML;
  1294. });
  1295. if (content) {
  1296. return {
  1297. direct: false,
  1298. script: decompress(content.payload, unzip),
  1299. };
  1300. }
  1301. content = $.$$('script').find(function (script) {
  1302. if (script.innerHTML.indexOf('click_log') < 0) {
  1303. return _.nop;
  1304. }
  1305. return script.innerHTML;
  1306. });
  1307. if (content) {
  1308. return {
  1309. direct: true,
  1310. script: decompress(content.payload, unzip),
  1311. };
  1312. }
  1313. throw _.AdsBypasserError('script changed');
  1314. }
  1315. function knockServer (script, dirtyFix) {
  1316. var matches = script.match(/\$.post\('([^']*)'[^{]+(\{opt:'make_log'[^}]+\}\}),/i);
  1317. var make_url = matches[1];
  1318. var make_opts = eval('(' + matches[2] + ')');
  1319. var i = setInterval(function () {
  1320. $.post(make_url, make_opts, function (text) {
  1321. if (dirtyFix) {
  1322. text = text.match(/\{.+\}/)[0];
  1323. }
  1324. var jj = JSON.parse(text);
  1325. if (jj.message) {
  1326. clearInterval(i);
  1327. $.openLink(jj.message.url);
  1328. }
  1329. });
  1330. }, 1000);
  1331. }
  1332. function knockServer2 (script) {
  1333. var post = unsafeWindow.$.post;
  1334. unsafeWindow.$.post = $.inject(function (a, b, c) {
  1335. if (typeof c !== 'function') {
  1336. return;
  1337. }
  1338. setTimeout(function () {
  1339. var data = {
  1340. error: false,
  1341. message: {
  1342. url: '#',
  1343. },
  1344. };
  1345. c(JSON.stringify(data));
  1346. }, 1000);
  1347. });
  1348. var matches = script.match(/\$.post\('([^']*)'[^{]+(\{opt:'make_log'[^}]+\}\}),/i);
  1349. var make_url = matches[1];
  1350. var make_opts = eval('(' + matches[2] + ')');
  1351. function makeLog () {
  1352. make_opts.opt = 'make_log';
  1353. post(make_url, $.inject(make_opts), $.inject(function (text) {
  1354. var data = JSON.parse(text);
  1355. _.info('make_log', data);
  1356. if (!data.message) {
  1357. checksLog();
  1358. return;
  1359. }
  1360. $.openLink(data.message.url);
  1361. }));
  1362. }
  1363. function checkLog () {
  1364. make_opts.opt = 'check_log';
  1365. post(make_url, $.inject(make_opts), $.inject(function (text) {
  1366. var data = JSON.parse(text);
  1367. _.info('check_log', data);
  1368. if (!data.message) {
  1369. checkLog();
  1370. return;
  1371. }
  1372. makeLog();
  1373. }));
  1374. }
  1375. function checksLog () {
  1376. make_opts.opt = 'checks_log';
  1377. post(make_url, $.inject(make_opts), $.inject(function () {
  1378. _.info('checks_log');
  1379. checkLog();
  1380. }));
  1381. }
  1382. checksLog();
  1383. }
  1384. $.register({
  1385. rule: {
  1386. host: /^bc\.vc$/,
  1387. path: /^\/.+/,
  1388. },
  1389. ready: function () {
  1390. $.removeNodes('iframe');
  1391. var result = searchScript(false);
  1392. if (!result.direct) {
  1393. knockServer2(result.script);
  1394. } else {
  1395. result = result.script.match(/top\.location\.href = '([^']+)'/);
  1396. if (!result) {
  1397. throw new _.AdsBypasserError('script changed');
  1398. }
  1399. result = result[1];
  1400. $.openLink(result);
  1401. }
  1402. },
  1403. });
  1404. function run (dirtyFix) {
  1405. $.removeNodes('iframe');
  1406. var result = searchScript(true);
  1407. if (!result.direct) {
  1408. knockServer(result.script,dirtyFix);
  1409. } else {
  1410. result = result.script.match(/top\.location\.href='([^']+)'/);
  1411. if (!result) {
  1412. throw new _.AdsBypasserError('script changed');
  1413. }
  1414. result = result[1];
  1415. $.openLink(result);
  1416. }
  1417. }
  1418. $.register({
  1419. rule: {
  1420. host: /^adcrun\.ch$/,
  1421. path: /^\/\w+$/,
  1422. },
  1423. ready: function () {
  1424. $.removeNodes('.user_content');
  1425. var rSurveyLink = /http\.open\("GET", "api_ajax\.php\?sid=\d*&ip=[^&]*&longurl=([^"]+)" \+ first_time, (?:true|false)\);/;
  1426. var l = $.searchScripts(rSurveyLink);
  1427. if (l) {
  1428. $.openLink(l[1]);
  1429. return;
  1430. }
  1431. run(true);
  1432. },
  1433. });
  1434. $.register({
  1435. rule: {
  1436. host: [
  1437. /^1tk\.us$/,
  1438. /^gx\.si$/,
  1439. /^adwat\.ch$/,
  1440. /^(fly2url|urlwiz|xafox)\.com$/,
  1441. /^(zpoz|ultry)\.net$/,
  1442. /^(wwy|myam)\.me$/,
  1443. /^ssl\.gs$/,
  1444. /^link\.tl$/,
  1445. /^hit\.us$/,
  1446. /^shortit\.in$/,
  1447. /^(adbla|tl7)\.us$/,
  1448. /^www\.adjet\.eu$/,
  1449. /^srk\.gs$/,
  1450. /^cun\.bz$/,
  1451. /^miniurl\.tk$/,
  1452. /^vizzy\.es$/,
  1453. /^kazan\.vc$/,
  1454. ],
  1455. path: /^\/.+/,
  1456. },
  1457. ready: run,
  1458. });
  1459. $.register({
  1460. rule: {
  1461. host: /^adtr\.im|ysear\.ch|xip\.ir$/,
  1462. path: /^\/.+/,
  1463. },
  1464. ready: function () {
  1465. var a = $.$('div.fly_head a.close');
  1466. var f = $.$('iframe.fly_frame');
  1467. if (a && f) {
  1468. $.openLink(f.src);
  1469. } else {
  1470. run();
  1471. }
  1472. },
  1473. });
  1474. $.register({
  1475. rule: {
  1476. host: /^ad5\.eu$/,
  1477. path: /^\/[^.]+$/,
  1478. },
  1479. ready: function() {
  1480. $.removeNodes('iframe');
  1481. var s = searchScript(true);
  1482. var m = s.script.match(/(<form name="form1"method="post".*(?!<\\form>)<\/form>)/);
  1483. if (!m) {return;}
  1484. m = m[1];
  1485. var tz = -(new Date().getTimezoneOffset()/60);
  1486. m = m.replace("'+timezone+'",tz);
  1487. var d = document.createElement('div');
  1488. d.setAttribute('id','AdsBypasserFTW');
  1489. d.setAttribute('style', 'display:none;');
  1490. d.innerHTML = m;
  1491. document.body.appendChild(d);
  1492. $('#AdsBypasserFTW > form[name=form1]').submit();
  1493. },
  1494. });
  1495. $.register({
  1496. rule: {
  1497. host: /^tr5\.in$/,
  1498. path: /^\/.+/,
  1499. },
  1500. ready: function () {
  1501. run(true);
  1502. },
  1503. });
  1504. })();
  1505.  
  1506. $.register({
  1507. rule: 'http://www.bild.me/bild.php?file=*',
  1508. ready: function () {
  1509. 'use strict';
  1510. var i = $('#Bild');
  1511. $.openLink(i.src);
  1512. },
  1513. });
  1514.  
  1515. $.register({
  1516. rule: 'http://bildr.no/view/*',
  1517. ready: function () {
  1518. 'use strict';
  1519. var i = $('img.bilde');
  1520. $.openLink(i.src);
  1521. },
  1522. });
  1523.  
  1524. $.register({
  1525. rule: {
  1526. host: /^(www\.)?([a-zA-Z0-9]+\.)?binbox\.io$/,
  1527. path: /\/o\/([a-zA-Z0-9]+)/,
  1528. },
  1529. ready: function (m) {
  1530. 'use strict';
  1531. var direct_link = window.atob(m.path[1]);
  1532. $.openLink(direct_link);
  1533. },
  1534. });
  1535.  
  1536. $.register({
  1537. rule: {
  1538. host: /^(www\.)?(buz|vzt)url\.com$/,
  1539. },
  1540. ready: function () {
  1541. 'use strict';
  1542. var frame = $('frame[scrolling=yes]');
  1543. $.openLink(frame.src);
  1544. },
  1545. });
  1546.  
  1547. $.register({
  1548. rule: {
  1549. host: /^(cf|ex|xt)\d\.(me|co)$/,
  1550. },
  1551. ready: function (m) {
  1552. 'use strict';
  1553. $.removeNodes('iframe');
  1554. var a = $('#skip_button');
  1555. $.openLink(a.href);
  1556. },
  1557. });
  1558.  
  1559. $.register({
  1560. rule: {
  1561. host: /^cf\.ly$/,
  1562. path: /^\/[^\/]+$/,
  1563. },
  1564. start: function (m) {
  1565. 'use strict';
  1566. $.removeNodes('iframe');
  1567. $.openLink('/skip' + m.path[0]);
  1568. },
  1569. });
  1570.  
  1571. $.register({
  1572. rule: {
  1573. host: /^(www\.)?cli\.gs$/,
  1574. },
  1575. ready: function () {
  1576. 'use strict';
  1577. var a = $('a.RedirectLink');
  1578. $.openLink(a.href);
  1579. },
  1580. });
  1581.  
  1582. $.register({
  1583. rule: {
  1584. host: /^(www\.)?clictune\.com$/,
  1585. path: /^\/id=\d+/,
  1586. },
  1587. ready: function () {
  1588. 'use strict';
  1589. $.removeNodes('iframe');
  1590. var linkHolder = $('#compteur');
  1591. var matches = linkHolder.innerHTML.match(/<a href=".*url=([^&"]+).*>/);
  1592. var url = decodeURIComponent(matches[1]);
  1593. $.openLink(url);
  1594. },
  1595. });
  1596.  
  1597. $.register({
  1598. rule: {
  1599. host: /^(www\.)?(coin-ads\.com|shortin\.tk)$/,
  1600. path: /^\/.+/,
  1601. },
  1602. ready: function () {
  1603. 'use strict';
  1604. var m = $.searchScripts(/window\.location\.replace/);
  1605. if (m) {
  1606. return;
  1607. }
  1608. m = $.searchScripts(/countdownArea\.innerHTML = "([^"]+)"/);
  1609. if (!m) {
  1610. throw new _.AdsBypasserError('pattern changed');
  1611. }
  1612. m = m[1];
  1613. var d = $.$('#area');
  1614. if (d) {
  1615. d.innerHTML = m;
  1616. d = $('.skip', d);
  1617. d.click();
  1618. return;
  1619. }
  1620. d = $('#site');
  1621. $.openLink(d.src);
  1622. },
  1623. });
  1624.  
  1625. (function () {
  1626. 'use strict';
  1627. $.register({
  1628. rule: {
  1629. host: /^(?:(\w+)\.)?(coinurl\.com|cur\.lv)$/,
  1630. path: /^\/[-\w]+$/
  1631. },
  1632. ready: function (m) {
  1633. $.removeNodes('iframe');
  1634. if (m.host[1] == null) {
  1635. var mainFrame = 'http://cur.lv/redirect_curlv.php?code=' + escape(window.location.pathname.substring(1));
  1636. } else {
  1637. var mainFrame = 'http://cur.lv/redirect_curlv.php?zone=' + m.host[1] + '&name=' + escape(window.location.pathname.substring(1));
  1638. }
  1639. $.get(mainFrame, {}, function(mainFrameContent) {
  1640. try {
  1641. var docMainFrame = $.toDOM(mainFrameContent);
  1642. } catch (e) {
  1643. throw new _.AdsBypasserError('main frame changed');
  1644. }
  1645. var rExtractLink = /onclick="open_url\('([^']+)',\s*'go'\)/;
  1646. var innerFrames = $.$$('frameset > frame', docMainFrame).each(function (currFrame) {
  1647. var currFrameAddr = window.location.origin + '/' + currFrame.getAttribute('src');
  1648. $.get(currFrameAddr, {}, function(currFrameContent) {
  1649. var aRealLink = rExtractLink.exec(currFrameContent);
  1650. if (aRealLink == null || aRealLink[1] == null) {return;}
  1651. var realLink = aRealLink[1];
  1652. $.openLink(realLink);
  1653. });
  1654. });
  1655. });
  1656. },
  1657. });
  1658. })();
  1659.  
  1660. $.register({
  1661. rule: {
  1662. host: /^comyonet\.com$/,
  1663. },
  1664. ready: function () {
  1665. 'use strict';
  1666. var input = $('input[name="enter"]');
  1667. input.click();
  1668. },
  1669. });
  1670.  
  1671. $.register({
  1672. rule: {
  1673. host: /^(www\.)?dapat\.in$/,
  1674. },
  1675. ready: function () {
  1676. 'use strict';
  1677. var f = $('iframe[name=pagetext]');
  1678. $.openLink(f.src);
  1679. },
  1680. });
  1681.  
  1682. $.register({
  1683. rule: {
  1684. host: /^(www\.)?dd\.ma$/,
  1685. },
  1686. ready: function (m) {
  1687. 'use strict';
  1688. var i = $.$('#mainframe');
  1689. if (i) {
  1690. $.openLink(i.src);
  1691. return;
  1692. }
  1693. var a = $('#btn_open a');
  1694. $.openLink(a.href);
  1695. },
  1696. });
  1697.  
  1698. $.register({
  1699. rule: 'http://www.dumppix.com/viewer.php?*',
  1700. ready: function () {
  1701. 'use strict';
  1702. var i = $.$('#boring');
  1703. if (i) {
  1704. $.openLink(i.src);
  1705. return;
  1706. }
  1707. i = $('table td:nth-child(1) a');
  1708. $.openLink(i.href);
  1709. },
  1710. });
  1711.  
  1712. $.register({
  1713. rule: {
  1714. host: /^durl\.me$/,
  1715. },
  1716. ready: function () {
  1717. 'use strict';
  1718. var a = $('a[class="proceedBtn"]');
  1719. $.openLink(a.href);
  1720. },
  1721. });
  1722.  
  1723. $.register({
  1724. rule: {
  1725. host: /easyurl\.net|(atu|clickthru|redirects|readthis)\.ca|goshrink\.com$/,
  1726. },
  1727. ready: function () {
  1728. 'use strict';
  1729. var f = $('frame[name=main]');
  1730. $.openLink(f.src);
  1731. },
  1732. });
  1733.  
  1734. $.register({
  1735. rule: {
  1736. host: /^ethi\.in$/,
  1737. path: /^\/i\/\d+$/,
  1738. },
  1739. ready: function () {
  1740. 'use strict';
  1741. var a = $('#wrapper > .tombol > a[target="_blank"]');
  1742. $.openLink(a.href);
  1743. },
  1744. });
  1745.  
  1746. $.register({
  1747. rule: {
  1748. host: /^(www\.)?filoops.info$/
  1749. },
  1750. ready: function () {
  1751. 'use strict';
  1752. var a = $('#text > center a, #text > div[align=center] a');
  1753. $.openLink(a.href);
  1754. },
  1755. });
  1756.  
  1757. $.register({
  1758. rule: {
  1759. host: /^fit\.sh$/,
  1760. },
  1761. ready: function () {
  1762. 'use strict';
  1763. $.removeNodes('.container-body');
  1764. var m = $.searchScripts(/token="([^"]+)"/);
  1765. if (!m) {
  1766. throw new _.AdsBypasserError('site changed');
  1767. }
  1768. m = m[1];
  1769. var interLink = '/go/' + m + '?a=' + window.location.hash.substr(1);
  1770. setTimeout(function () {
  1771. $.openLink(interLink);
  1772. }, 6000);
  1773. },
  1774. });
  1775.  
  1776. (function () {
  1777. 'use strict';
  1778. $.register({
  1779. rule: {
  1780. host: /^(www\.)?fundurl\.com$/,
  1781. query: /i=([^&]+)/,
  1782. },
  1783. start: function (m) {
  1784. $.openLink(m.query[1]);
  1785. },
  1786. });
  1787. $.register({
  1788. rule: {
  1789. host: /^(www\.)?fundurl\.com$/,
  1790. path: /^\/(go-\w+|load\.php)$/,
  1791. },
  1792. ready: function () {
  1793. var f = $('iframe[name=fpage3]');
  1794. $.openLink(f.src);
  1795. },
  1796. });
  1797. })();
  1798.  
  1799. $.register({
  1800. rule: {
  1801. host: /^gkurl\.us$/,
  1802. },
  1803. ready: function () {
  1804. 'use strict';
  1805. var iframe = $('#gkurl-frame');
  1806. $.openLink(iframe.src);
  1807. },
  1808. });
  1809.  
  1810. $.register({
  1811. rule: {
  1812. host: /^u\.go2\.me$/,
  1813. },
  1814. ready: function () {
  1815. 'use strict';
  1816. var iframe = $('iframe');
  1817. $.openLink(iframe.src);
  1818. },
  1819. });
  1820.  
  1821. $.register({
  1822. rule: {
  1823. host: /^hotshorturl\.com$/,
  1824. },
  1825. ready: function () {
  1826. 'use strict';
  1827. var frame = $('frame[scrolling=yes]');
  1828. $.openLink(frame.src);
  1829. },
  1830. });
  1831.  
  1832. $.register({
  1833. rule: {
  1834. host: /^(www\.)?(ilix\.in|priva\.us)$/,
  1835. path: /\/(\w+)/,
  1836. },
  1837. ready: function (m) {
  1838. 'use strict';
  1839. var realHost = 'ilix.in';
  1840. if (m.host[2] !== realHost) {
  1841. var realURL = location.href.replace(m.host[2], realHost);
  1842. $.openLink(realURL);
  1843. return;
  1844. }
  1845. var f = $.$('iframe[name=ifram]');
  1846. if (f) {
  1847. $.openLink(f.src);
  1848. return;
  1849. }
  1850. if (!$.$('img#captcha')) {
  1851. $('form[name=frm]').submit();
  1852. }
  1853. },
  1854. });
  1855.  
  1856. $.register({
  1857. rule: {
  1858. host: /^ity\.im$/,
  1859. },
  1860. ready: function () {
  1861. 'use strict';
  1862. var f = $.$('#main');
  1863. if (f) {
  1864. $.openLink(f.src);
  1865. return;
  1866. }
  1867. f = $.$$('frame').find(function (frame) {
  1868. if (frame.src.indexOf('interheader.php') < 0) {
  1869. return _.nop;
  1870. }
  1871. return frame.src;
  1872. });
  1873. if (f) {
  1874. $.openLink(f.payload);
  1875. return;
  1876. }
  1877. f = $.searchScripts(/krypted=([^&]+)/);
  1878. if (!f) {
  1879. throw new _.AdsBypasserError('site changed');
  1880. }
  1881. f = f[1];
  1882. var data = unsafeWindow.des('ksnslmtmk0v4Pdviusajqu', unsafeWindow.hexToString(f), 0, 0);
  1883. if (data) {
  1884. $.openLink('http://ity.im/1104_21_50846_' + data);
  1885. }
  1886. },
  1887. });
  1888.  
  1889. $.register({
  1890. rule: {
  1891. host: /^(www\.)?kingofshrink\.com$/,
  1892. },
  1893. ready: function () {
  1894. 'use strict';
  1895. var l = $('#textresult > a');
  1896. $.openLink(l.href);
  1897. },
  1898. });
  1899.  
  1900. $.register({
  1901. rule: 'http://www.lienscash.com/l/*',
  1902. ready: function () {
  1903. 'use strict';
  1904. var a = $('#redir_btn');
  1905. $.openLink(a.href);
  1906. },
  1907. });
  1908.  
  1909. $.register({
  1910. rule: {
  1911. host: /^(www\.)?\w+\.link-protector\.com$/,
  1912. },
  1913. ready: function (m) {
  1914. 'use strict';
  1915. var f = $('form[style="font-weight:normal;font-size:12;font-family:Verdana;"]');
  1916. $.openLink(f.action);
  1917. },
  1918. });
  1919.  
  1920. $.register({
  1921. rule: {
  1922. host: /\.link2dollar\.com$/,
  1923. path: /^\/\d+$/,
  1924. },
  1925. ready: function () {
  1926. 'use strict';
  1927. var m = $.searchScripts(/var rlink = '([^']+)';/);
  1928. if (!m) {
  1929. throw new _.AdsBypasserError('site changed');
  1930. }
  1931. m = m[1];
  1932. $.openLink(m);
  1933. },
  1934. });
  1935.  
  1936. $.register({
  1937. rule: {
  1938. host: /^link2you\.ru$/,
  1939. path: /^\/\d+\/(.+)$/,
  1940. },
  1941. start: function (m) {
  1942. 'use strict';
  1943. var url = m.path[1];
  1944. if (!url.match(/^https?:\/\//)) {
  1945. url = '//' + url;
  1946. }
  1947. $.openLink(url);
  1948. },
  1949. });
  1950.  
  1951. (function() {
  1952. 'use strict';
  1953. var hostRules = [
  1954. /^(([\w]{8}|www)\.)?(allanalpass|cash4files|drstickyfingers|fapoff|freegaysitepass|(gone|tube)viral|(pic|tna)bucks|whackyvidz)\.com$/,
  1955. /^(([\w]{8}|www)\.)?(a[mn]y|deb|dyo|sexpalace)\.gs$/,
  1956. /^(([\w]{8}|www)\.)?(filesonthe|poontown|seriousdeals|ultrafiles|urlbeat)\.net$/,
  1957. /^(([\w]{8}|www)\.)?freean\.us$/,
  1958. /^(([\w]{8}|www)\.)?galleries\.bz$/,
  1959. /^(([\w]{8}|www)\.)?hornywood\.tv$/,
  1960. /^(([\w]{8}|www)\.)?link(babes|bucks)\.com$/,
  1961. /^(([\w]{8}|www)\.)?(megaline|miniurls|qqc|rqq|tinylinks|yyv|zff)\.co$/,
  1962. /^(([\w]{8}|www)\.)?(these(blog|forum)s)\.com$/,
  1963. /^(([\w]{8}|www)\.)?youfap\.me$/,
  1964. /^warning-this-linkcode-will-cease-working-soon\.www\.linkbucksdns\.com$/,
  1965. ];
  1966. function findToken (context) {
  1967. var script = $.$$('script', context).find(function (n) {
  1968. if (n.innerHTML.indexOf('window[\'init\' + \'Lb\' + \'js\' + \'\']') < 0) {
  1969. return _.nop;
  1970. }
  1971. return n.innerHTML;
  1972. });
  1973. if (!script) {
  1974. _.warn('pattern changed');
  1975. return null;
  1976. }
  1977. script = script.payload;
  1978. var m = script.match(/AdPopUrl\s*:\s*'.+\?ref=([\w\d]+)'/);
  1979. var token = m[1];
  1980. m = script.match(/=\s*(\d+);/);
  1981. var ak = parseInt(m[1], 10);
  1982. var re = /\+\s*(\d+);/g;
  1983. var tmp = null;
  1984. while((m = re.exec(script)) !== null) {
  1985. tmp = m[1];
  1986. }
  1987. ak += parseInt(tmp, 10);
  1988. return {
  1989. t: token,
  1990. aK: ak,
  1991. };
  1992. }
  1993. function sendRequest (token) {
  1994. _.info('sending token: %o', token);
  1995. var i = setInterval(function () {
  1996. $.get('/intermission/loadTargetUrl', token, function (text) {
  1997. var data = JSON.parse(text);
  1998. _.info('response: %o', data);
  1999. if (!data.Success && data.Errors[0] === 'Invalid token') {
  2000. _.info('got invalid token');
  2001. clearInterval(i);
  2002. $.get(window.location.toString(), {}, function (text) {
  2003. var d = $.toDOM(text);
  2004. var t = findToken(d);
  2005. sendRequest(t);
  2006. });
  2007. return;
  2008. }
  2009. if (data.Success && !data.AdBlockSpotted && data.Url) {
  2010. clearInterval(i);
  2011. $.openLinkWithReferer(data.Url);
  2012. return;
  2013. }
  2014. });
  2015. }, 1000);
  2016. }
  2017. $.register({
  2018. rule: {
  2019. host: hostRules,
  2020. path: /^\/\w+\/url\/(.*)$/,
  2021. },
  2022. ready: function(m) {
  2023. $.removeAllTimer();
  2024. $.resetCookies();
  2025. $.removeNodes('iframe');
  2026. if (m.path[1] !== null) {
  2027. $.openLinkWithReferer(m.path[1] + window.location.search);
  2028. }
  2029. }
  2030. });
  2031. $.register({
  2032. rule: {
  2033. host: hostRules,
  2034. },
  2035. ready: function () {
  2036. $.removeAllTimer();
  2037. $.resetCookies();
  2038. $.removeNodes('iframe');
  2039. if (window.location.pathname.indexOf('verify') >= 0) {
  2040. $.openLink('../');
  2041. return;
  2042. }
  2043. var token = findToken(document);
  2044. sendRequest(token);
  2045. },
  2046. });
  2047. $.register({
  2048. rule: {
  2049. query: /^\?_lbGate=\d+$/,
  2050. },
  2051. start: function () {
  2052. $.setCookie('_lbGatePassed', 'true');
  2053. $.openLink(window.location.pathname);
  2054. },
  2055. });
  2056. })();
  2057.  
  2058. $.register({
  2059. rule: {
  2060. host: /^linkshrink\.net$/,
  2061. path: /^\/[a-zA-Z0-9]+$/,
  2062. },
  2063. ready: function () {
  2064. 'use strict';
  2065. var a = $.searchScripts(/class="bt" href="([^"]+)"/);
  2066. if (!a) {
  2067. _.warn('pattern changed');
  2068. return;
  2069. }
  2070. $.openLinkWithReferer(a[1]);
  2071. },
  2072. });
  2073.  
  2074. $.register({
  2075. rule: 'http://lix.in/-*',
  2076. ready: function () {
  2077. 'use strict';
  2078. var i = $.$('#ibdc');
  2079. if (i) {
  2080. return;
  2081. }
  2082. i = $.$('form');
  2083. if (i) {
  2084. i.submit();
  2085. return;
  2086. }
  2087. i = $('iframe');
  2088. $.openLink(i.src);
  2089. },
  2090. });
  2091.  
  2092. $.register({
  2093. rule: {
  2094. host: /^lnk\.in$/,
  2095. },
  2096. ready: function () {
  2097. 'use strict';
  2098. var a = $('#divRedirectText a');
  2099. $.openLink(a.innerHTML);
  2100. },
  2101. });
  2102.  
  2103. $.register({
  2104. rule: {
  2105. host: /^(rd?)lnk\.co|reducelnk\.com$/,
  2106. path: /^\/[^.]+$/,
  2107. },
  2108. ready: function () {
  2109. 'use strict';
  2110. var f = $.$('iframe#dest');
  2111. if (f) {
  2112. $.openLink(f.src);
  2113. return;
  2114. }
  2115. $.removeNodes('iframe');
  2116. var o = $.$('#urlholder');
  2117. if (o) {
  2118. $.openLink(o.value);
  2119. return;
  2120. }
  2121. o = $.$('#skipBtn');
  2122. if (o) {
  2123. o = o.querySelector('a');
  2124. $.openLink(o.href);
  2125. return;
  2126. }
  2127. o = document.title.replace(/(LNK.co|Linkbee)\s*:\s*/, '');
  2128. $.openLink(o);
  2129. },
  2130. });
  2131.  
  2132. $.register({
  2133. rule: {
  2134. host: /^lnx\.lu|url\.fm|z\.gs$/,
  2135. },
  2136. ready: function () {
  2137. 'use strict';
  2138. var a = $('#clickbtn a');
  2139. $.openLink(a.href);
  2140. },
  2141. });
  2142.  
  2143. $.register({
  2144. rule: [
  2145. 'http://madlink.sk/',
  2146. 'http://madlink.sk/*.html',
  2147. ],
  2148. });
  2149. $.register({
  2150. rule: 'http://madlink.sk/*',
  2151. start: function (m) {
  2152. 'use strict';
  2153. $.removeNodes('iframe');
  2154. $.post('/ajax/check_redirect.php', {
  2155. link: m[1],
  2156. }, function (text) {
  2157. $.openLink(text);
  2158. });
  2159. },
  2160. });
  2161.  
  2162. $.register({
  2163. rule: {
  2164. host: [
  2165. /^mant(a|e)p\.in$/,
  2166. /^st\.oploverz\.net$/,
  2167. ],
  2168. },
  2169. ready: function () {
  2170. 'use strict';
  2171. var a = $('a.redirect, a[target=_blank][rel=nofollow]');
  2172. $.openLink(a.href);
  2173. },
  2174. });
  2175.  
  2176. $.register({
  2177. rule: {
  2178. host: [
  2179. /^moe\.god\.jp$/,
  2180. /^moesubs\.akurapopo\.pro$/,
  2181. /^dl\.nsfk\.in$/,
  2182. ]
  2183. },
  2184. ready: function () {
  2185. 'use strict';
  2186. var a = $('div div center a');
  2187. $.openLink(a.href);
  2188. },
  2189. });
  2190.  
  2191. $.register({
  2192. rule: {
  2193. host: /^mt0\.org$/,
  2194. path: /^\/[^\/]+\/$/,
  2195. },
  2196. ready: function () {
  2197. 'use strict';
  2198. $.removeNodes('frame[name=bottom]');
  2199. var f = $('frame[name=top]');
  2200. var i = setInterval(function () {
  2201. var a = $.$('div a', f.contentDocument);
  2202. if (!a) {
  2203. return;
  2204. }
  2205. clearInterval(i);
  2206. $.openLink(a.href)
  2207. }, 1000);
  2208. },
  2209. });
  2210.  
  2211. $.register({
  2212. rule: 'http://my-link.pro/*',
  2213. ready: function () {
  2214. 'use strict';
  2215. var i = $('iframe[scrolling=auto]');
  2216. if (i) {
  2217. $.openLink(i.src);
  2218. }
  2219. },
  2220. });
  2221.  
  2222. $.register({
  2223. rule: {
  2224. host: /^nsfw\.in$/,
  2225. },
  2226. ready: function () {
  2227. 'use strict';
  2228. var a = $('#long_url a');
  2229. $.openLink(a.href);
  2230. },
  2231. });
  2232.  
  2233. $.register({
  2234. rule: {
  2235. host: /^nutshellurl\.com$/,
  2236. },
  2237. ready: function () {
  2238. 'use strict';
  2239. var iframe = $('iframe');
  2240. $.openLink(iframe.src);
  2241. },
  2242. });
  2243.  
  2244. $.register({
  2245. rule: {
  2246. host: /^oxyl\.me$/,
  2247. },
  2248. ready: function () {
  2249. 'use strict';
  2250. var l = $.$$('.links-container.result-form > a.result-a');
  2251. if (l.size() > 1) {
  2252. return;
  2253. }
  2254. $.openLink(l.at(0).href);
  2255. },
  2256. });
  2257.  
  2258. $.register({
  2259. rule: {
  2260. host: /^p\.pw$/,
  2261. },
  2262. ready: function () {
  2263. 'use strict';
  2264. $.removeNodes('iframe');
  2265. var m = $.searchScripts(/window\.location = "(.*)";/);
  2266. m = m[1];
  2267. $.openLink(m);
  2268. },
  2269. });
  2270.  
  2271. $.register({
  2272. rule: {
  2273. host: /^(www\.)?\w+\.rapeit\.net$/,
  2274. path: /^\/(go|prepair|request|collect|analyze)\/[a-f0-9]+$/,
  2275. },
  2276. ready: function (m) {
  2277. 'use strict';
  2278. var a = $('a#download_link');
  2279. $.openLink(a.href);
  2280. },
  2281. });
  2282.  
  2283. $.register({
  2284. rule: {
  2285. host: /^ref\.so$/,
  2286. },
  2287. ready: function () {
  2288. 'use strict';
  2289. $.removeNodes('iframe');
  2290. var a = $('#btn_open a');
  2291. $.openLink(a.href);
  2292. },
  2293. });
  2294.  
  2295. $.register({
  2296. rule: 'http://reffbux.com/refflinx/view/*',
  2297. ready: function () {
  2298. 'use strict';
  2299. $.removeNodes('iframe');
  2300. var m = $.searchScripts(/skip_this_ad_(\d+)_(\d+)/);
  2301. var id = m[1];
  2302. var share = m[2];
  2303. var location = window.location.toString();
  2304. $.post('http://reffbux.com/refflinx/register', {
  2305. id: id,
  2306. share: share,
  2307. fp: 0,
  2308. location: location,
  2309. referer: '',
  2310. }, function (text) {
  2311. var m = text.match(/'([^']+)'/);
  2312. if (!m) {
  2313. throw new _.AdsBypasserError('pattern changed');
  2314. }
  2315. $.openLink(m[1]);
  2316. });
  2317. },
  2318. });
  2319.  
  2320. $.register({
  2321. rule: 'http://richlink.com/app/webscr?cmd=_click&key=*',
  2322. ready: function () {
  2323. 'use strict';
  2324. var f = $('frameset');
  2325. f = f.onload.toString();
  2326. f = f.match(/url=([^&]+)/);
  2327. if (f) {
  2328. f = decodeURIComponent(f[1]);
  2329. } else {
  2330. f = $('frame[name=site]');
  2331. f = f.src;
  2332. }
  2333. $.openLink(f);
  2334. },
  2335. });
  2336.  
  2337. $.register({
  2338. rule: 'http://rijaliti.info/*.php',
  2339. ready: function () {
  2340. 'use strict';
  2341. var a = $('#main td[align="center"] a');
  2342. $.openLink(a.href);
  2343. },
  2344. });
  2345.  
  2346. $.register({
  2347. rule: {
  2348. host: /^riurl\.com$/,
  2349. path: /^\/.+/,
  2350. },
  2351. ready: function () {
  2352. 'use strict';
  2353. var s = $.$('body script');
  2354. if (s) {
  2355. s = s.innerHTML.indexOf('window.location.replace');
  2356. if (s >= 0) {
  2357. return;
  2358. }
  2359. }
  2360. $.openLinkByPost('', {
  2361. hidden: '1',
  2362. image: ' ',
  2363. });
  2364. },
  2365. });
  2366.  
  2367. $.register({
  2368. rule: {
  2369. host: /^preview\.rlu\.ru$/,
  2370. },
  2371. ready: function () {
  2372. 'use strict';
  2373. var a = $('#content > .long_url > a');
  2374. $.openLink(a.href);
  2375. },
  2376. });
  2377.  
  2378. $.register({
  2379. rule: {
  2380. host: /^robo\.us$/,
  2381. },
  2382. ready: function () {
  2383. 'use strict';
  2384. $.removeNodes('iframe');
  2385. var url = atob(unsafeWindow.fl);
  2386. $.openLink(url);
  2387. },
  2388. });
  2389.  
  2390. $.register({
  2391. rule: {
  2392. host: /^(www\.)?safelinkconverter2\.com$/,
  2393. path: /^\/decrypt-\d\/$/,
  2394. query: /id=(\w+==)/,
  2395. },
  2396. ready: function (m) {
  2397. 'use strict';
  2398. $.openLink(window.atob(m.query[1]));
  2399. },
  2400. });
  2401.  
  2402. $.register({
  2403. rule: {
  2404. host: /^(www\.)?safeurl\.eu$/,
  2405. path: /\/\w+/,
  2406. },
  2407. ready: function () {
  2408. 'use strict';
  2409. var directUrl = $.searchScripts(/window\.open\("([^"]+)"\);/);
  2410. if (!directUrl) {
  2411. throw new _.AdsBypasserError('script content changed');
  2412. }
  2413. directUrl = directUrl[1];
  2414. $.openLink(directUrl);
  2415. },
  2416. });
  2417.  
  2418. $.register({
  2419. rule: {
  2420. host: /^(www\.)?(apploadz\.ru|seomafia\.net)$/
  2421. },
  2422. ready: function () {
  2423. 'use strict';
  2424. $.removeNodes('iframe');
  2425. var a = $('table a');
  2426. $.openLink(a.href);
  2427. },
  2428. });
  2429.  
  2430. $.register({
  2431. rule: /http:\/\/setlinks\.us\/(p|t|d).*/,
  2432. ready: function () {
  2433. 'use strict';
  2434. var k = $.searchScripts(/window\.location='([^']+)'/);
  2435. if (k) {
  2436. $.openLink(k[1]);
  2437. return;
  2438. }
  2439. var aLinks = $.$$('div.links-container.result-form:not(.p-links-container) > span.dlinks > a');
  2440. if (aLinks.size() === 1) {
  2441. $.openLink(aLinks.at(0).href);
  2442. return;
  2443. }
  2444. k = $('img[alt=captcha]');
  2445. $.captcha(k.src, function (a) {
  2446. var b = $('#captcha');
  2447. var c = $('input[name=Submit]');
  2448. b.value = a;
  2449. c.click();
  2450. });
  2451. },
  2452. });
  2453.  
  2454. (function () {
  2455. 'use strict';
  2456. function afterGotSessionId (sessionId) {
  2457. var X_NewRelic_ID = $.searchScripts(/xpid:"([^"]+)"/);
  2458. var Fingerprint = unsafeWindow.Fingerprint;
  2459. var browserToken = null;
  2460. if (Fingerprint) {
  2461. browserToken = (new Fingerprint($.inject({canvas: !0}))).get();
  2462. } else {
  2463. browserToken = Math.round((new Date()).getTime() / 1000);
  2464. }
  2465. var data = "sessionId=" + sessionId + "&browserToken=" + browserToken;
  2466. var header = {
  2467. Accept: 'application/json, text/javascript',
  2468. };
  2469. if (X_NewRelic_ID) {
  2470. header['X-NewRelic-ID'] = X_NewRelic_ID;
  2471. }
  2472. var i = setInterval(function () {
  2473. $.get('/adSession/callback', data, function (text) {
  2474. var r = JSON.parse(text);
  2475. if (r.status == "ok" && r.destinationUrl) {
  2476. clearInterval(i);
  2477. $.openLink(r.destinationUrl);
  2478. }
  2479. }, header);
  2480. }, 1000);
  2481. }
  2482. $.register({
  2483. rule: {
  2484. host: /^sh\.st|dh10thbvu\.com|u2ks\.com$/,
  2485. path: /^\/[\d\w]+/,
  2486. },
  2487. ready: function () {
  2488. $.removeNodes('iframe');
  2489. var m = $.searchScripts(/sessionId: "([\d\w]+)",/);
  2490. if (m) {
  2491. afterGotSessionId(m[1]);
  2492. return;
  2493. }
  2494. var o = new MutationObserver(function (mutations) {
  2495. mutations.forEach(function (mutation) {
  2496. var m = $.searchScripts(/sessionId: "([\d\w]+)",/);
  2497. if (m) {
  2498. o.disconnect();
  2499. afterGotSessionId(m[1]);
  2500. }
  2501. });
  2502. });
  2503. o.observe(document.body, {
  2504. childList: true,
  2505. });
  2506. },
  2507. });
  2508. })();
  2509.  
  2510. $.register({
  2511. rule: {
  2512. host: /^(www\.)?similarsites\.com$/,
  2513. path: /^\/goto\/([^?]+)/
  2514. },
  2515. ready: function (m) {
  2516. 'use strict';
  2517. var l = m.path[1];
  2518. if (!/^https?:\/\//.test(l)) {
  2519. l = 'http://' + l;
  2520. }
  2521. $.openLink(l);
  2522. },
  2523. });
  2524.  
  2525. $.register({
  2526. rule: {
  2527. host: /^(www\.)?srelink\.com$/,
  2528. path: /^\/i\/\w+$/,
  2529. },
  2530. ready: function (m) {
  2531. 'use strict';
  2532. $.removeNodes('iframe');
  2533. var matches = $.searchScripts(/href="([^"]+)">SKIP AD<\/a>/);
  2534. $.openLink(matches[1]);
  2535. },
  2536. });
  2537.  
  2538. $.register({
  2539. rule: {
  2540. host: /^stash-coins\.com$/,
  2541. },
  2542. start: function () {
  2543. 'use strict';
  2544. var url = window.location.toString();
  2545. var i = url.lastIndexOf('http');
  2546. url = url.substr(i);
  2547. $.openLink(url);
  2548. },
  2549. });
  2550.  
  2551. $.register({
  2552. rule: {
  2553. host: /^steamcommunity\.com$/,
  2554. path: /^\/linkfilter\/(.+)?$/,
  2555. query: /^(?:\?url=(.+))?$/,
  2556. },
  2557. ready: function (m) {
  2558. 'use strict';
  2559. var target = m.path[1]? m.path[1]+document.location.search : m.query[1];
  2560. $.openLink(target);
  2561. },
  2562. });
  2563.  
  2564. $.register({
  2565. rule: {
  2566. host: /^(www\.)?sylnk\.net$/,
  2567. query: /link=([^&]+)/
  2568. },
  2569. ready: function (m) {
  2570. 'use strict';
  2571. var rawLink = atob(m.query[1]);
  2572. $.openLink(rawLink);
  2573. },
  2574. });
  2575.  
  2576. $.register({
  2577. rule: {
  2578. host: /^thinfi\.com$/,
  2579. },
  2580. ready: function () {
  2581. 'use strict';
  2582. var a = $('div p a');
  2583. $.openLink(a.href);
  2584. },
  2585. });
  2586.  
  2587. $.register({
  2588. rule: {
  2589. host: /^tinyarrows\.com$/,
  2590. path: /^\/preview\.php$/,
  2591. query: /^\?page=([^&]+)/,
  2592. },
  2593. start: function (m) {
  2594. 'use strict';
  2595. $.openLink(decodeURIComponent(m.query[1]));
  2596. },
  2597. });
  2598.  
  2599. $.register({
  2600. rule: {
  2601. host: /^(www\.)?typ\.me$/,
  2602. },
  2603. ready: function (m) {
  2604. 'use strict';
  2605. var a = $('#skipAdBtn');
  2606. $.openLink(a.href);
  2607. },
  2608. });
  2609.  
  2610. $.register({
  2611. rule: {
  2612. host: /^(www\.)?ultshare\.com$/,
  2613. path: /^\/(?:(?:\d-)?(\d+)|index\.php)$/,
  2614. query: /^(?:\?a=\d&c=(\d+))?$/
  2615. },
  2616. ready: function (m) {
  2617. 'use strict';
  2618. var linkId = m.path[1]?m.path[1]:m.query[1];
  2619. var directLink = '/3-' + linkId;
  2620. $.openLink(directLink);
  2621. },
  2622. });
  2623.  
  2624. $.register({
  2625. rule: {
  2626. host: /^unfake\.it$/,
  2627. },
  2628. ready: function () {
  2629. 'use strict';
  2630. var frame = $('frame');
  2631. var i = frame.src.lastIndexOf('http://');
  2632. $.openLink(frame.src.substr(i));
  2633. },
  2634. });
  2635.  
  2636. $.register({
  2637. rule: {
  2638. host: /^(www\.)?(upan|gxp)\.so$/,
  2639. path: /^\/\w+$/,
  2640. },
  2641. ready: function () {
  2642. 'use strict';
  2643. var a = $('table.td_line a[onclick="down_process_s();"]');
  2644. $.openLink(a.href);
  2645. },
  2646. });
  2647.  
  2648. $.register({
  2649. rule: {
  2650. host: /^url\.ie$/,
  2651. },
  2652. ready: function () {
  2653. 'use strict';
  2654. var a = $('a[title="Link to original URL"]');
  2655. $.openLink(a.href);
  2656. },
  2657. });
  2658.  
  2659. $.register({
  2660. rule: {
  2661. host: /urlcash\.(com|net|org)|(bat5|detonating|celebclk|eightteen|smilinglinks|peekatmygirlfriend|pornyhost|clb1|urlgalleries)\.com|looble\.net|xxxs\.org$/,
  2662. },
  2663. ready: function () {
  2664. 'use strict';
  2665. if (unsafeWindow && unsafeWindow.linkDestUrl) {
  2666. $.openLink(unsafeWindow.linkDestUrl);
  2667. return;
  2668. }
  2669. var matches = document.body.innerHTML.match(/linkDestUrl = '(.+)'/);
  2670. if (matches) {
  2671. $.openLink(matches[1]);
  2672. return;
  2673. }
  2674. },
  2675. });
  2676.  
  2677. $.register({
  2678. rule: {
  2679. host: /^(www\.)?(urlcow|miniurl)\.com$/,
  2680. },
  2681. ready: function () {
  2682. 'use strict';
  2683. var m = $.searchScripts(/window\.location = "([^"]+)"/);
  2684. if (!m) {
  2685. throw new _.AdsBypasserError('site changed');
  2686. }
  2687. $.openLink(m[1]);
  2688. },
  2689. });
  2690.  
  2691. $.register({
  2692. rule: {
  2693. host: /^urlinn\.com$/,
  2694. },
  2695. ready: function () {
  2696. 'use strict';
  2697. var m = $('META[HTTP-EQUIV=refresh]').getAttribute('CONTENT').match(/url='([^']+)'/);
  2698. if (m) {
  2699. $.openLink(m[1]);
  2700. }
  2701. },
  2702. });
  2703.  
  2704. $.register({
  2705. rule: {
  2706. host: /^urlms\.com$/,
  2707. },
  2708. ready: function () {
  2709. 'use strict';
  2710. var iframe = $('#content');
  2711. $.openLink(iframe.src);
  2712. },
  2713. });
  2714.  
  2715. $.register({
  2716. rule: 'http://urlz.so/l/*',
  2717. ready: function () {
  2718. 'use strict';
  2719. var i = $.$('td > a');
  2720. if (i) {
  2721. i = i.href;
  2722. var m = i.match(/javascript:declocation\('(.+)'\);/);
  2723. if (m) {
  2724. i = atob(m[1]);
  2725. }
  2726. $.openLink(i);
  2727. return;
  2728. }
  2729. i = $('img');
  2730. $.captcha(i.src, function (a) {
  2731. var b = $('input[name=captcha]');
  2732. var c = $('input[name=submit]');
  2733. b.value = a;
  2734. c.click();
  2735. });
  2736. },
  2737. });
  2738.  
  2739. $.register({
  2740. rule: {
  2741. host: /^www\.viidii\.info$/,
  2742. },
  2743. ready: function () {
  2744. 'use strict';
  2745. var o = $('#directlink');
  2746. $.openLink(o.href);
  2747. },
  2748. });
  2749.  
  2750. $.register({
  2751. rule: {
  2752. host: /^(www\.)?vir\.al$/,
  2753. },
  2754. ready: function () {
  2755. 'use strict';
  2756. var m = $.searchScripts(/var target_url = '([^']+)';/);
  2757. if (!m) {
  2758. throw new _.AdsBypasserError('site changed');
  2759. }
  2760. $.openLink(m[1]);
  2761. },
  2762. });
  2763.  
  2764. $.register({
  2765. rule: {
  2766. host: /^(www\.)?wzzq\.me$/,
  2767. },
  2768. ready: function () {
  2769. 'use strict';
  2770. try {
  2771. var l = $('#img_loading_table2 div.wz_img_hit a[target=_blank]').href;
  2772. $.openLink(l);
  2773. } catch (e) {
  2774. }
  2775. },
  2776. });
  2777.  
  2778. $.register({
  2779. rule: {
  2780. host: /^xlink.me$/
  2781. },
  2782. ready: function () {
  2783. 'use strict';
  2784. var a = $('#main_form > center > a');
  2785. if (!a) {return;}
  2786. $.openLink(a.href);
  2787. },
  2788. });
  2789.  
  2790. $.register({
  2791. rule: 'http://yep.it/preview.php?p=*',
  2792. ready: function () {
  2793. 'use strict';
  2794. var link = $('font[color="grey"]').innerHTML;
  2795. $.openLink(link);
  2796. },
  2797. });
  2798.  
  2799. $.register({
  2800. rule: 'http://www.yooclick.com/l/*',
  2801. ready: function () {
  2802. 'use strict';
  2803. $.removeNodes('iframe');
  2804. var uniq = unsafeWindow.uniq || unsafeWindow.uniqi;
  2805. if (!uniq) {return;}
  2806. var path = window.location.pathname;
  2807. var url = _.T('{0}?ajax=true&adblock=false&old=false&framed=false&uniq={1}')(path, uniq);
  2808. var getURL = function() {
  2809. $.get(url, {
  2810. }, function (text) {
  2811. var goodURL = /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(text);
  2812. if (goodURL) {
  2813. $.openLink(text);
  2814. } else {
  2815. setTimeout(getURL, 500);
  2816. }
  2817. });
  2818. }
  2819. getURL();
  2820. },
  2821. });
  2822.  
  2823. $.register({
  2824. rule: 'http://zo.mu/redirector/process?link=*',
  2825. ready: function () {
  2826. 'use strict';
  2827. $.removeNodes('iframe');
  2828. window.location.reload();
  2829. },
  2830. });
  2831.  
  2832. $.register({
  2833. rule: {
  2834. host: /^zzz\.gl$/,
  2835. },
  2836. ready: function () {
  2837. 'use strict';
  2838. var m = $.searchScripts(/var domainurl = '([^']+)';/);
  2839. if (!m) {
  2840. throw new _.AdsBypasserError('site changed');
  2841. }
  2842. $.openLink(m[1]);
  2843. },
  2844. });
  2845.  
  2846. $.register({
  2847. rule: {
  2848. host: /^www\.4shared\.com$/,
  2849. path: /^\/(mp3|get|rar|zip|file|android|software|program)\//,
  2850. },
  2851. ready: function () {
  2852. 'use strict';
  2853. $.get('http://www.4server.info/find.php', {
  2854. data: window.location.href,
  2855. }, function (data) {
  2856. var d = $.toDOM(data);
  2857. var c = $('meta[http-equiv=refresh]', d);
  2858. var b = c.content.match(/URL=(.+)$/);
  2859. var a = b[1];
  2860. $.openLink(a);
  2861. });
  2862. },
  2863. });
  2864.  
  2865. (function() {
  2866. 'use strict';
  2867. $.register({
  2868. rule: {
  2869. host: /^(www\.)?dl-protect\.com$/,
  2870. path: /\/[A-Z0-9]+/,
  2871. },
  2872. ready: function () {
  2873. var f = $.$('form[name=ccerure]');
  2874. if (f) {
  2875. var observer = new MutationObserver(function (mutations) {
  2876. var iIn = $('input[id=in]');
  2877. for (var i = 0; i < mutations.length; i++) {
  2878. if (mutations[i].target.value && mutations[i].attributeName === 'value') {
  2879. observer.disconnect();
  2880. iIn.value = "Tracking too much hurts users' privacy";
  2881. if (!canFastRedirect()) {
  2882. return;
  2883. }
  2884. setTimeout(function() {
  2885. f.submit();
  2886. }, 600);
  2887. break;
  2888. }
  2889. }
  2890. });
  2891. var iIn = $('input[id=in]');
  2892. if (iIn.value) {
  2893. setTimeout(function() {
  2894. f.submit();
  2895. }, 600);
  2896. } else {
  2897. observer.observe(iIn, {
  2898. attributes: true,
  2899. });
  2900. }
  2901. return;
  2902. }
  2903. var l = $.$$('#slinks > a');
  2904. if (l.size() === 1) {
  2905. $.openLink(l.at(0).href);
  2906. }
  2907. },
  2908. });
  2909. function canFastRedirect () {
  2910. return !$.$('form[name=ccerure]').onsubmit && !$.$('form[name=ccerure] input[name=pwd]');
  2911. }
  2912. })();
  2913.  
  2914. $.register({
  2915. rule: {
  2916. host: /^(www\.)?embedupload\.com$/,
  2917. path: /^\/$/,
  2918. query: /^\?\w{2}=\w+$/
  2919. },
  2920. ready: function () {
  2921. 'use strict';
  2922. var downloadPage = $('.categories a[target=_blank]');
  2923. $.openLink(downloadPage);
  2924. },
  2925. });
  2926.  
  2927. $.register({
  2928. rule: {
  2929. host: /^(www\.)?(firedrive|putlocker)\.com$/,
  2930. path: /^\/file\/[0-9A-F]+$/,
  2931. },
  2932. ready: function () {
  2933. 'use strict';
  2934. var c = $('#confirm_form');
  2935. c.submit();
  2936. },
  2937. });
  2938.  
  2939. $.register({
  2940. rule: {
  2941. host: /^(www\.)?jheberg\.net$/,
  2942. path: /^\/captcha\//,
  2943. },
  2944. ready: function () {
  2945. 'use strict';
  2946. $('.dl-button').click();
  2947. },
  2948. });
  2949. $.register({
  2950. rule: {
  2951. host: /^(www\.)?jheberg\.net$/,
  2952. path: /^\/redirect\//,
  2953. },
  2954. ready: function () {
  2955. 'use strict';
  2956. var matches = $.searchScripts(/'slug':\s*'([^']+)',\s*'hoster':\s*'([^']+)'/);
  2957. var slug = matches[1];
  2958. var hoster = matches[2];
  2959. $.post('/get/link/', {'slug': slug, 'hoster': hoster}, function(response) {
  2960. var respJSON = JSON.parse(response);
  2961. $.openLink(respJSON.url);
  2962. });
  2963. },
  2964. });
  2965.  
  2966. $.register({
  2967. rule: {
  2968. host: /^(www\.)?mirrorcreator\.com$/,
  2969. path: /^\/showlink\.php$/,
  2970. },
  2971. ready: function () {
  2972. 'use strict';
  2973. var a = $.$('#redirectlink a');
  2974. if (a) {
  2975. $.openLink(a.href);
  2976. return;
  2977. }
  2978. a = $('#redirectlink > div.redirecturl');
  2979. a = a.innerHTML;
  2980. if (!a.match(/^http/)) {
  2981. throw new _.AdsBypasserError('not a valid URL');
  2982. }
  2983. $.openLink(a);
  2984. },
  2985. });
  2986.  
  2987. $.register({
  2988. rule: {
  2989. host: /^www.mirrorupload.net$/,
  2990. },
  2991. ready: function () {
  2992. 'use strict';
  2993. var accessForm = $('form[name=form_upload]');
  2994. var accessInput = document.createElement('input');
  2995. accessInput.type = 'hidden';
  2996. accessInput.name = 'access';
  2997. accessInput.value = Math.random();
  2998. accessForm.appendChild(accessInput);
  2999. accessForm.submit();
  3000. },
  3001. });
  3002.  
  3003. (function () {
  3004. 'use strict';
  3005. var sUrl = '(\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])';
  3006. function isLink (text) {
  3007. var rUrl = new RegExp(_.T('^{0}$')(sUrl), 'i');
  3008. return rUrl.test(text);
  3009. }
  3010. function linkify (text) {
  3011. var rUrl = new RegExp(sUrl, 'ig');
  3012. return text.replace(rUrl, function(match) {
  3013. return _.T("<a href='{0}'>{0}</a>")(match);
  3014. });
  3015. }
  3016. $.register({
  3017. rule: {
  3018. host: /^(www\.)?([a-zA-Z0-9]+\.)?binbox\.io$/,
  3019. path: /\/([a-zA-Z0-9]+)/,
  3020. hash: /#([a-zA-Z0-9]+)/,
  3021. },
  3022. ready: function (m) {
  3023. var sjcl = unsafeWindow.sjcl;
  3024. var paste_id = m.path[1];
  3025. var paste_salt = m.hash[1];
  3026. var fake_user = 'binbox';
  3027. var API_URL = _.T('https://{0}.binbox.io/{1}.json')(fake_user, paste_id);
  3028. $.get(API_URL, "", function (pasteInfo) {
  3029. pasteInfo = JSON.parse(pasteInfo);
  3030. if (!pasteInfo.ok) {
  3031. throw new _.AdsBypasserError("error when getting paste information");
  3032. }
  3033. var raw_paste = sjcl.decrypt(paste_salt, pasteInfo.paste.text);
  3034. if (isLink(raw_paste)) {
  3035. $.openLink(raw_paste);
  3036. return;
  3037. }
  3038. var elm = document.createElement('pre');
  3039. elm.id = 'paste-text';
  3040. elm.innerHTML = linkify(raw_paste);
  3041. var frame = $('#paste-frame, #captcha-page');
  3042. frame.parentNode.replaceChild(elm, frame);
  3043. });
  3044. },
  3045. });
  3046. })();
  3047.  
  3048. $._main();