总算又想起密码了, 自从用了语雀后, 其他平台基本都不再使用了
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技术,通过收集用户信息和动态插入广告内容来实现。
痛点-调研-明确需求-技术选型-编码实现
- 发现痛点: 经常观看的动漫网站(正经人看的正经网站, 我就不说了, 主打的就是一个吊胃口)有一个很顽固的广告(移动端)
调研: 网上没有相关移动端网站去广告的脚本, 在网上找找相关解决文案 - 需求: 写一个脚本, 能力是去广告
- 技术选型: 使用JavaScript
- 实现: 很多移动端浏览器不支持插件脚本,使用的是火狐浏览器可以使用油猴插件(油猴插件是可以运行脚本, via浏览器可以直接运行脚本) 使用HttpCanary(小黄鸟)抓 包发现广告请求的状态码是301(永久重定向), 然后让gpt帮我写一个脚本
- 测试:分别使用两个浏览器进行测试, 如未达预期跳转到第4步, 成功则发布
- 发布:发布到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);// 保存更新后的黑名单到 LocalStoragelocalStorage.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