今天看见一个奇怪的网页显示

2021-05-24 11:52:39 +08:00
 fuxinya

浏览一个网站, 复制文字后发现是乱码, 但是网页却显示正常, F12 看了下网页文档源码, 确实是乱码, 但是 Chrome 浏览器渲染显示时为什么又正常了呢? 这个防爬虫的技术还是第一次见.

抓取网络请求, 服务器返回的是这段文字 A:

[(] |tscl6qaa| [、] |tco63lkb| [、] |clh6lq91| [、] |jcg6rpb9|cs6mifl7| [专] |stcp6s24|jcpnj688|hpjtc6f6|skqpc6f7|lc6olrd0| [可] | [为] |tckp6eh7|ric6fkr7| [或] | [相] |ic6q8lo8|ckr6hif7|sokjc6d0| [,] |lcplh649| [他] | [专] |ocn6t2m4| [考] |c6skqci7| [入] | [校] |co6in4l5|pc6sjg46| [外] |hc6gfkm7|cr6nmaj4|c6js7lo4|mct6orf7|cmg6kid0| [为] |nlocj6e7|cln6gof7| [。] | [)] |

然后应该是经 JS 处理下, DOM 里面变成下面这段文字 B:

욷南왯왴(왝욛웚单列专오왉它)(఼఺఺ఴ)((욪、옻、욑、욹웷专오욈웶웷원可为웧웷或相욈웷원왉他专오考웇入校왅왆外웷욤왴웷원为웧웷。))



最后渲染到显示器上是正常文字 C. 这段文字即经过了 A → B → C 的转化.

很好奇 B → C 实现的原理?

3643 次点击
所在节点    程序员
13 条回复
mercury233
2021-05-24 11:55:08 +08:00
换了特殊字体
karloku
2021-05-24 11:56:54 +08:00
应该是字体. 看看如果每次都一样的话可以自己存个映射.
madpecker009
2021-05-24 11:57:29 +08:00
百度文库是不是也是这样技术啊
fuxinya
2021-05-24 11:59:38 +08:00
@mercury233 确实, 刚看了 css 样式里面是 `font-family: cntext5!important;`
futureeent
2021-05-24 12:17:24 +08:00
记得斗鱼里的数字也是这样的
caomu
2021-05-24 14:05:33 +08:00
硬要爬就 OCR 一把梭……
phony2r
2021-05-24 14:10:39 +08:00
特殊字体, 一般为了防爬虫
archonxp
2021-05-24 14:16:36 +08:00
leeyuzhe
2021-05-24 14:21:34 +08:00
长见识了
magese
2021-05-24 15:56:14 +08:00
长见识了
imn1
2021-05-24 16:36:00 +08:00
这招现世好久了,以前少人用是因为中文字多,字体文件大,网速慢
后来有人学乖了,不需要全部中文都替换,替换部分频率高的字就足够了,只要“机器阅读困难”就可以了
fxxkgw
2021-05-24 17:00:19 +08:00
学习了
wzzzx
2021-05-24 22:43:02 +08:00
@archonxp #8 这个写的真好!

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

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

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

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

© 2021 V2EX