Passei Direto Bypass

Changes a few things to remove the paywall card and unblur the answers.

安装此脚本?
作者推荐脚本

您可能也喜欢Brainly Bypass Paywall

安装此脚本
  1. // ==UserScript==
  2. // @name Passei Direto Bypass
  3. // @name:pt-BR Passei Direto Bypass
  4. // @namespace https://gitlab.com/Dwyriel
  5. // @version 1.4.1
  6. // @description Changes a few things to remove the paywall card and unblur the answers.
  7. // @description:pt-BR Faz algumas modificações no site para remover a limitação e tirar o borrão do texto.
  8. // @author Dwyriel
  9. // @license MIT
  10. // @match *://*passeidireto.com/*
  11. // @grant none
  12. // @run-at document-idle
  13. // @homepageURL https://gitlab.com/Dwyriel/Greasyfork-Scripts
  14. // ==/UserScript==
  15.  
  16. (function () {
  17. 'use strict';
  18. function importMathJaxLib() {
  19. var MathJaxScript = document.createElement("script");
  20. MathJaxScript.setAttribute("type", "text/javascript");
  21. MathJaxScript.setAttribute("src", "https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS_CHTML");
  22. document.getElementsByTagName("head")[0].appendChild(MathJaxScript);
  23. }
  24. function perguntaPageFix() {
  25. for (let freeTrialOverlay of document.querySelectorAll("[class*='AnswerCard_card-paywall-free-trial']"))
  26. freeTrialOverlay.remove();
  27. let answers = document.querySelectorAll('[data-testid="answer-card"]');
  28. for (let answer of answers) {
  29. for (let contentContainer of answer.querySelectorAll('[class*="AnswerCard_answer-content-container"]')) {
  30. let clonedNode = contentContainer.children[0].cloneNode(true);
  31. for (let blurredElement of clonedNode.querySelectorAll("[style*='filter: blur']"))
  32. blurredElement.style = "filter: blur(0px);";
  33. contentContainer.children[0].after(clonedNode);
  34. contentContainer.children[0].remove();
  35. }
  36. }
  37. if (document.querySelector(".math-tex") != null)
  38. importMathJaxLib();
  39. }
  40. let handleSmallPage1 = null;
  41. let handleSmallPage2 = null;
  42. let handleBigPage1 = null;
  43. let smallPageRemoveBlurFunc = null;
  44. function arquivoPageFix() {
  45. function removeBlur(element) {
  46. let nodes = element.querySelectorAll("[style*='filter: blur(10px)']");
  47. for (let node of nodes) {
  48. let clonedNode = node.cloneNode(true);
  49. clonedNode.classList.remove("paywall");
  50. clonedNode.style = "filter: blur(0px)";
  51. node.after(clonedNode);
  52. node.remove();
  53. }
  54. }
  55. function arquivoPageFixSmallWidth() {
  56. smallPageRemoveBlurFunc = () => removeBlur(document);
  57. removeBlur(document);
  58. handleSmallPage1 = setTimeout(smallPageRemoveBlurFunc, 100);
  59. handleSmallPage2 = setTimeout(smallPageRemoveBlurFunc, 1000);
  60. addEventListener("scroll", smallPageRemoveBlurFunc);
  61. }
  62. function arquivoPageFixBigWidth() {
  63. for (let fileElement of document.querySelectorAll("div[class*='paywall FileContainerHtmlPreviewPage']")) {
  64. let clonedNode = fileElement.cloneNode(true);
  65. clonedNode.classList.remove("paywall");
  66. fileElement.after(clonedNode);
  67. fileElement.remove();
  68. removeBlur(clonedNode);
  69. }
  70. handleBigPage1 = setTimeout(arquivoPageFixBigWidth, 200);
  71. }
  72. if (handleSmallPage1 != null) {
  73. clearTimeout(handleSmallPage1)
  74. handleSmallPage1 = null;
  75. }
  76. if (handleSmallPage2 != null) {
  77. clearTimeout(handleSmallPage2)
  78. handleSmallPage2 = null;
  79. }
  80. if (handleBigPage1 != null) {
  81. clearTimeout(handleBigPage1)
  82. handleBigPage1 = null;
  83. }
  84. if (smallPageRemoveBlurFunc != null) {
  85. removeEventListener("scroll", smallPageRemoveBlurFunc);
  86. smallPageRemoveBlurFunc = null;
  87. }
  88. document.querySelectorAll("[class*='BannerSelector_banner-container']").forEach(ele => ele.remove());
  89. if (window.innerWidth <= 1280)
  90. arquivoPageFixSmallWidth();
  91. else
  92. arquivoPageFixBigWidth();
  93. }
  94. setTimeout(() => {
  95. if (window.location.pathname.includes("pergunta"))
  96. perguntaPageFix();
  97. if (window.location.pathname.includes("arquivo")) {
  98. arquivoPageFix();
  99. addEventListener('resize', arquivoPageFix);
  100. }
  101. }, 500);
  102. })();

QingJ © 2025

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