Bypass FileCrypt

Bypass FileCrypt and get the original link! Try this version first. If Bypass FileCrypt shows a "2" in the page and doesn't redirect to the final page, then remove this script and try Bypass FileCrypt (XHR) instead.

بۇ قوليازمىنى قاچىلاش؟
ئاپتورنىڭ تەۋسىيەلىگەن قوليازمىسى

سىز بەلكىم Bypass FileCrypt (XHR) نى ياقتۇرۇشىڭىز مۇمكىن.

بۇ قوليازمىنى قاچىلاش
  1. // ==UserScript==
  2. // @name Bypass FileCrypt
  3. // @name:it Bypassa FileCrypt
  4. // @namespace StephenP
  5. // @version 1.3.9.1
  6. // @description Bypass FileCrypt and get the original link! Try this version first. If Bypass FileCrypt shows a "2" in the page and doesn't redirect to the final page, then remove this script and try Bypass FileCrypt (XHR) instead.
  7. // @description:it Bypassa Filecrypt e ottieni il collegamento originale! Prova prima questa versione. Se Bypass Filecrypt mostra un "2" nella pagina e non reindirizza alla destinazione finale, allora rimuovi questo script e prova Bypass Filecrypt (XHR) al suo posto.
  8. // @author StephenP
  9. // @grant GM.xmlHttpRequest
  10. // @match http://filecrypt.cc/*
  11. // @match http://www.filecrypt.cc/*
  12. // @match http://filecrypt.co/*
  13. // @match http://www.filecrypt.co/*
  14. // @match https://filecrypt.cc/*
  15. // @match https://www.filecrypt.cc/*
  16. // @match https://filecrypt.co/*
  17. // @match https://www.filecrypt.co/*
  18. // @run-at document-end
  19. // @connect dcrypt.it
  20. // @connect self
  21. // @contributionURL https://buymeacoffee.com/stephenp_greasyfork
  22. // ==/UserScript==
  23. (function () {
  24. var usenetAd=document.getElementsByTagName('A');//come on, why should anyone pay for access to pirated content?
  25. for(var i=0;i<usenetAd.length;i++){
  26. if(usenetAd[i].href.includes('/pink/')){
  27. usenetAd[i].parentNode.remove();
  28. i=usenetAd.length;
  29. }
  30. }
  31. if(document.location.href.includes("/Link/")){
  32. getSingleLink();
  33. }
  34. else if(document.location.href.includes("/Container/")){
  35. let art=document.getElementsByClassName("download")[0].parentNode.parentNode.parentNode.parentNode;
  36. let load=document.createElement("DIV");
  37. load.id="dcryptLoadMsg";
  38. load.style.marginBottom="2em";
  39. load.textContent="Loading decrypted links list from dcrypt.it...";
  40. art.parentNode.insertBefore(load,art);
  41. getCNL();
  42. }
  43. })();
  44. function getSingleLink(){
  45. if(document.body.getElementsByTagName("SCRIPT").length==0){
  46. window.stop();
  47. if(body.children.length>0){
  48. const a=document.body.innerHTML.lastIndexOf("http");
  49. top.location.href=document.body.innerHTML.substring(a,document.body.innerHTML.indexOf('id=',a)+43).replace('&amp;', '&');
  50. }
  51. else{
  52. GM.xmlHttpRequest({
  53. method: "GET",
  54. url: document.location.href,
  55. onload: function(response) {
  56. const a=response.responseText.lastIndexOf("http");
  57. top.location.href=response.responseText.substring(a,response.responseText.indexOf('id=',a)+43);
  58. }
  59. });
  60. }
  61. }
  62. }
  63. function getCNL(){
  64. var dlcButton=document.getElementsByClassName("dlcdownload");
  65. if(dlcButton.length>0){
  66. var inputs=document.getElementsByTagName('INPUT');
  67. var dlcId;
  68. /*for(var i=0;i<inputs.length;i++){
  69. if(inputs[i].getAttribute('name')=='hidden_cnl_id'){
  70. dlcId=inputs[i].getAttribute('value');
  71. i=inputs.length;
  72. }
  73. }*/ //left for reference
  74. dlcId=document.getElementsByClassName("dlcdownload")[0].attributes["onclick"].nodeValue.split('\'')[1];
  75. //console.log('dlcId='+dlcId);
  76. GM.xmlHttpRequest({
  77. method: "GET",
  78. url: "https://"+document.location.hostname+"/DLC/"+dlcId+".dlc",
  79. onload: function(response) {
  80. dcrypt(response.responseText);
  81. },
  82. onerror: function(response) {
  83. }
  84. });
  85. }
  86. else{
  87. document.getElementById("dcryptLoadMsg").textContent="No DLC file is available for bulk download. You'll have to click on the download buttons to retrieve the links. This operation isn't currently automated by Bypass FileCrypt script.";
  88. document.getElementById("dcryptLoadMsg").style.color="red";
  89. }
  90. }
  91. function dcrypt(content){
  92. //console.log(content);
  93. GM.xmlHttpRequest({
  94. method: "POST",
  95. url: "http://dcrypt.it/decrypt/paste",
  96. headers: {
  97. "Content-Type": "application/x-www-form-urlencoded"
  98. },
  99. data: "content="+encodeURIComponent(content),
  100. onload: function(response) {
  101. //console.log(response);
  102. var obj=JSON.parse(response.response);
  103. //console.log(obj);
  104. var finalLinksDiv=document.createElement("DIV");
  105. finalLinksDiv.style.backgroundColor="white";
  106. finalLinksDiv.style.borderRadius="10px";
  107. finalLinksDiv.style.padding="1em";
  108. finalLinksDiv.style.marginTop="1em";
  109. finalLinksDiv.style.color="black";
  110. finalLinksDiv.style.zIndex="10";
  111. finalLinksDiv.style.position="relative";
  112. finalLinksDiv.style.marginBottom="1em";
  113. let a=document.createElement("SPAN");
  114. a.textContent="Decrypted links:";
  115. finalLinksDiv.appendChild(a);
  116. finalLinksDiv.appendChild(document.createElement("BR"));
  117. finalLinksDiv.appendChild(document.createElement("BR"));
  118. try{
  119. for (var link of obj.success.links) {
  120. console.log(link);
  121. let b=document.createElement("A");
  122. b.textContent=link;
  123. b.href=link;
  124. b.style.color="#156594";
  125. finalLinksDiv.appendChild(b);
  126. finalLinksDiv.appendChild(document.createElement("BR"));
  127. }
  128. }
  129. catch(e){
  130. console.log(e);
  131. document.getElementById("dcryptLoadMsg").textContent="Error while reading the decrypted links from dcrypt.it. You can still use the single uncrypted links below.";
  132. }
  133. console.log(finalLinksDiv);
  134. document.getElementById("dcryptLoadMsg").replaceWith(finalLinksDiv);
  135. //Do you like it now? It's not hidden anymore :P
  136. const config = { attributes: true, childList: false, subtree: false };
  137. const callback = function(mutationList, observer) {
  138. for (const mutation of mutationList) {
  139. console.log(mutation);
  140. mutation.target.removeAttribute(mutation.attributeName);
  141. }
  142. };
  143. const observer = new MutationObserver(callback);
  144. observer.observe(finalLinksDiv, config);
  145. //
  146. },
  147. onerror: function(response) {
  148. document.getElementById("dcryptLoadMsg").textContent="Error while retrieving the links from dcrypt.it. You can still use the single uncrypted links below.";
  149. }
  150. });
  151. }