网页抓取数据时对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. 否刚不能获取正确的结果。


本文由 hcb 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论