当前位置: 首页 > article >正文

python网络爬虫(三)——爬虫攻防

  爬虫是模拟人的浏览访问行为,进行数据的批量抓取,当抓取的数据量逐渐增大时,会给被访问的服务器造成很大的压力,甚至有可能崩溃。换句话说就是,服务器是不喜欢有人抓取自己的数据的,那么,网站方面就会这队这些爬虫者采取一些反爬策略。
  服务器识别爬虫的一种方式是通过检查连接的User-Agent来识别到底是浏览器访问还是代码访问的。如果是代码访问的,当访问量增大时,服务器其就会直接封掉来访IP。
  在进行访问时,我们在开发者环境下不仅可以找到URL、Form Data,还可以在Request Headers中构造浏览器的请求头,封装自己。服务器识别浏览器访问的方法就是判断ketwor是否为Request是否为Request Headers下的User-Agent。因此,我们只需要构造这个请求头的参数,创建请求头部信息。
  至此,很多读者会认为修改User-Agent很简单,但是正常人1秒钟看一张图,而爬虫1秒钟可以抓取好多张图,比如1秒钟抓取上百张图,那么服务器的牙利必然会增大。也就是说,在一个IP下批量访问、下载图片,这种行为不符合正常人类的行为,肯定要被封掉IPP。其原理也很简单,就是统计每个IP的访问频率,该频率超过阈值就会返回一个验证码,如果真的是用户在进行访问,用户就会填写验证码,然后继续访问,如果是代码在进行访问,就会被封掉IP。
  解决以上问题有两种方法,第一种方法就是常用的增设延时,每3秒钟抓取一次,但是,我们写爬虫的目的是为了高效批量抓取数据,这里设置3秒钟抓取一次,效率未免太低。其实,还有一种更重要的解决方法,那就是本质上解决问题。
  不管如何访问,服务器的目的就是查出那些为代码访问,然后封掉IP,为了避免被封掉IP,在数据采集时经常使用代理,当然,requests也有相应的proxies属性。
  首先护肩自己的代理IP池,将其以字典的形式赋值给proxies,然后传输给requests。
  数据存储一般发生在获取到网页的HTML或数据之后,未经过清洗和组织的数据是必须要保存的资料。保存好这些资料后,再写清洗和组织数据的脚本,将数据提取出来重新存入数据库或数据表中。


http://www.kler.cn/a/286290.html

相关文章:

  • OpenCV 版本不兼容导致的问题
  • 5.3.2 软件设计原则
  • C++,STL 六大组件:容器、迭代器、算法、函数对象、适配器、分配器
  • 【huawei】云计算的备份和容灾
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.26 统计圣殿:从描述统计到推断检验
  • Java 分布式与微服务架构:现代企业应用开发的新范式
  • Question mutiple pdf‘s using openai, pinecone, langchain
  • [pytorch] --- pytorch基础之transforms
  • Python算法L2:排序算法(详细版)
  • 前端提高Web/App/小程序开发效率的工具
  • CSS 的值与单位——WEB开发系列21
  • 【高阶数据结构】图的应用--最小生成树
  • 考研系列-408真题数据结构篇(10-17)
  • 003-LoadBalancer负载均衡服务调用
  • 钉钉-即时通讯-工作通知
  • 【ragflow】安装2:源码安装依赖
  • NVI技术创新联盟成立,BOSMA博冠IP轻量化制播已运用
  • 计算机毕业设计选题推荐-传统文化网站-Java/Python项目实战
  • 【Hot100】LeetCode—74. 搜索二维矩阵
  • SpringBoot——请求响应(简单参数、实体参数、数组集合参数、日期参数、JSON参数、路径参数、统一响应结果)
  • MySQL——事务与存储过程(一)事务管理(2)事务的提交
  • 商圣集团:数字创新,引领智慧生活新篇章
  • IM即时通讯软件,企业即时通讯系统就选WorkPlus
  • Unet改进17:添加ShuffleAttention||减少冗余计算和同时存储访问
  • 布偶猫应该怎么喂?希喂、交响乐金罐、尾巴生活彩虹泥适合布偶猫吗?
  • 将vue项目打包为安卓软件