您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Remove the adclick nag and auto-click the buttons.
当前为
// ==UserScript== // @name gplinks auto-skip // @author BlazeFTL // @namespace http://tampermonkey.net/ // @description Remove the adclick nag and auto-click the buttons. // @version 2.2 // @match *://*/* // @supportURL https://github.com/uBlockOrigin/uAssets/discussions/27472#discussioncomment-12725221 // @icon https://www.google.com/s2/favicons?domain=gplinks.com // @grant none // ==/UserScript== (function () { 'use strict'; const button1 = document.querySelector('#VerifyBtn'); const button2 = document.querySelector('#NextBtn'); if (button1 && button2){ const INTERVAL_2S = 2000; const INTERVAL_1S = 1000; const smileyExists = !!document.querySelector('.SmileyBanner'); // 1. Set cookie_pub_plan_id to 12 window.cookie_pub_plan_id = 12; // 2. Create fake iframe const i = document.createElement('iframe'); i.style = 'height:0;width:0;border:0;'; i.id = 'a'; document.body.appendChild(i); i.focus(); // 3. Ensure ad cookie is set function SetAdCookie() { const expireTime = new Date(new Date().getTime() + 2 * 60 * 1000); // 2 mins Cookies.set("adexp", 1, { expires: expireTime }); } SetAdCookie(); // 4. Click buttons based on timing and SmileyBanner presence let verifyClicked = false; let nextClicked = false; function waitForElement(selector, callback) { const el = document.querySelector(selector); if (el) { callback(el); } else { setTimeout(() => waitForElement(selector, callback), 500); } } function clickIfVisible(el) { if (el && el.offsetParent !== null) { el.click(); return true; } return false; } function clickWithRetry(selector, flagName) { const el = document.querySelector(selector); if (!el) return; if (!window[flagName]) { const clicked = clickIfVisible(el); if (clicked) { window[flagName] = true; } else { setTimeout(() => clickWithRetry(selector, flagName), 1000); } } } if (smileyExists) { // Show countdown and delay verify const verifyBtn = document.querySelector('#VerifyBtn'); const placeholder = document.createElement('div'); placeholder.style.color = 'black'; placeholder.style.fontWeight = 'bold'; placeholder.id = 'countdown-replace'; verifyBtn.parentNode.insertBefore(placeholder, verifyBtn); verifyBtn.style.display = 'none'; let countdown = 15; placeholder.innerText = `Please wait ${countdown} seconds`; const timer = setInterval(() => { countdown--; placeholder.innerText = `Please wait ${countdown} seconds`; if (countdown <= 0) { clearInterval(timer); verifyBtn.style.display = 'inline-block'; placeholder.remove(); clickWithRetry('#VerifyBtn', 'verifyClicked'); setTimeout(() => clickWithRetry('.NextBtn', 'nextClicked'), 1000); } }, INTERVAL_1S); } else { // Wait 16 seconds, then click #VerifyBtn, then 1s later .NextBtn setTimeout(() => { clickWithRetry('#VerifyBtn', 'verifyClicked'); setTimeout(() => clickWithRetry('.NextBtn', 'nextClicked'), 1000); }, 16000); } } })();