最近同事在爬取一些网站时遇到了一些JS反扒手段,将一些有代表性的手段做一个总结
CSS sprite 文字替换
原理其实就是将文字替换为一个和文字大小相同的div,这个div的背景是一张 CSS sprite(一般是一张svg)中计算出的某一块。
解决办法:获取那张svg,解析其中内容得到文字替换的规则即可。
字体文字替换
原理是将问题替换为另外的编码,使用特殊的字体文件显示为正确的文字。
解决办法:获取字体,分析出字体对应文字编码进行替换
替换网站原生 JS 方法
一些网站会替换一些原生的JS方法。例如当需要获取当前页面文字大小,一般会使用window.getComputedStyle()这个方式,如果该方法被替换了,则无法获取文字大小信息。
解决办法:新建一个iframe,获取iframe中的contentWindow