痛点-调研-明确需求-实现-测试-发布 不需要手一步到位使用AGI生成去广告脚本,复制粘贴发布到Greasy Fork

news2024/11/22 23:10:51

总算又想起密码了, 自从用了语雀后, 其他平台基本都不再使用了

csdn 真的**, c h a t g p t 是禁词(已经改为了AGI, 通用型人工智能), 你倒是说清楚啊,直接来一句违反社区规定, 莫名其妙, 得靠猜…服了

今天来补上一篇利用AGI生成的js去广告脚本

前置知识(不看也问题不大)

转发与重定向
转发页面的URL不会改变,而重定向地址会改变
301与302

页面广告生成原理(也是使用AGI)

在这里插入图片描述

网页上的广告实现主要依赖于两个技术:Cookie和JavaScript。

Cookie是一种存储在用户计算机上的小型文本文件,它可以记录用户的浏览历史、兴趣偏好等信息。当用户访问网站时,网站会将Cookie存储在用户计算机上。广告平台可以通过读取Cookie中的信息,了解用户的兴趣偏好,从而向用户投放相关的广告。

JavaScript是一种脚本语言,它可以在网页中实现动态效果和交互功能。广告平台通常会将JavaScript代码嵌入到网页中,当用户访问网页时,JavaScript代码会向广告平台发送请求,请求广告内容。广告平台会根据请求的参数,选择合适的广告内容返回给JavaScript代码,然后JavaScript代码将广告内容插入到网页中。

综上所述,网页上的广告实现主要依赖于Cookie和JavaScript技术,通过收集用户信息和动态插入广告内容来实现。

痛点-调研-明确需求-技术选型-编码实现

  1. 发现痛点: 经常观看的动漫网站(正经人看的正经网站, 我就不说了, 主打的就是一个吊胃口)有一个很顽固的广告(移动端)
    调研: 网上没有相关移动端网站去广告的脚本, 在网上找找相关解决文案
  2. 需求: 写一个脚本, 能力是去广告
  3. 技术选型: 使用JavaScript
  4. 实现: 很多移动端浏览器不支持插件脚本,使用的是火狐浏览器可以使用油猴插件(油猴插件是可以运行脚本, via浏览器可以直接运行脚本) 使用HttpCanary(小黄鸟)抓 包发现广告请求的状态码是301(永久重定向), 然后让gpt帮我写一个脚本
  5. 测试:分别使用两个浏览器进行测试, 如未达预期跳转到第4步, 成功则发布
  6. 发布:发布到Greasy Fork脚本网站
    在这里插入图片描述
    进行微调, 处理边界条件, 尝试进行优化: 黑白名单, 防误触, 长按加入黑名单,禁止重定向
    在这里插入图片描述
    最终生成最强1.9版本
// ==UserScript==
// @name         Advertising Plus
// @namespace    http://your-namespace-here
// @version      1.9
// @description  Disable 301 redirects on web pages and block potential ads.  通过HttpCanary抓 包发现某动漫网站广告状态码为301(永久重定向),

// @match        *://www.脚本生效的网站.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    // 定义允许访问的小说网站域名白名单
    var allowedDomains = [
        'https://www.脚本生效的网站.com'
    ];

    // 从 LocalStorage 中加载已保存的黑名单列表
    var blockedDomains = localStorage.getItem('blockedDomains');
    if (blockedDomains) {
        blockedDomains = JSON.parse(blockedDomains);
    } else {
        blockedDomains = []; // 默认为空列表
    }

    // 检查当前域名是否在允许访问的域名白名单中
    var currentDomain = window.location.hostname;
    if (isDomainAllowed(currentDomain)) {
        // 拦截所有请求
        window.addEventListener('beforeunload', function() {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', '/', false);
            xhr.send(null);

            var url = xhr.responseURL;
            var domain = getDomainFromUrl(url);

            // 检查请求的域名是否在白名单中
            if (!isDomainAllowed(domain)) {
                // 在这里可以选择显示一个提示或执行其他自定义操作
                // 阻止301重定向
                window.stop();
            }
        });

        // 遍历页面上的所有链接和图片元素
        var links = document.getElementsByTagName('a');
        var images = document.getElementsByTagName('img');

        // 屏蔽链接中包含被列入黑名单的域名的广告
        for (var i = 0; i < links.length; i++) {
            var link = links[i];
            if (isPotentialAd(link.href) && !isDomainAllowed(getDomainFromUrl(link.href))) {
                link.addEventListener('click', function(event) {
                    if (event.detail === 1) {
                        event.preventDefault();
                        event.stopPropagation();
                        var domain = getDomainFromUrl(this.href);
                                                if (confirm('是否将 ' + domain + ' 标记为广告并加入黑名单?')) {
                            addToBlockedDomains(domain);
                            // 在这里可以选择显示一个成功提示或执行其他自定义操作
                        }
                    }
                });
            }
        }

        // 屏蔽图片中包含被列入黑名单的域名的广告
        for (var j = 0; j < images.length; j++) {
            var image = images[j];
            if (isPotentialAd(image.src) && !isDomainAllowed(getDomainFromUrl(image.src))) {
                var mouseDownTime = 0;
                var mouseUpTime = 0;
                image.addEventListener('mousedown', function(event) {
                    mouseDownTime = Date.now();
                });
                image.addEventListener('mouseup', function(event) {
                    mouseUpTime = Date.now();
                    var clickDuration = mouseUpTime - mouseDownTime;

                    if (clickDuration < 500) { // 假设点击持续时间少于500毫秒为误触
                        event.preventDefault();
                        event.stopPropagation();
                        var domain = getDomainFromUrl(this.src);
                        if (confirm('是否将 ' + domain + ' 标记为广告并加入黑名单?')) {
                            addToBlockedDomains(domain);
                            // 在这里可以选择显示一个成功提示或执行其他自定义操作
                        }
                    }
                });
            }
        }
    }
    
    // 将域名加入到黑名单
    function addToBlockedDomains(domain) {
        if (!blockedDomains.includes(domain)) {
            blockedDomains.push(domain);
            // 保存更新后的黑名单到 LocalStorage
            localStorage.setItem('blockedDomains', JSON.stringify(blockedDomains));
        }
    }

    // 检查域名是否在白名单中
    function isDomainAllowed(domain) {
        for (var i = 0; i < allowedDomains.length; i++) {
            if (matchWildcard(allowedDomains[i], domain)) {
                return true;
            }
        }
        return false;
    }

    // 检查链接的域名是否为潜在广告
    function isPotentialAd(url) {
        var domain = getDomainFromUrl(url);
        return domain !== '' && !isDomainAllowed(domain);
    }

    // 提取链接的域名
    function getDomainFromUrl(url) {
        var anchor = document.createElement('a');
        anchor.href = url;
        return anchor.hostname;
    }

    // 通配符匹配函数
    function matchWildcard(pattern, string) {
        var regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
        return regex.test(string);
    }

})();

总结如下: 在两个浏览器都试验了下, 最终结果皆大欢喜…吗? 其实没有,问题不大,继续优化

发布到Greasy Fork

在这里插入图片描述
在这里插入图片描述
拉到最下方[发布脚本]即可
地址: https://greasyfork.org/zh-CN/scripts/468854-advertising-plus

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis junit 日志框架logback

JUnit是专门做单元测试的组件 <!-- junit依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>…

牛客网最全的 Java 面试八股文大合集汇总

就目前大环境来看&#xff0c;跳槽成功的难度比往年高很多。一个明显的感受&#xff1a;今年的面试&#xff0c;无论一面还是二面&#xff0c;都很考验 Java 程序员的技术功底。这不马上又到了面试跳槽的黄金段&#xff0c;成功升职加薪&#xff0c;不成功饱受打击。当然也要注…

关于laravel使用Elastic Search的一些记录

文章目录 1. 准备工作2. 本地安装elastic search3. laravel安装es依赖4. laravel中使用es参考链接 1. 准备工作 因为我本地php版本是7.3.4&#xff0c;不支持太高的es。 所以使用如下环境: laravel6 php7.3.4 elastic search 7.17.2 2. 本地安装elastic search 1. 下载安装包…

备战金九银十,两份 JAVA 面试题 2023 最新整合版,祝你脱颖而出

前言 马上又准备到了一年一度的金九银十环节&#xff0c;作为一年中的跳槽求职高峰期&#xff0c;相信有很多朋友都已经开始着手准备面试了&#xff0c;但是网上的面试题杂七杂八的&#xff0c;所以今天分享 2 份整合好的合集版&#xff0c;从基础到深入比较全面。即适合初入社…

windows10系统-14-Hexo博客框架和DevSidecar加速访问GitHub

HexoGitee零代码基础从0到1部署博客全流程&#xff08;一&#xff09; HexoGithub博客搭建教程 亲测解决npm ERR! Unexpected end of JSON input while parsing near…的方法 Hexo-修改Hexo主题 hexo免费主题 现在市面上的博客很多&#xff0c;如CSDN&#xff0c;博客园&#x…

【干货】Android系统定制基础篇:第二部分

1、Android Launcher3支持键盘切换焦点 Android Launcher3 默认并不支持键盘操作&#xff0c;无法切换焦点&#xff0c;在一些需要支持键盘或遥控操作的设备中无法使用&#xff0c;因些对 Launcher3 做简单修改&#xff0c;使其支持键盘切换焦点。 diff --git a/packages/app…

C语言学习笔记:指针

✨博文作者&#xff1a;烟雨孤舟 &#x1f496; 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介&#xff1a;作为大数据爱好者&#xff0c;以下是个人总结的学习笔记&#xff0c;如有错误&#xff0c;请多多指教&#xff01; 目录 简介 …

Redis客户端 - SpringDataRedis

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis客户端 - SpringDataRedis | CoderMast编程桅杆https://www.codermast.com/database/redis/spring-data-redis.html 介绍 SpringData 是 Spring 中操作数据的模块&#xff0c;包含对各种数据库的集成&#xff0c;其中…

2023 年最新阿里巴巴 Java 面试权威指南(泰山版)

不知道现在同学们有没有想法备战金九银十&#xff0c;好多未雨绸缪的同学已经开始整理学习资源了&#xff0c;有些同学想冲击一下大厂&#xff0c;有些同学希望自己能够涨薪&#xff01;不管是出于哪种想法&#xff0c;看一下现在的时间&#xff0c;也确实该准备了&#xff0c;…

English Learning - L3 作业打卡 Lesson6 Day41 2023.6.14 周三

English Learning - L3 作业打卡 Lesson6 Day41 2023.6.14 周三 引言&#x1f349;句1: In the early morning, the food that had been laid out for the dead is thrown into a river or into the sea as it is considered unlucky for anyone living to eat it.成分划分弱读…

C语言学习笔记:数组

✨博文作者&#xff1a;烟雨孤舟 &#x1f496; 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介&#xff1a;作为大数据爱好者&#xff0c;以下是个人总结的学习笔记&#xff0c;如有错误&#xff0c;请多多指教&#xff01; 目录​​​​…

基于javaweb jsp+SSM 酒店客房管理系统的设计与实现

一.项目介绍 本系统需要进行登录&#xff0c;点击登录即可跳转到登陆页面&#xff0c; 管理员密码是在数据库中设置好的可以直接登录&#xff0c; 其它用户需要管理员登录以后注册用户才可以根据账号密码登录。 当登录进入到系统当中时 可以对客房&#xff0c;商品&#xff…

使用python制作一个批量查询搜索排名的SEO免费工具

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 搭建背景 最近工作中需要用…

《人月神话》译文修订明细(10)-读者可以对照修改

《人月神话》译文修订明细&#xff08;1&#xff09;-读者可以对照修改 《人月神话》译文修订明细&#xff08;2&#xff09;-读者可以对照修改 《人月神话》译文修订明细&#xff08;3&#xff09;-读者可以对照修改 《人月神话》译文修订明细&#xff08;4&#xff09;-读…

团队管理之性能实施团队日志14 -- 项目终结

历时2个月16天&#xff0c;项目结束了。 今天给客户做最终的汇报。 本来汇报准备了92页PPT&#xff0c;把几个系统单独的都一个个说了个遍。但是感觉这种方式老板不一定能接受。于是换了一个方式&#xff0c;只说overview的结果&#xff0c;但系统的就不一一解释了。 老板更想…

【C/C++套接字编程】TCP通信实验

一、实验目的&#xff1a; 通过本实验使学员了解和掌握编写基于TCP协议的网络应用程序。任务是开发一个基于TCP Socket API的网络聊天程序。 二、实验内容简要描述 用所学的TCP Socket API知识来开发基于TCP协议的网络。通过编程实现服务端和客户端的信息通信。TCP协议建立交…

【MySQL】之索引与索引优化

目录 一、索引介绍二、MySQL索引结构二、索引优化 一、索引介绍 1、索引简介 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。 可以得到索引的本质&#xff1a;索引是数据结构。索引的目的在于提高查询效率&…

高考状元、通用语言和轰趴-UMLChina建模知识竞赛第4赛季第4轮

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题&#xff0c;即可获得本轮优胜。第4题为附加题&#xff0c;对错不影响获奖&#xff0c…

Springboot使用pdfbox提取PDF图片

Springboot使用pdfbox提取PDF图片 PDFBox的介绍Springboot集成PDFBox一、提取pdf首页为图像1. 实现需求2. 项目代码3. 执行结果 二、将pdf内容全部转换为图像1. 实现需求2. 项目代码3. 执行结果4.注意事项1.优化项目代码2.提升Java heap size PDFBox的介绍 PDFBox是一个用于创…

FDM3D打印系列——1、愉快的给自己打印一个手办

大家好&#xff0c;我是阿赵。 我日常的个人爱好&#xff0c;除了写博客&#xff0c;还有弹吉他打鼓电子琴&#xff0c;还有3D打印。 3D打印只是我的一个业余&#xff0c;不过由于经常把做好的作品发朋友圈&#xff0c;也带动了身边一些朋友买了和我一样型号的打印机&#xff0…