在通过Chrome访问HTTPS的地址时,我们会发现Chrome的Accept-Encoding
这个Header的内容是gzip, deflate, br
,这里br
对应的是brotli压缩算法,支持br
的服务器返回的Content-Encoding
header的内容就是br
。brotli压缩算法的压缩效率相对于gzip要高很多,这篇文章中提到,使用brotli时,html文件体积比gzip小21%,js文件比gzip比小15%,css文件比gzip小25%。
从2015年到现在brotli已经得到了大量的网站,CDN服务商和建站服务的支持。所以使用brotli
不仅仅可以减少服务器的流量占用,对于大规模爬虫应用来说,在发送请求时在Accept-Encoding
这个Header中加上br
,同样也可以客观的减少使用的流量。
对于Python爬虫来说,最为常用的请求库是requests和HTTPX,如何让它们启用对brotli的支持呢?
实际上非常简单,在requests的2.26.0版本之后,在HTTPX的0.7.0版本之后,都已经针对brotli进行了支持。只需要保证在现有的Python环境中安装了brotli的相关库,brotli
或者brotlipy
,那么这两个web请求库就会自动在Accept-Encoding
这个Header中加上br
,并不需要对代码做任何调整,非常简单。
所以对于Python爬床来说,支持brotli只需要用一行代码简单的安装上brotli
或者brotlipy
即可:
pip install brotli
或者
pip install brotlipy
这样的话,就可以直接大量减少爬虫的流量。如果在使用像AWS这样的以流量计费的云服务或者代理服务的话,这一部分的流量就能够可观的节约流量费用。