爬虫的主要目的是在Web爬取数据,Web上获取数据基本是两种思路:理论上浏览器能得到的数据,爬虫都能得到
1.寻找数据接口
2.获取整个Html页面
爬取的对象分有权限管理和无权限管理,这两种都做过区别很大。
无权限管理的从形式上来说是很简单的,主要是深度和广度的设计,无论是寻找的数据接口还是整个Html页面都没有什么影响;
有权限管理的最大的问题是登录授权,其实就是防机器登录的验证校验,常见的验证手段:图片字符验证、图片点选验证、拼图滑块验证、随机鼠标点选验证、短信验证以及支付宝的目前还不知道属于什么验证范畴(因为最近在做支付宝的自动登录虽然通过别的方式实现了自动登录,但是还不是很完美,心中不爽)。
在有权限管理的情况下,使用数据接口爬取数据通常是需要携带认证token,需要自己分析正常的请求数据和响应数据,自己封装请求数据模拟 http请求,在携带了正确的认证token的情况下,请求数据是没有问题的。除非服务器还有其他的限制,比如支付宝请求账单记录:一个用户在一段时间内请求数据会受到限制,需要手机扫码验证(作为局外人,对支付宝内部的安全机制不是很清楚,只能通过别的方式再去解决)。其实很多时候从数据接口爬数据都是搞不定认证token的,其复杂的算法不是那么容易搞定的,那么另外一种方式就是正常访问得到一些已有的cookie,操作cookie实现。有兴趣的可以尝试一下支付宝自动登录。
通常这种情况下还有另一种思路就是模拟浏览器请求,调用某种浏览器内核get到登录页面,再填入对应的数据,模拟提交。这种情况下机器验证是很烦人的事情
图片字符验证,怎么得到图片中的字符
图片点选验证,怎么判断点选内容以及鼠标坐标
拼图滑块验证,怎么判断移动距离以及触发验证算法(淘宝的滑块验证,你可以用js实现显示层面的验证通过,但不会调用实际的验证算法)
随机鼠标点选验证,怎么判断鼠标坐标
短信验证,果断放弃目前没有做过,也没有思路
支付宝的验证(我个人判断)是在input password中,只要是机器填写的password都不能通过验证,初步判断可能是跟大数据和人体行为学有关系的某种验证。没有深入的了解这个验证手段。
以上是我了解到的验证手段了,如果这些验证手段都通过,那么接下来的请求服务器是没有很好地办法去判断是人为的浏览数据还是爬虫爬取数据(当然注意你爬虫请求的频率),没有理由不给数据。
这是在博客园的第一篇,不属于技术,但能理清一些流程。有误之处还请见谅,并请告知。