1、 用户登录数据采集 用户登录
采集银行或者其他企业数据 首先需要用户登录利用java语言的URL方法获取登录url 或者使用java的开源工具HTTPClient模拟登录,用到的插件有IE的httpwotch工具和FireFox里的Firebug工具和cookie插件得到URL请求的post密码地址或者get密码地址。
2、 采集中对用户密码的登录难度及其验证码和证书解决方案
a) 对于普通的用户登录,只需要查看用户登录信息从中获取POST的值模拟post数据登录,抓取相关数据
b) 对于post提交中发现前台js做过md5加密,或者其他aes、des加密的,查看网站项目js源代码看是什么类型的加密方法,用其解密方法得到即可一般aes加密的key会存储在客户端,所以得花费一定时间找到其加密key即可模拟登录,有些加密是用js做的相关加密,或者用的一些开发加密,而其他语言的加密不相同这时候得需要Rhino JavaScript引擎技术去模拟js获取加密key再去登录。
c) 对于证书加密的解决方案 首先你要去打开一个https:///www.xxx.com的网站 找到证书选择查看证书然后在详细信息里选择复制到文件选择der编制二进制x.509导出cer证书,将证书转换为c密钥的形式,在windows里有一个keytool工具用此命令导出为加密的keystore文件格式的密钥文件,再用httpclient的keyStore工具获取密钥库登录密钥库密码用sslsocketfactory注册密钥就可以达到密钥库登录的目的。
d) 对于第三方服务器认证服务器的密钥登录方式解决方案。一直登录通过firebug的url检测查看url访问路径和在html代码里对url的变动进行采集分析dom数据查看是否有变动将获取的url得到数据继续模拟登录直到访问数据成功即可,一般这个比较耗费时间。
e) 对于机器IE加密证书和必须安装相关插件的数据抓取方案。有些网站为了限制是一台机器登录这下得按用户登录方式模拟登录、模拟登录时下载证书、模拟访问证书路径、模拟下载证书后访问的页面最后他会有可能生成一个key这个key有可能是按天去生成的有可能每天得去模拟一次然后按照用户post的数据模拟登录提交key即可。
f) 对于有验证码破解的登录方式,用程序将图片去灰度做调整,用Google的开源项目tesseract-ocr去check验证码,有些验证码很难破解的得想办法建立字典学习库。收集一些验证码让程序去学习达到破解的方法(注*得会用c语言写接口和左http服务 Google开源的tesseract-ocr用的c语言),也可以自己写算法实现验证码的破解。
g) 对于U-key登录方式的破解,看此U-KEY存储的是什么类型的key,有些是用证书做的key,有些是不对称加密key对于不同的key有不同的解决方案,可以破解key做一个模拟器,或者是把加密狗破解复制到其他加密狗里再去用。
3、 数据采集页面数据分析之分页和数据日常抓取相关注意事项
a) 对于普通的页面的分页数据分析,一般规律在html分页会存在于url里的参数对于一些带有search的先用sql注入测试一下是否可以直接出现所有数据一次爆出。如果是普通的直接url提交对应的page即可。
b) 对于一些aspx类型网站的数据抓取一般aspx网站很多人都会用一些做好的dll文件很多都会存在会话功能,就是访问第二页数据他会读取相关第一页面数据的input里hidden里的数据,每一页的数据都有所不同只需模拟抓取即可。
c) 对于其他的一些页面数据的抓取有些是ajax返回数据而前台无法解析的数据,对于这样的数据抓取最好的办法是直接用java解析json数据即可。有可能寻找json有些费力。
d) 对于有些横向分页和纵向分页数据的抓取,只能横向切换抓取然后再纵向抓取所有分页数据,有些横向数据的post参数咱们可以自己定义,并抓取得到数据。
4、 数据分析清洗数据
对于一些数据的清洗大致都是用Jsoup、xpath、regex做数据解析分析处理即可。有些数据得需要一些算法把数据取出来,二级数据页面分析解析方式取出数据即可。(对于不同的数据选择不同的解决方案)
5、 对于用户限制和ip限制的解决方案
对于用户限制数据抓取方案只能采取时间间隔掌握网站频率抓取数据和排查用户登录对于多用户登录和ip查看的方案去抓取数据也可以申请多个账号进行抓取,对于ip限定抓取的方式是可以伪装Google IP抓起数据,和用ADSL拨号方式抓取数据。需要消耗的时间比较长。其他方式可以买代理ip和高保真代理数据抓取。
6、 对于下载和编码相关注意事项
对于普通的抓取来说一般用url的数据流下载相关文档即可解析word和excel一般用POI即可达到效果对于pdf来说一般用PDFParser分析即可。其中有一些会造成乱码大多数是用InputStream之类所造成的一般用utf-8\gbk请求时查看请求的头信息看编码做对应的修改即可,有些网站得需要用字节才能才能解决乱码。对于下载有些则需要修改请求头信息才能下载。
对于一些定制化的数据抓取只能写定制化抓取方案解决,统一种子中心分发下载达到分布式数据抓取。(注*有些网站无法用分布式数据采集)。