DLE links decoder

Прямые ссылки на сайтах с движком DataLife Engine (DLE)

目前为 2016-08-26 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name DLE links decoder
  3. // @namespace lainscripts_dle_links_decoder
  4. // @version 0.7
  5. // @description Прямые ссылки на сайтах с движком DataLife Engine (DLE)
  6. // @author lainverse
  7. // @match *://*/*
  8. // @grant none
  9. // ==/UserScript==
  10. // Script based on a similar script by raletag:
  11. // https://greasyfork.org/en/scripts/22290-Прямые-ссылки-в-dle
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. var win = window;
  17.  
  18. function isBase64(str) {
  19. try {
  20. return !!str && !!win.atob(str);
  21. } catch (ignore) {
  22. return false;
  23. }
  24. }
  25.  
  26. function clickHandler(e){
  27. var link = e.target, url = link.href, url64;
  28. if (!url) {
  29. while (!url && link !== this) {
  30. link = link.parentNode;
  31. url = link.href;
  32. }
  33. if (!url) {
  34. return true;
  35. }
  36. }
  37. url64 = decodeURIComponent((url.match(/[?&]url=([^&]*)(&|$)/i)||
  38. url.match(/\/leech_out\.php\?.:(.+)$/i)||
  39. [])[1]);
  40. if (!url64) {
  41. return true;
  42. }
  43. if (isBase64(url64)) {
  44. url = win.atob(url64);
  45. console.log('Replaced ' + link.href + ' with ' + url);
  46. link.href = url;
  47. }
  48. return true;
  49. }
  50.  
  51. document.addEventListener('click', clickHandler, false);
  52. document.addEventListener('contextmenu', clickHandler, false);
  53. })();