爬虫的抓取错误

前言

一个网站在处理百度爬虫抓取情况的时候,遇到了大量的抓取错误,记录一下解决问题的过程和思路。
百度的解释是当百度spider访问服务器,进行tcp通信的时候,socket读写发生异常,导致数据不能正常返回。请检查服务器连接状况和防火墙设置是否符合预期
首先列出该网站的特征信息:香港机房,HTTPS请求,后端server为nginx。
先通过另外的域名,位于广州机房的网站,抓取若干次,发现还是偶发socket错误,同时将香港机房的请求由https改为http,抓取50次没有任何问题。故可以得出结论一:

  1. 不是因为机房位置问题导致的,而是因为HTTPS引起的,而具体是因为server配置不正确,还是受到GFW等干扰而引起的,不得而知。(内心os:某网站爬虫真垃圾)
    根据结论一,可以得出一个兜底策略,可以不用https,直接改用http,别搞这些幺蛾子了。

深入分析

本着继续挖掘https引起的问题,故还是深入研究一下问题所在。
首先怀疑Cipher suites与ocsp等问题,把这些安全配置逐个去掉,发现没有起到作用,还是有错误。
尝试过千万种可能之后,都开始怀疑人生了,最终得出一个结论,只有可能是百度爬虫自己的问题。于是把服务器的server直接关掉,抓取几次应该是得到443 Connection refused,但通过百度爬虫抓取,还是得到了socket 读写错误。(我服务器都关掉了,还是有这个错误,这只有可能是百度自己的错误了)
本以为能发现什么大的问题,找到服务器有什么常年存在的错误,结果是这个原因。