现象
安装了AdBlock Plus插件后,访问优快云后就成了这样...
之前还是点击“阅读更多”后才开始跳转,现在直接强制跳转了,我擦...
尽管用了ABP对你优快云不太厚道,但是你也没必要这么狠吧...
我这个强迫症的受不了了!
策略
1. 抓包查找源码,看弹框何时执行
! function () { var c, e;
function t() { console.log("AdBlock is not enabled") }
function n() { var c, e, t; console.log("Adblock is enabled"), c = "adblock", e = { step: "install" }, t = window.location.protocol + "//statistic.youkuaiyun.com/", $.get(t + c, e); var n;
function o(c, e) { var t = document.createElement("div"); t.innerHTML = c; var n = document.body.firstChild; document.body.insertBefore(t, n), e && "function" == typeof e && e() }
(function (c) { for (var e, t, n = document.cookie.split("; "), o = 0; o < n.length; o++) if (n[o] && (e = n[o].split("="))[0] === c) { t = e[1]; break } return t })("UserName") || o('<div class="check-adblock-bg"> <div class="tip-box"> <a href="https://passport.youkuaiyun.com/account/login" class="close">+</a> 如要继续阅读全文,请将优快云网站加入ADP<br/>白名单或登录网站。(<span id="check-adblock-time">3</span>秒后自动跳转) <a href="https://passport.youkuaiyun.com/account/login" class="login">登录</a> </div> </div>', setInterval(function () { var c = $("#check-adblock-time").text(); c = parseInt(c), 0 < --c ? $("#check-adblock-time").text(c) : location.href = "https://passport.youkuaiyun.com/account/login" }, 1e3)), o('<div class="adblock"><img src="https://g.csdnimg.cn/check-adblock/1.0.0/img/monkey@2x.png"/><span>亲爱的用户,您使用了广告屏蔽软件,广告是优快云向您免费提供服务与产品的重要支持,希望您将youkuaiyun.com加入AdBlock Plus<a class="check_a" href="https://bbs.youkuaiyun.com/topics/392458005" target="_blank">白名单</a>,感谢支持!</span><em class="check_close"><svg t="1539053811268" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7199" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M512 438.378667L806.506667 143.893333a52.032 52.032 0 1 1 73.6 73.621334L585.621333 512l294.485334 294.485333a52.074667 52.074667 0 0 1-73.6 73.642667L512 585.621333 217.514667 880.128a52.053333 52.053333 0 1 1-73.621334-73.642667L438.378667 512 143.893333 217.514667a52.053333 52.053333 0 1 1 73.621334-73.621334L512 438.378667z" fill="#8a8a8a" p-id="7200"></path></svg></div>'), $(".check_close").length && $(".check_close").on("click", function (c) { c.stopPropagation(), $(this).parents(".adblock").remove(), "function" == typeof window.csdn.insertcallbackBlock && window.csdn.insertcallbackBlock() }), (n = new Date).setDate(n.getDate() + 7), document.cookie = "c_adb=1; expires=" + n.toGMTString() + "; domain=youkuaiyun.com; path=/", "function" == typeof window.csdn.insertcallbackBlock && window.csdn.insertcallbackBlock() } if (void 0 === window.csdn && (window.csdn = {}), c = "https://g.csdnimg.cn/check-adblock/1.1.1/css/check-adblock.css", (e = document.createElement("link")).rel = "stylesheet", e.type = "text/css", e.href = c, document.getElementsByTagName("head")[0].appendChild(e), "undefined" != typeof fuckAdBlock || "undefined" != typeof FuckAdBlock) n(); else { var o = document.createElement("script"); o.onload = function () { fuckAdBlock.onDetected(n), fuckAdBlock.onNotDetected(t) }, o.onerror = function () { n() }, o.type = "text/javascript", o.src = "https://g.csdnimg.cn/lib/fuckadblock/3.2.1/fuckadblock.min.js", document.head.appendChild(o) }}();
复制代码
检测步骤
- fuckadblock检测用户是否启用ABP,并注册两个回调(检测到启用、检测到未启用)
- 若检测到启用
- 取本地Cookie,是否存在UserName,确认用户是否登录
- 用户未登录,执行函数o
- 弹窗,并在x秒后强制跳转至登录页
2. 如何解决?
之前想通过侵入fuckadblock来解决,后来想想没啥必要,这段代码反正没啥用... 那我们就让他强制执行错误呗!怎么做最简单?里面用到了window.setInterval那我们就这样吧...
window.setInterval = null;复制代码
嘻嘻,反正看个页面这样做也不会影响其他的,对吧~顺便那个“阅读更多”也挺碍事的,那就再顺手一下
document.getElementById('article_content').style.height = '';
复制代码
嘿嘿!这样做就可以了对吧~
咦,那这代码啥时候执行呢?怎么执行呢?我们也不能手动开tab,手动把代码放到console执行吧!
实际上,通过Chrome插件就可以搞定!
但是,如果写个原生的Chrome插件,费时也费力~那我们可以通过第三方的脚本管理器(Chrome插件: Tampermonkey)去帮我们做这件事,上手非常简单。Tampermonkey脚本具体怎么写请参考官方文档。
// ==UserScript==
// @name 优快云
// @namespace
// @version 0.1
// @description
// @author nannongrousong
// @match https://blog.youkuaiyun.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
window.setInterval = null;
window.onload = () => {
document.getElementById('article_content').style.height = '';
}
})();
复制代码
这样就完成了一个简单的脚本,保存一下以后每次打开csdn blog页面代码就会自动执行~终于可以不用强制跳转也可以看到文章全部内容啦~