您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
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.3
- // @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 and focus fake iframe ONCE
- (function focusIframeOnce() {
- const i = document.createElement('iframe');
- i.style = 'height:0;width:0;border:0;';
- i.id = 'a';
- document.body.appendChild(i);
- i.focus();
- setTimeout(() => window.focus(), 500); // Refocus main window shortly after
- })();
- // 3. Ensure ad cookie is set
- function SetAdCookie() {
- const expireTime = new Date(new Date().getTime() + 2 * 60 * 1000); // 2 mins
- document.cookie = `adexp=1; path=/; expires=${expireTime.toUTCString()}`;
- }
- SetAdCookie();
- // 4. Click logic
- let verifyClicked = false;
- let nextClicked = false;
- function clickIfVisible(el) {
- if (el && el.offsetParent !== null) {
- el.click();
- return true;
- }
- return false;
- }
- function clickWithRetry(selector, flagName, callback) {
- const el = document.querySelector(selector);
- if (!el) return;
- if (!window[flagName]) {
- const clicked = clickIfVisible(el);
- if (clicked) {
- window[flagName] = true;
- if (callback) callback();
- } else {
- setTimeout(() => clickWithRetry(selector, flagName, callback), 1000);
- }
- }
- }
- function clickNextAndCheckHash() {
- clickWithRetry('.NextBtn', 'nextClicked', () => {
- setTimeout(() => {
- if (window.location.href.endsWith('#')) {
- // Click again if URL ends with #
- window.nextClicked = false;
- clickWithRetry('.NextBtn', 'nextClicked');
- }
- }, 1500);
- });
- }
- if (smileyExists) {
- 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(clickNextAndCheckHash, 1000);
- }
- }, INTERVAL_1S);
- } else {
- setTimeout(() => {
- clickWithRetry('#VerifyBtn', 'verifyClicked');
- setTimeout(clickNextAndCheckHash, 1000);
- }, 16000);
- }
- }
- })();