通过 CSS 改变显示给网页用户的数据,这个是如何实现的?又如何能获取到真实的数据?

2018-08-13 15:49:11 +08:00
 ytf513

比如这个网站: https://www.smm.cn/ ,然后通过页面查看的数据是正确的,程序抓到的值就是错的,这些错误的元素都有一个 css,class="change_price"。

3013 次点击
所在节点    Python
18 条回复
oyhw92
2018-08-13 15:57:23 +08:00
css 修改了字体,字体里面改了字形

比如说字符 `3` 在这个字体里面看起来是 `9`
3CH0
2018-08-13 16:04:02 +08:00
font-family: 'font2regular'
ytf513
2018-08-13 16:04:30 +08:00
谢谢,看了一下,确实是这样的。知道了这个对应关系也可以解决了,但是这个对应关系也可能会调整的,所以有没有什么稳定的解决办法?
wizardoz
2018-08-13 16:05:28 +08:00
长见识了
zythum
2018-08-13 16:07:17 +08:00
你看下 change_price 下面的样式,里面应用了一个字体,你在看这个字体。

这个是典型的字体防抓站的效果,但是很容易 mapping 1234567890 => 2071386549

但是这个 mapping 关系不是容易修改字体而改变么。所以你可以每次抓的时候连同字体文件一并抓下来。

如果真不信就上 ocr,对于这种纯数字很成熟的。
ytf513
2018-08-13 16:14:53 +08:00
@zythum 谢谢,不太理解,1.连同字体文件都抓取过来; 2.上 OCR 是两种解决方法?
ytf513
2018-08-13 16:32:33 +08:00
OK,知道了,目前最好的解决办法只能这样吗?解析字体文件?
@zythum
twocold0451
2018-08-13 16:34:26 +08:00
还有这种操作,长见识。
leafiy
2018-08-13 16:50:23 +08:00
天才,学习了
jasonyang9
2018-08-13 16:59:17 +08:00
找到映射关系直接逆向,666
AJian
2018-08-13 18:19:34 +08:00
JHerschel
2018-08-13 18:33:35 +08:00
字体防抓,666。
ArtsXiaoLu
2018-08-13 18:43:46 +08:00
确实是他所用的 font2regular 字体问题,
这个还是不要去修改他的字体,
否则无论你怎么去复制,一旦进入到其他编辑状态下,字体一变都是错误的

他正常输入数据,用程序 /字体反译到网页数据,然后又通过这款字体再解回到显示页面
所以你只能在抓取数据后再替换一下
如在 Excel 或批处理中通过定义命令,替换成正确数据才可以正常复制剪切使用
具体替换参数见 5 楼数据
keventseng
2018-08-13 19:47:00 +08:00
抓取的时候数字替换一下就行了。
Sparetire
2018-08-14 02:53:13 +08:00
字体反爬了解一下 https://zhuanlan.zhihu.com/p/37838586
ytf513
2018-08-14 09:26:30 +08:00
@AJian 这个关系我也看到了,可是关系变化了怎么办?
M003
2018-08-14 15:20:35 +08:00
如果对应关系经常换就没什么想法

刚才人肉修改了下

文本节点: 0123456789

显示: 9207138654

![]( )

字体文件也是这样对应的..
ytf513
2018-11-25 22:50:56 +08:00

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

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

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

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

© 2021 V2EX