AdsBypasserLite

Bypass Ads

当前为 2014-09-06 提交的版本,查看 最新版本

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