防复制就不多说了,整合了一下 JS 和 CSS 防复制的方法,应该还是比较全的
检测开发者工具的话,整合了各种较新的方法,经测试是支持 Chrome (包括单独窗口打开的情况)和 Firefox (在单独窗口打开时,只有打开控制台时才能检测到),其他浏览器还没有测试,不过估计 chromium 内核的浏览器也都是支持的
最后放个链接求 star: https://github.com/Netrvin/PageGuard.js
1
golmic 2018 年 5 月 4 日 via Android 有啥意义。。
|
2
x86 2018 年 5 月 4 日
view-source: url
|
3
tyrealgray 2018 年 5 月 4 日
打开调试在 Sources 里依然能看到 example.html
|
4
oonnnoo 2018 年 5 月 4 日 via Android
wget,curl 下载下来
|
5
Greatshu 2018 年 5 月 4 日
wireshark
|
6
ccqy66 2018 年 5 月 4 日
本质上浏览器上能看到的内容是 http 响应的渲染。只要拿到 http 响应。什么技术都没有用。
|
7
xavier007 2018 年 5 月 4 日
防小白,禁止复制就够了,对于程序员,还是知道如何开启开发者工具,另外禁止了 JS,也就不起作用了
|
8
131 OP @xavier007 毕竟看网上的“防复制教程”里面有用开发者工具的,而且国内很多浏览器内核都是 chromium 的,所以一定程度上也能防范
|
9
131 OP @oonnnoo 建议是让网页在 javascript 被禁用时无法正常显示;动态获取 /生成网页内容,一定程度上给分析源码添堵
|
10
131 OP @golmic 在一些应用场景中还是有用的,而且一些特殊场景更可以限制你必须用 chrome,还可以一发现你用开发者工具就封号
|
11
autoxbc 2018 年 5 月 4 日 via iPhone 你加班写个防复制,他加班给破掉了,码农互相伤害,何苦呢
|
12
billlee 2018 年 5 月 4 日
然后我点了一下「剪藏到印象笔记」
|
14
gzlock 2018 年 5 月 4 日 via Android
整页截图再 ocr 了解一下?
|
15
131 OP @autoxbc 其实主要就是整合了一下这些方法,省得找零碎的东西了;另外,这些东西不都是为了增加破解成本吗,成本上去了,自然愿意花时间的人就少了
|
18
schema 2018 年 5 月 4 日 via Android
各取所需嘛,支持下开源项目
|
19
Ellison 2018 年 5 月 4 日
还不如把内容做好点
|
20
geelaw 2018 年 5 月 4 日 感觉不是很有意义 - - 而且在 Edge 上会无条件执行 handler。
使用 toString 方法检测是一个很糟糕的事情—— toString is supposed to be side-effect free。 |
22
afpro 2018 年 5 月 4 日
防复制还是有意义的 防开发者工具就很鸡肋了 这类玩意一般都是做成油猴之类的给 PM 和运营做 量大就 headless chrome 不会有程序猿自己开开发者工具复制你的内容的
|
23
opengps 2018 年 5 月 4 日 via Android
先打开 f12,然后输入网址
|
26
ledzep2 2018 年 5 月 4 日
既然是开发者, 这点小障碍肯定是越得过的拉
|
28
letitbesqzr 2018 年 5 月 4 日 最近我们这面也有个需求,要收集一下具体哪些用户在我们的网页打开过控制台。
我们的做法是利用 sourceMapping,在网站上引入一个通过程序生成的 js,最后加上 souceMapping 的路径,路径和当前登录的用户有关联,监听这个地址,就能够知道是谁打开了。我测试过,只要一打开 chrome 控制台就会去加载 sourceMapping。虽然这东西在控制台里面可以禁止,但是默认都是开启的。没有必要去防御,毕竟都是丢给用户的游览器上执行的了,几乎没有什么是扰不过的。 |
29
chinvo 2018 年 5 月 4 日
学 ReCAPTCHA 搞个 bytecode vm
WebSockets + WebRTC 下发 bytecode 并且检查中间人攻击的可能性 执行 bytecode 得到客户端解密逻辑和密钥 |
30
chinvo 2018 年 5 月 4 日
刚刚不小心按了 command + enter orz
WebSockets 下发分段密文和 IV 用 bytecode 里面的逻辑解密 bytecode 渲染内容到 canvas 完美 👍 |
31
131 OP @letitbesqzr 感想提供思路
|
33
misaka19000 2018 年 5 月 5 日
|
34
131 OP |
35
azh7138m 2018 年 5 月 5 日 via Android
移动端有阅读模式,chrome+Firefox 都有
|
36
binux 2018 年 5 月 5 日
挺好的,我有一个 headless 浏览器,https://github.com/sindresorhus/devtools-detect 检测不到,你的可以
|
38
131 OP @azh7138m 那个测试页面比较单调(简陋),所以阅读模式能够较好的工作。正常的页面有一大堆其它的文本和样式,所以阅读模式的效果是没那么好的(而且可以人工插一堆看不见的字符来混淆之类的)
|
39
noe132 2018 年 5 月 5 日 防复制我只服那个动态生成随机字体的
|
40
O3YwA1ENkb7i35XJ 2018 年 5 月 5 日
用 fiddler 把加载的这个 js 指向 404, 万事大吉.
|
42
mlhorizon 2018 年 5 月 5 日
Tampermonkey 脚本打个勾就破了,楼主继续加油。 |
45
nosay 2018 年 5 月 5 日
突然想起年少时,追书时候的那些手打天团...
所以,只要你敢公开,只要有价值,哪怕非程序员,也会通过简单粗暴的方式拿到他想要的,23333 |
47
Mysdes 2018 年 5 月 5 日 Chrome 上的 Allow Copy 插件
|
48
AX5N 2018 年 5 月 5 日
这么做有什么意义吗?复制不来的都是普通人,如果连普通人都利用不了你网站的东西,你网站还存在什么价值吗?
|
50
qsnow6 2018 年 5 月 5 日
都是码农,何必伤害呢 |
52
icy37785 2018 年 5 月 5 日 via iPhone
@AX5N #51 你这话题我肯定不接的,上面也是也是出于这种考虑所以我只说某些场景下面有用,如果我明确跟你说明哪些场景有用,你会跟我说用 xx 工具,xx 方法一样可以,然后我需要跟你解释 xx 工具盒 xx 方法为什么在这个场景下不适用,然后很有可能针对到底 xx 方法 xx 工具适不适用成为一个没有结局的对话,但是对于适不适用这个问题,不接触特定场景是理解不了的,所以这对话必然没结果,必然没结果的话题当然是不去开始比较好。这些轮子本来就是对于接触一些场景的人来说是有用的,对于不涉及特定场景的人来说没用的,我至少跟你说对部分人有用比如我的部分项目,既然对部分人有用那么就是有意义了。不知道我这样说你能不能认同。
|
55
PP 2018 年 5 月 5 日
“许看不许摸”,这是自主权。支持楼主的想法,欢迎楼主的作品!
|
56
UIXX 2018 年 5 月 5 日 ...这个工具属于“不够有用”,它意味着该效果在应用场景上
1、可以在常规用户上奏效 2、不可以在目标用户上奏效 3、常规用户跟目标用户并不高度重合 举个例子,在线答题,对于一般的考生他认认真真答题,发现不能复制那没什么。这个属于常规用户使用。如果一个考生铁了心要上网查答案,那你这个工具破解的成本太低了。而恰恰后一种用户才是我们开发这个工具所要防范的群体。 |
57
131 OP @UIXX 嗯,确实,考生完全可以打字、语音、截屏查,还可以直接问人;所以大型正规考试基本上都是线下的(但还可能带个蓝牙耳机或者口袋里放个手机)
|
59
codehz 2018 年 5 月 5 日 via Android
没考虑可访问性 api 直接读取网页文字的问题,建议干掉所有文字改用图片渲染
|
60
131 OP @codehz 对,innerText 直接就能读,不过这个 JS 里弄图片渲染还要考虑各种普适性之类的问题,所以。。。就没考虑用这个方法
|
61
AX5N 2018 年 5 月 5 日
|
64
est 2018 年 5 月 5 日 via Android
66666
|
65
zeroDev 2018 年 5 月 5 日 via Android
明白了,就是如何把人往死里整
2333 |
66
131 OP |
67
codehz 2018 年 5 月 5 日 via Android
@131 不是 innerText,是给盲人用的屏幕阅读器,不受 js 限制,只要是文本,都可以读,对付这种方法,只能靠图片了
|
68
zhjits 2018 年 5 月 5 日 via iPhone
之前做过一个内部项目用 Screen Reader API 复制网页文本
在做之前还开过脑洞 hook GDI+/Direct2D API is 直接把程序画的字读出来 |
70
yankebupt 2018 年 5 月 6 日
然后哪天被哪个恶意的植入了挖矿脚本,防开发工具调试用的 js 就被当成病毒加的壳一起检测了,然后域名因为无法调试确认病毒责任直接入了云防毒黑名单,是不是就舒服了。
纯脚本防屏蔽感觉做差不多就得了,真想防复制感觉像各种在线文献阅读网站似的要个 flash 或什么插件权限,别管真防假防当时吓住一大票人。 |
71
openmynet 2018 年 5 月 6 日
javascript:(function() {
let html = document.documentElement.cloneNode(true); let jsNodes = html.querySelectorAll("script"); jsNodes.forEach(element => { element.parentElement.removeChild(element); }); let forceCopyWin = window.open("", "force"); forceCopyWin.document.documentElement.innerHTML = html.innerHTML; })(); |
72
openmynet 2018 年 5 月 6 日 优化下:
javascript: (function() { let html = document.documentElement.cloneNode(true); let jsNodes = html.querySelectorAll("script"); jsNodes.forEach(element => { element.parentElement.removeChild(element); }); let base = document.createElement("base"); base.href = window.location.origin + window.location.pathname; html.querySelector("head").appendChild(base); let forceCopyWin = window.open("", "forceCopy"); forceCopyWin.document.documentElement.innerHTML = html.innerHTML; })(); |
74
openmynet 2018 年 5 月 6 日
代码直接放在浏览器书签里直接点,地址栏不会出现焦点丢失。
|
76
ho121 2018 年 5 月 6 日 via Android
右键另存为?
|
77
ho121 2018 年 5 月 6 日 via Android
防复制不如转成图片
|
78
gelilaohuang 2018 年 5 月 6 日
|
79
131 OP @gelilaohuang download and (rename or insert)
|
80
Roycom 2018 年 6 月 28 日
全站直接图片输出
|