网页抓取数据时对content-Encoding=br的处理
今天在获取网页数据的时候 ,查看返回的结果是好多乱码。 好多方格符号,把代码调试了一下。发现了原因竟然是这个网页是内容编码采用br这个原因引起来的。
之前处理content-encoding的时候,先判断 是否是gzip,如果是按gzip来处理,如果不是的话,采用默认处理。
现在发现默认处理完以后,乱码了。 经过查找原因, 是
Accept-Encoding: gzip, deflate, br
这个网页采用了br的压缩引起的。
什么是content-Encoding
http协议中的编码格式。 对http协议传的文字进行相关的编码。 因为有时候数据比较大。 经常会采用压缩的方式进行传输,客户端收到以后,再对其进行解压
常用的有gzip, deflate, br
前面两种大家都比较熟悉。最后一种br是goolge 在2015年发布的,因为压缩比gzip效率高,现在使用的人开始变多。
对比gzip和br压缩
从图可见,br压缩要比gzip 提高了近四倍的效率。
net在5.0引入了br
br的处理:引用System.IO.Compression.Brotli.dll 这个类,使用就可以了。
https://docs.microsoft.com/zh-cn/dotnet/api/system.io.compression.brotlistream?view=net-5.0
适用于以下
产品 版本
.NET 5.0
.NET Core 2.1, 2.2, 3.0, 3.1
.NET Standard 2.1
如果你的代码是在net5.0 之前的, 又不想升级,那么在进行模拟提交的时候 ,请去掉br. 否刚不能获取正确的结果。
还不快抢沙发