Greasy Fork镜像 还支持 简体中文。

Bypass FileCrypt

Bypass FileCrypt and get the original link!

安裝腳本?
作者推薦腳本

您可能也會喜歡 Bypass FileCrypt (XHR)

安裝腳本
  1. // ==UserScript==
  2. // @name Bypass FileCrypt
  3. // @name:it Bypassa FileCrypt
  4. // @namespace StephenP
  5. // @version 1.4.0.6
  6. // @description Bypass FileCrypt and get the original link!
  7. // @description:it Bypassa Filecrypt e ottieni il collegamento originale!
  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. //Temporarily disabled as I don't have access to a pc right now to fix the issue with CnL button.
  66. var dlcButton=[];
  67. if(dlcButton.length>0){
  68. var inputs=document.getElementsByTagName('INPUT');
  69. var dlcId;
  70. /*for(var i=0;i<inputs.length;i++){
  71. if(inputs[i].getAttribute('name')=='hidden_cnl_id'){
  72. dlcId=inputs[i].getAttribute('value');
  73. i=inputs.length;
  74. }
  75. }*/ //left for reference
  76. dlcId=document.getElementsByClassName("dlcdownload")[0].attributes["onclick"].nodeValue.split('\'')[1];
  77. //console.log('dlcId='+dlcId);
  78. GM.xmlHttpRequest({
  79. method: "GET",
  80. url: "https://"+document.location.hostname+"/DLC/"+dlcId+".dlc",
  81. onload: function(response) {
  82. dcrypt(response.responseText);
  83. },
  84. onerror: function(response) {
  85. xhrLinkExtract();
  86. }
  87. });
  88. }
  89. else{
  90. try{
  91. xhrLinkExtract();
  92. }
  93. catch(e){
  94. console.log("Error decrypting the links locally: ");
  95. console.log(e);
  96. 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.";
  97. document.getElementById("dcryptLoadMsg").style.color="red";
  98. }
  99. }
  100. }
  101. function dcrypt(content){
  102. //console.log(content);
  103. GM.xmlHttpRequest({
  104. method: "POST",
  105. url: "http://dcrypt.it/decrypt/paste",
  106. headers: {
  107. "Content-Type": "application/x-www-form-urlencoded"
  108. },
  109. data: "content="+encodeURIComponent(content),
  110. onload: function(response) {
  111. //console.log(response);
  112. var obj=JSON.parse(response.response);
  113. //console.log(obj);
  114. var finalLinksDiv=document.createElement("DIV");
  115. finalLinksDiv.style.backgroundColor=bgColor();
  116. finalLinksDiv.style.borderRadius="10px";
  117. finalLinksDiv.style.padding="1em";
  118. finalLinksDiv.style.marginTop="1em";
  119. finalLinksDiv.style.color=textColor();
  120. finalLinksDiv.style.zIndex="10";
  121. finalLinksDiv.style.position="relative";
  122. finalLinksDiv.style.marginBottom="1em";
  123. let a=document.createElement("SPAN");
  124. a.textContent="Decrypted links:";
  125. finalLinksDiv.appendChild(a);
  126. finalLinksDiv.appendChild(document.createElement("BR"));
  127. finalLinksDiv.appendChild(document.createElement("BR"));
  128. if(obj.success.links.length>0){
  129. try{
  130. for (var link of obj.success.links) {
  131. console.log("Decrypted using dcrypt.it: "+link);
  132. let b=document.createElement("SPAN");
  133. b.textContent=link;
  134. b.addEventListener("click",function(){window.open(link)});
  135. b.addEventListener("contextmenu",copyLink)
  136. b.style.color=textColor();
  137. b.style.cursor="pointer";
  138. finalLinksDiv.appendChild(b);
  139. finalLinksDiv.appendChild(document.createElement("BR"));
  140. }
  141. console.log(finalLinksDiv);
  142. document.getElementById("dcryptLoadMsg").replaceWith(finalLinksDiv);
  143. }
  144. catch(e){
  145. console.log(e);
  146. xhrLinkExtract();
  147. }
  148. /*What was this code doing? I can't remember, but it seems it's not needed anymore
  149. const config = { attributes: true, childList: false, subtree: false };
  150. const callback = function(mutationList, observer) {
  151. for (const mutation of mutationList) {
  152. console.log(mutation);
  153. mutation.target.removeAttribute(mutation.attributeName);
  154.  
  155. }
  156. };
  157. const observer = new MutationObserver(callback);
  158. observer.observe(finalLinksDiv, config);
  159. */
  160. }
  161. else{
  162. xhrLinkExtract();
  163. }
  164. },
  165. onerror: function(response) {
  166. xhrLinkExtract();
  167. }
  168. });
  169. }
  170. function xhrLinkExtract(){
  171. var finalLinksDiv=document.createElement("DIV");
  172. finalLinksDiv.style.backgroundColor=bgColor();
  173. finalLinksDiv.style.borderRadius="10px";
  174. finalLinksDiv.style.padding="1em";
  175. finalLinksDiv.style.marginTop="1em";
  176. finalLinksDiv.style.color=textColor();
  177. finalLinksDiv.style.zIndex="10";
  178. finalLinksDiv.style.position="relative";
  179. finalLinksDiv.style.marginBottom="1em";
  180. let a=document.createElement("SPAN");
  181. a.textContent="Decrypted links:";
  182. finalLinksDiv.appendChild(a);
  183. finalLinksDiv.appendChild(document.createElement("BR"));
  184. finalLinksDiv.appendChild(document.createElement("BR"));
  185. var encLinks=document.querySelectorAll("[onclick^=openLink]");//get all the encrypted links
  186. for(let l of encLinks){
  187. let passA=l.getAttribute("onclick");
  188. let passB=passA.split("'");
  189. let passC=l.getAttribute(passB[1]);
  190. let link="http://"+document.location.hostname+"/Link/"+passC+".html"
  191. GM.xmlHttpRequest({
  192. method: "GET",
  193. url: link,
  194. headers: {
  195. "Content-Type": "application/x-www-form-urlencoded"
  196. },
  197. onload: function(response) {
  198. let scripts=response.responseXML.getElementsByTagName("SCRIPT")
  199. for(let s of scripts){
  200. if(s.innerHTML.includes("top.location.href=")){
  201. getFinalLink(s.innerHTML.split("'")[1],finalLinksDiv);
  202. continue
  203. }
  204. }
  205. }
  206. });
  207. }
  208. document.getElementById("dcryptLoadMsg").replaceWith(finalLinksDiv);
  209. }
  210. function getFinalLink(encLink,finalLinksDiv){
  211. let req=GM.xmlHttpRequest({
  212. method: "OPTIONS",
  213. url: encLink,
  214. headers: {
  215. "Content-Type": "application/x-www-form-urlencoded"
  216. },
  217. onreadystatechange: function(response) {
  218. req.abort();
  219. console.log(response)
  220. console.log("Decrypted locally: "+response.finalUrl);
  221. let b=document.createElement("SPAN");
  222. b.textContent=response.finalUrl;
  223. b.addEventListener("click",function(){window.open(response.finalUrl)});
  224. b.addEventListener("contextmenu",copyLink)
  225. b.style.color=textColor();
  226. b.style.cursor="pointer";
  227. finalLinksDiv.appendChild(b);
  228. finalLinksDiv.appendChild(document.createElement("BR"));
  229. }
  230. });
  231. }
  232. function bgColor(){
  233. var color="white";
  234. const colorTag=document.head.querySelector("meta[name=\"theme-color\"]");
  235. if(colorTag){
  236. color="#0b0d15";
  237. }
  238. return color
  239. }
  240. function textColor(){
  241. var color="black";
  242. const colorTag=document.head.querySelector("meta[name=\"theme-color\"]");
  243. if(colorTag){
  244. color="white";
  245. }
  246. return color
  247. }
  248. function copyLink(e){
  249. e.preventDefault();
  250. e.stopPropagation();
  251. navigator.clipboard.writeText(e.target.innerText);
  252. alert("Link copied: "+e.target.innerText);
  253. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址