热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python爬虫反爬之关于headers头的acceptencoding的问题

在爬取某网站时,我们习惯于直接在浏览器里复制headers和请求参数,粘贴到自己的代码里进行调试但是,在爬取linkg网站
在爬取某网站时,我们习惯于直接在浏览器里复制headers和请求参数,粘贴到自己的代码里进行调试 但是,在爬取linkg网站时,发现了一个问题: 解码失败 运行:

复制浏览器的请求数据产生的问题

 

在爬取某网站时,我们习惯于直接在浏览器里复制headers和请求参数,粘贴到自己的代码里进行调试

 

 

 

 

 

 对了这个也是用的httpx处理的,因为这个网站跟上一篇 python爬虫 - 爬虫之针对http2.0的某网站爬取 - 修复版   是同一个网站

 

但是,在爬取某网站时网站时,发现了一个问题:

 

 

 

 

 

 

解码失败

运行:

 

 

无论怎么调试,就是说解码失败

 

后面发现是请求头里的\'accept-encoding\': \'gzip, deflate, br\'

 

关键点

 

把其中的br删除掉就可以正常拿到数据:

 

 

 

 

 

 

 

有关accpt-encoding的,可以看这篇博客:

 

 

https://blog.csdn.net/weixin_40414337/article/details/88561066

 

精简的意思就是,accpet-encoding的作用是以客户端的身份告诉服务端,我支持那些数据压缩类型的,如果指定的话,服务端就会按指定好的格式返回,如果不指定的话就会不压缩,而以源数据返回

其中gzip和deflare两种类型的压缩,requests和httpx等主流的爬虫库都是可以自己解压缩数据的,而就是br不行,因为br是目前来说比较新的一种数据压缩格式,无损压缩,压缩比极高,比前两个都好,进而减少传输数据的大小,节省时间,所以目前的都支持br,浏览器也自然支持的,这就是问题所在

 

这也就是我上面把br删了就可以正常解析的原因

 

直面问题并解决

 

另外,针对br的,假如有的网站就支持br呢?咋办?   所以在代码层面也是要解决的,而不是逃避问题的把br删除掉

 

解决办法就是需要用brotli库(第三方库,需要安装)来解压,上面的博客里的案例

 

 

 

 

安装完brotli后执行:

 

 

那么,用这种brotli压缩还可以一定程度上达到反爬的效果,反正如果不知道这个的话,拿到返回的数据后你用各种编码方式(utf-8,gbk,gb18030,bt5)啥啥的,怎么解码都解不了,是不是可以防止一些初级的爬虫了啊

 


推荐阅读
  • 初级_vue.js初级教程01.简介
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了vue.js初级教程--01.简介相关的知识,希望对你有一定的参考价值。Vue特点 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • PHP输出缓冲控制Output Control系列函数详解【PHP】
    后端开发|php教程PHP,输出缓冲,Output,Control后端开发-php教程概述全景网页源码,vscode如何打开c,ubuntu强制解锁,sts启动tomcat慢,sq ... [详细]
  • Python入门后,想要从事自由职业可以做哪方面工作?1.爬虫很多人入门Python的必修课之一就是web开发和爬虫。但是这两项想要赚钱的话 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了常用#免费%代理IP库&整理*收藏——实时@更新(大概)相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
保定联通员工
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有