查看学信网的源代码,学历信息都是透明的字符,复制出来都是方块,但在页面上却能正确显示,请问这是什么技术?
这个问题涉及到的是一种字符编码或者字符替换的技术,具体来说,可能是使用了自定义的字体或者通过JavaScript动态替换了字符。
在学信网的例子中,页面上的字符在源代码中是透明的字符或方块,但在网页上能正确显示,这通常意味着在页面加载或渲染时,这些字符被替换成了正确的显示内容。这种方法可以防止直接复制文本时获取到真实的信息,增加了一定程度的数据保护。
一种常见的方式是使用Web字体(如通过@font-face引入的自定义字体文件),这些字体文件可以包含特殊的字符映射,使得某些字符在网页上显示为一个样子,但在复制或查看源代码时是另一个样子。另一种方式是通过JavaScript在页面加载后动态替换这些字符。
由于具体实现细节可能涉及学信网的内部逻辑和代码,无法直接确定其使用的确切技术。但上述方法提供了可能的实现途径。
字体反爬。你看它的 font-family,一定是一个自定义的字体。
DevTools 里还是以系统字体显示,因此就看起来就是一堆乱码了。你要再问为啥这堆乱码都是“空格”,那只是看起来像是空格,实际上是因为用了 Unicode 里还没有对应字符的那些编码,所以都显示成空白了。如果你要是把它们复制出来、按字节逐个字符读取,你会发现每个字符都是不一样的。
看了下它的源码,它使用了自定义的字体
Chsi
,这个字体是从webfont加载过来的,比如:https://t1.chei.com.cn/archive/fonts/Chsi_0.woff2?t=1718182345010
然后使用了自己编码的unicode字符,在页面js中的
resultJson
字段可以看到具体的unicode编码。等于它用了自定义的字体渲染了自定义的unicode编码,所以你直接复制不了的