在网络抓取方面,大家经常会讨论两个问题:一个是如何避免被目标服务器封锁,另一个则是如何提高检索数据的质量。在现有阶段来说,有效的技术可以防止被目标网站封锁,例如用户们常用的代理和实用的IP地址轮换。不过其实还有一项技术也能发挥类似作用,却经常被忽略,那就是使用和优化HTTP标头。这种方法同样能够降低的网络爬虫被各种数据源封锁的可能性,并确保检索到高质量的数据。接下来就来了解一下常用的五种标头:
HTTP Header User-Agent
User-Agent Header传递的信息包括应用类型,操作系统,软件和版本信息,并允许数据目标来决定使用何种类型的HTML布局来响应,手机、平板电脑或PC均可显示不同的HTML布局。
网络服务器经常会验证User-Agent Header,这是网站服务器的第一重保障,这个步骤可以让数据源识别出可疑请求,因此,有经验的爬虫工作者会把User-Agent Header修改成不同的字符串,从而让服务器识别成是多个自然用户在发出请求。
HTTP Header Accept-Language
Accept-Language Header向网络服务器传递的信息包含客户端有哪些语言,以及当网络服务器发回响应时首选哪种特定语言。当网络服务器无法识别首选语言时,通常会使用特定Header。
HTTP Header Accept-Encoding
Accept-Encoding Header通知网络服务器在处理请求时使用哪种压缩算法。换句话说,当从网络服务器发送到客户端时,如果服务器可以处理,就会确认可以压缩的信息。使用该Header优化后它可以节省流量,从流量负载的角度来看,这对客户端和网络服务器来说都比较好。
HTTP Header Accept
Accept Header属于内容协商类别,其目的是通知网络服务器可以向客户端返回什么类型的数据格式。如果Accept Header配置得当,就会让客户端和服务器之间的通信更加像真实用户行为,从而减少网络爬虫被封锁的可能性。
HTTP Header Referer
在将请求发送到网络服务器之前,Referer Header会提供请求前用户所在的网页地址。在网站试图阻止抓取过程时,Referer Header其实影响不大。一个随机的真实用户很可能上网时间间隔数小时。