您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Bypass "open in app" prompts, unblur NSFW content & thumbnails, remove spoiler overlays.
当前为
- // ==UserScript==
- // @name Reddit Bypass Enhancer
- // @version 2.5
- // @description Bypass "open in app" prompts, unblur NSFW content & thumbnails, remove spoiler overlays.
- // @author UniverseDev
- // @license GPL-3.0-or-later
- // @match https://www.reddit.com/*
- // @match https://sh.reddit.com/*
- // @grant none
- // @run-at document-start
- // @noframes
- // @namespace https://greasyfork.org/en/users/1030895-universedev
- // ==/UserScript==
- 'use strict';
- (function () {
- const SELECTORS = {
- nsfwModal: 'shreddit-async-loader[bundlename*="nsfw_blocking_modal"]',
- promptContainer: 'xpromo-nsfw-blocking-container',
- prompt: '.prompt',
- blurredContainer: 'shreddit-blurred-container',
- thumbnailBlur: '.thumbnail-blur',
- communityHighlightCard: 'community-highlight-card[blurred]',
- imageFilter: 'img.mb-0.h-full.w-full.object-cover[style*="filter"]',
- video: 'shreddit-player, video.blur',
- blurredSpan: 'span.inner.blurred',
- scrim: '.absolute.top-0.left-0.w-full.h-full.bg-scrim',
- spoilerOverlay: '.absolute.inset-0.overflow-visible.flex.items-center.justify-center'
- };
- function queryElementsDeep(selector, root = document) {
- const elements = new Set();
- try {
- root.querySelectorAll(selector).forEach(el => elements.add(el));
- root.querySelectorAll('*').forEach(el => {
- if (el.shadowRoot) {
- el.shadowRoot.querySelectorAll(selector).forEach(shadowEl => elements.add(shadowEl));
- }
- });
- } catch (error) {
- console.error("Error in queryElementsDeep:", error);
- }
- return [...elements];
- }
- function removeNSFWBlock() {
- try {
- document.querySelector(SELECTORS.nsfwModal)?.remove();
- document.getElementById("nsfw-qr-dialog")?.remove();
- document.querySelector("body > div:nth-child(7)")?.remove();
- const promptContainer = document.querySelector(SELECTORS.promptContainer);
- promptContainer?.shadowRoot?.querySelector(SELECTORS.prompt)?.remove();
- queryElementsDeep(SELECTORS.blurredContainer).forEach(container => {
- const firstChild = container.firstElementChild;
- if (firstChild) {
- firstChild.addEventListener('click', e => {
- e.preventDefault();
- if (e.target.closest('media-telemetry-observer')) {
- e.stopPropagation();
- }
- e.target.click();
- }, { once: true });
- firstChild.click();
- }
- });
- queryElementsDeep(SELECTORS.thumbnailBlur).forEach(el => el.classList.remove('thumbnail-blur'));
- queryElementsDeep(SELECTORS.communityHighlightCard).forEach(card => card.removeAttribute('blurred'));
- queryElementsDeep(SELECTORS.imageFilter).forEach(img => img.style.removeProperty('filter'));
- queryElementsDeep(SELECTORS.video).forEach(video => video.classList.remove('blur'));
- queryElementsDeep(SELECTORS.blurredSpan).forEach(span => span.style.removeProperty('filter'));
- queryElementsDeep(SELECTORS.scrim).forEach(scrim => scrim.remove());
- queryElementsDeep(SELECTORS.spoilerOverlay).forEach(spoiler => spoiler.remove());
- } catch (error) {
- console.error("Error in removeNSFWBlock:", error);
- }
- }
- const observer = new MutationObserver(mutations => {
- let shouldRun = false;
- for (const mutation of mutations) {
- if (mutation.addedNodes.length) {
- shouldRun = true;
- break;
- }
- }
- if (shouldRun) removeNSFWBlock();
- });
- observer.observe(document.documentElement, { childList: true, subtree: true });
- const shredditCheckInterval = setInterval(() => {
- if (!document.querySelector('shreddit-app')) {
- observer.disconnect();
- clearInterval(shredditCheckInterval);
- }
- }, 5000);
- })();