声明:文章只用于技术交流使用,不得用于非法用途,如果侵犯贵公司权益,请联系站长,立即删除
某文库想必您应该也知道了是哪个了
先献上”祭品“(当然要经过处理了):aHR0cHM6Ly93ZW5rdS5iYWlkdS5jb20vdmlldy8xYWVmODk3NTg1NjJjYWFlZGQzMzgzYzRi
YjRjZjdlYzRiZmViNjBiLmh0bWw=
背景
今天没想搞它的,结果白天他不让我用
这我能忍?
搞他
(之前我记得某原创力还是豆丁的来着,也是服务器返回图片,前端渲染出可复制的文字)
先说一下禁止复制通用解决方案
- 如果大站的话查看一下
js
里面是否引用了jquery
,引用的话,$=function(){}
-
确定是否页面是
js
渲染的,如果文本内容不是,那么可以用被一群营销号用烂了的禁止js
-
开发者工具栏,找监听事件,找有关
copy
的,删除 -
用开发者工具选择文字所在的元素,复制文字
如果都不能解决,那么恭喜你,碰上碴子了,
此站现象
捣乱
特殊之处
你会发现上述几种方法全部失效,服务器返回的是图片,可复制的文本是js
渲染的,禁止js
更掰扯
分析
先抓包分析
发现返回的全是图片,说明可复制的文字是js
渲染的
上述的方法我都试过。全都不行,想必看看下面这个截图就懂了
下面开始逆向分析
打断点,看看能不能找到弹窗代码
然后发现禁止了F12,
这好办
浏览器打开开发者工具就完事
首先等他加载完成打开script
断点
然后就会发现,他断不下来
接下来换一个思路
搜索文本
发现是webpack
打包
搜索一下,定位
发现代码混淆了,文字没有混淆
看不清逻辑的话,可以把这段代码复制到notpad++
折叠一下层次
这段代码下面还有
但是这里没有什么用,只是弹窗提示
上下翻一下代码
copy_ount
复制的数量?估计一会有用
我们找到了这个,啪的一下,很巧啊
然后给他打一个断点
然后断在了这里
追进去看,发现他是从cookie
里读取这个参数
我们可以打印一下cookie
单步执行,到了这里
o.get = function(e) {
return a(e, !1)
}
还是返回这个参数
单步再单步
// 这样的话,是小于10的, e为true
var e = this.getCountFromCookie() < 10;
return t > 100 && !this.isVip && this.docBizType !== V.b.SECRET && (e = !1),
this.isVip || e
this.docBizType !== V.b.SECRET
这一句字面判断,他就为true
,猜测他是判断文章类型是不是密文,
这一句用了几个连着的&&
,
(e = !1)
这一句还判断了e是不是为false
,
(js
中!1=false
)
联合判断当前用户,是不是可以复制
其中t参数为190,我没有深究
解决方法
代码拉到本地
添加本地映射,auto responder
canCopy: function(t) {
// var e = this.getCountFromCookie() < 10;
// return t > 100 && !this.isVip && this.docBizType !== V.b.SECRET && (e = !1),
// this.isVip || e
return true
},
这样其实有风险,他可以检测canCopy
的toString
是否和之前一致,不过他没有检测
刷新页面,清空缓存,
确保代码已经修改,这时再复制,就成功了