背景
近期由于工作上的需求,研究了一下反爬虫的工作。爬虫真是一种让人又爱又恨的存在,一方面搜索引擎的爬虫可以带来更多曝光率和更多流量,对公司是一件好事,但是也有一些个人或者竞争对手的爬虫,不但不会带来利润,反而会像DDos一样对服务器造成压力。
反爬虫一般存在于两个环节,一种是traffic层面,在爬虫访问到服务器之前进行识别、区分,减轻服务器的压力,一般CDN提供商会有相关的反爬虫服务可以购买;一种是在统计层面,防止爬虫对流量、性能分析的影响。这篇文章主要讨论统计层面的反爬虫。
日志!日志!
既然是统计层面,那么前端的日志必不可少。对每一条请求的日志,至少要包含
-
user-agent,即ua,提供浏览器、系统等信息
-
bev_id,与设备/浏览器相关,可以认为每个设备的bev_id都是独一无二的
-
ip,记录请求的ip地址
-
url,即该请求访问的网址
-
user_id,对可以登录的网站,该条目记录登录信息
-
timestamps,记录时间戳,精确到秒或毫秒
除此之外,最好还包含:
-
用户行为记录,比如该条request是搜索、登录、浏览信息还是支付等等。
另外由于日志的解析问题,可能会有一些日志比较奇怪。如果这种奇怪的日志数量较大,那么首先应该提高数据的质量,才能考虑后续的去爬虫。
爬虫特征
对爬虫的检测有好几种方