AdsBypasserLite

Bypass Ads

目前为 2015-01-11 提交的版本。查看 最新版本

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