微信阅读网页版的骚操作

2019-11-25 11:54:31 +08:00
 dsphper

DOM 打乱,每个文字用 top left 定位的. 比之前的百度文库部分文字用图片替换的思路兼容性方面强了不止一点。

不过好像然并软,几行代码就能还原了。


var list = {};
var all = document.getElementsByClassName('absolute');
for( var i=0;i<=all.length;i++) {

	try {
		var iT = all[i].offsetTop;
		var iL = all[i].offsetLeft;
		var text = all[i].innerText;
		if(list.hasOwnProperty(iT)) {
			list[iT][iL] = text;
		} else {
			list[iT] = {};
			list[iT][iL] = text;
		}
	} catch(error) {

	}
	
}
for (key in list) {
	console.log(Object.values(list[key]).join(""));
}

微信阅读:https://weread.qq.com/

6739 次点击
所在节点    程序员
27 条回复
Les1ie
2019-11-25 12:35:22 +08:00
厉害
shintendo
2019-11-25 13:02:59 +08:00
截屏 OCR 一剑破万法
shintendo
2019-11-25 13:05:13 +08:00
话说,这个用脚本计算一下相对位置也不难还原吧,毕竟最终显示效果是整齐的,是不是还不如那种替换字体的?
sobigfish
2019-11-25 13:15:01 +08:00
都是防菜鸟不防高手的, 也没那个时间去耗这些吧
suisetai
2019-11-25 13:16:58 +08:00
这个还原出来 没有换行和空格吧……
hiluxi
2019-11-25 14:25:10 +08:00
这么做的目的是什么?
tonnycao
2019-11-25 14:27:42 +08:00
做免费小说的还是有兴趣的
yingqi7
2019-11-25 14:30:36 +08:00
@hiluxi 这样做增加了一点盗版门槛,相应的盗版流出会少很多,保障微信阅读可以长期留存大量用户。
672795574
2019-11-25 14:32:07 +08:00
$$('span[data-wr-id]').sort((a,b)=>a.style.top != b.style.top ? parseInt(a.style.top) - parseInt(b.style.top) : parseInt(a.style.left) - parseInt(b.style.left)).map(s=>s.textContent).join('')


@hiluxi 目的是复制和黏贴吧
dioxide
2019-11-25 14:43:45 +08:00
很多网文站的常规反扒操作
annielong
2019-11-25 15:11:23 +08:00
直接 ocr,看起来字体很标准,应该识别率比价高,当年某点那种 ocr 不出来,直接截图传播
hiluxi
2019-11-25 15:19:51 +08:00
每个字都要算位置? 这样对浏览器要求太高了。。。
malthae
2019-11-25 15:23:16 +08:00
OCR 有什么推荐的吗
xuelang
2019-11-25 16:33:58 +08:00
定位方法略简陋,估计很快就会升级了
twelvechen
2019-11-25 19:08:21 +08:00
话说微信读书时长换书币的政策又变了
Telegram
2019-11-25 19:29:18 +08:00
@hiluxi #12 看小说时,一页也就几百个字,对现在手机性能来说,定位这几百个字,消耗不大。
Telegram
2019-11-25 19:32:34 +08:00
@hiluxi #12 好吧,我错了,PC 端浏览可以往下滚动,一个章节,几万个字,直接上万个 Nodes
136608135
2019-11-25 19:38:44 +08:00
想用这个挡住一小部分人吧。
AX5N
2019-11-25 19:40:02 +08:00
“不过好像然并软,几行代码就能还原了。”
你慢慢还原吧,微信悄咪咪改一下算法你都不知道,就算知道你还得跟着改。
gltjk
2019-11-25 21:33:00 +08:00
看了看源代码,在开发者工具里试了试,发现最简单的方法是拿到混淆之前的代码😂:__INITIAL_STATE__.reader.chapterContentHtml

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/622850

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX