故障公告被放出的 Bing 爬虫,又被爬宕机的园子

Posted 博客园官方博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了故障公告被放出的 Bing 爬虫,又被爬宕机的园子相关的知识,希望对你有一定的参考价值。

这些巨头爬虫们现在怎么了?记忆中2022年之前的十几年,园子没有遇到过被巨头爬虫们爬宕机的情况,巨头们都懂得爱护,都懂得控制节奏,都懂得在爬网时控制并发连接数以免给目标网站造成过大压力。从去年开始,巨头爬虫们开始变了。首先从中文巨头爬虫中的佼佼者——百度蜘蛛开始

这些巨头爬虫们现在怎么了?记忆中2022年之前的十几年,园子没有遇到过被巨头爬虫们爬宕机的情况,巨头们都懂得爱护,都懂得控制节奏,都懂得在爬网时控制并发连接数以免给目标网站造成过大压力。

从去年开始,巨头爬虫们开始变了。首先从中文巨头爬虫中的佼佼者——百度蜘蛛开始,变得只追求自己“飞流直下三千尺,疑似银河落九天”的畅快,而不顾是否给目标网站带来“狂风暴雨后的一片狼藉”。在2022年4月3日与5月4日百度蜘蛛的两次疯狂袭击之后,园子勇敢地说出了“不”——屏蔽了肆无忌惮的百度蜘蛛IP网段,而勇敢的代价是“不让疯爬,就给重罚”——园子被百度全面降权。

今年,被百度重罚后园子的唯一依靠——微软 Bing 的爬虫又开始了,3月29日在园子里上演了下班前的一场暴风雨,爬虫爬至园宕机,无奈之下屏蔽了 Bing 爬虫疯狂爬取的两个网段。

去年屏蔽后,我们还能庆幸地感叹——至少还有你,Bing;今年屏蔽后,我们只剩忐忑不安——如果再被重罚,将是灾难。近一个月的忐忑不安,试着放虎归山,结果又让园子人仰马翻。

前天,我们试着放出了被屏蔽的 Bing 爬虫,结果昨天 18:15~18:40 左右,放出的 Bing 爬虫又爬至园宕机,只能再次屏蔽,再次陷入随时被重罚的危险境地。

抱歉,昨天下班时间出现的故障给大家带来了麻烦,请大家谅解。

在巨头爬虫们变得格外强大变得巨能爬的挑战面前,园子别无选择,唯有让自己变得更强大。

【更新】

从 bing webmaster tools 看,昨天被屏蔽之前,bing 爬虫爬网 500 多万次。

爬虫入门

爬虫的定义

什么是爬虫?

 

    爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
    原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

爬虫的分类和爬虫的流程

  爬虫的分类

  根据被爬网站的数量不同,我们把爬虫分为
  •  通用爬虫:通常指搜索引擎的爬虫
  •  聚焦爬虫:针对特定网站的爬虫
  聚焦爬虫的工作流程如下
  技术分享图片
    urllist --> 响应的内容 --> 提取数据 -->入库

 

robots协议

 robots协议
  网站通过robots协议告诉搜索引擎哪些页面可以被抓取,哪些页面不能被抓取,但它仅仅是道德层面上的约束
?

HTTPS和HTTP的复习

  http和https的概念

  HTTP
  •  超文本传输协议
  •  默认端口号:80
   HTTPS
  •  HTTP+SSL(安全套接字层)
  •  默认端口号:443

 

  https比http更安全,但性能更低

 

浏览器发送http请求的过程

  当我们在本地输入www.baidu.com的时候,浏览器会先尝试从本地的host文件中获取到对应的ip地址,如果不能,会通过DNS服务器获取www.baidu.com对应的ip。
下一步就是使用tcp协议,建立tcp连接。然后使用HTTP协议请求网页的内容,收到服务器的回应,得到一串HTML形式的文本,浏览器把它渲染并显示到屏幕上。
浏览器会自动请求js,css等内容,js会修改页面内容。最后浏览器渲染出来的内容在elements中,其中包括css,js,图片,url地址对应响应的内容等。
  但是在爬虫中,爬虫只会请求url地址,拿到url地址响应的内容
渲染出来的页面和爬虫请求的页面不一样

所以在爬虫中,需要以url地址对应的响应来提取内容

 

url的形式

  url的形式:scheme://host[:port#]/path/…/[?query-string][#anchor]
  •  scheme:协议
  • host:服务器的ip地址或者域名
  •  port:端口号
  •  path:请求资源的路径
  •  query_string:参数,发送给http服务器的数据
  •  anchor:锚 (跳转到网页的指定的锚点位置)

 

http重点的 请求头

  user-agent:告诉对方服务器是什么客户端正在请求资源,爬虫中模拟浏览器非常重要的一个手段
 

 python2和python3中的字符串

  •  ascii 一个字节表示一个字符
  •  unicode 两个字节表示一个字符
  •  utf-8 变长的编码,可以是1,2,3,4个字节

  python2

  •  字节类型,str类型,通过decode()转为unicode类型
  •  unicode类型:unicode,通过encode()转为str字节类型

  python3

  • str:unicode,通过encode()转为bytes类型
  • bytes:字节类型,通过decode()转为str类型

以上是关于故障公告被放出的 Bing 爬虫,又被爬宕机的园子的主要内容,如果未能解决你的问题,请参考以下文章

上周热点回顾(4.24-4.30)

故障公告下班前的一场暴风雨,爬虫爬至园宕机

故障公告阿里云抢占式实例服务器被释放引发全站故障

故障公告龙卷风继续袭击,服务器们顽强抵抗

故障公告攻击式巨量并发请求再次来袭,引发博客站点故障

爬虫入门