爬虫学习笔记(二十)—— 字体反爬

一、什么是字体反爬

网页开发者自己创造一种字体,因为在字体中每个文字都有其代号,那么以后在网页中不会直接显示这个文字的最终的效果,而是显示他的代号,因此即使获取到了网页中的文本内容,也只是获取到文字的代号,而不是文字本身。

简单的说,字体反爬指的就是浏览器页面上的字符和调试窗口或者源码中的内容,显示的不一样,这就是字体反爬。


二、编码原理

bit(比特):是由0或1构成的二进制位
Byte(字节):1个字节由八个连续的二进制位,或二个16进制数表示
字符:是指计算机中使用的字母、数字、字和符号

2.1、ASCII编码对照表

在这里插入图片描述
ASCII码

ASCII 码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。


2.2、Unicode编号

Unicode码

Unicode为世界上所有字符都分配了一个唯一的数字编号,这个编号范围从 0x000000 到 0x10FFFF(十六进制),有110多万,每个字符都有一个唯一的Unicode编号,这个编号一般写成16进制,在前面加上U+。例如:”爬“的Unicode是U+722C。它是一种规定,Unicode本身只规定了每个字符的数字编号是多少,并没有规定这个编号如何存储。

理论上可以直接把Unicode编号直接转换成二进制进行存储,而Unicode并不是这么操作,因为除了这种直接转换成二进制的方案外,还有其他方案,主要有UTF-8,UTF-16,UTF-32,gbk。(UTF-8、UTF-16、UTF-32……都是 Unicode编码 的一种实现。)


2.3、UTF-8编码方式

UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8 的编码规则很简单,只有两条:

  1. 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。

  2. 对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

汉字的UTF-8编码(n字节)表示

  1. 获取汉字unicode编号
  2. 转化为二进制数
  3. 根据UTF-8编码格式,将二进制数据填充到指定位置
  4. 将填充好的新二进制数据,转换成16进制

例:

1、获取汉字unicode编号
ord('爬')   =29228
hex(29228)   ='0x722c'

2、转化为二进制数
bin(29228)   ='0b111001000101100'

3、根据UTF-8编码格式,将二进制数据填充到指定位置
  (29228>2048所以选3: 1110xxxx 10xxxxxx 10xxxxxx)
11100111  10001000  10101100

4、将填充好的新二进制数据,转换成16进制
hex(int('11100111',2))   ='0xe7'
hex(int('10001000',2))   ='0x88'
hex(int('10101100',2))   ='0xac'
"爬".encode(&#
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值