java从网页抓取数据(机器IE加密证书加密的解决方案方法及安装方法分析)
优采云 发布时间: 2021-10-20 15:04java从网页抓取数据(机器IE加密证书加密的解决方案方法及安装方法分析)
1、 用户登录数据采集 用户登录
采集银行或其他企业数据首先需要用户登录。使用java语言的url方式获取登录url或者使用java开源工具HTTPClient模拟登录。使用的插件有IE的httpwotch工具和FireFox的Firebug工具和cookie。插件获取post密码地址或获取URL请求的密码地址。
2、 采集 用户密码登录难点及其验证码和证书解决办法
a) 对于普通用户登录,只需查看用户登录信息并从中获取POST的值即可模拟post数据登录并抓取相关数据
b) post提交,发现前端js做了md5加密,或者其他aes和des加密,查看网站项目js源码看是什么类型的加密方式,使用它的解密方法得到一般的aes加密密钥会保存在客户端,所以需要一定的时间才能找到它的加密密钥来模拟登录。有的加密与用js做的加密有关,有的使用开发加密,但其他语言的加密就不一样了。Rhino JavaScript引擎技术模拟js获取加密密钥,然后登录。
c) 对于证书加密方案,首先要打开一个网站,找到证书,选择查看证书,然后在详细信息中选择copy to file,选择der to compile binary x.509 to导出cer证书,将证书转换为c密钥的形式,windows中有一个keytool工具。使用该命令以加密的keystore文件格式导出key文件,然后使用httpclient的keyStore工具获取keystore登录keystore密码并使用sslsocketfactory注册密钥来达到keystore登录的目的。
d) 第三方服务器认证服务器密钥登录方式的解决方案。一直登录。通过firebug的url检测查看url访问路径,采集分析dom数据,查看html代码是否有变化。获取url获取数据,继续模拟登录,直到访问数据成功,一般这个比较耗时。
e) 本机IE加密证书及数据采集程序需安装相关插件。有些网站为了限制某台机器的登录,需要按照用户登录方式模拟登录,模拟登录时下载证书,模拟访问证书路径,模拟下载后访问的页面证书,最后他可能会生成一个密钥。密钥可以每天生成。可以每天模拟一次,然后根据用户的post数据模拟登录并提交key。
f) 对于有验证码破解的登录方式,使用程序将图片调整为灰度,使用谷歌开源项目tesseract-ocr查看验证码。对于一些难以破解的验证码,就得想办法搭建字典学习库了。采集一些程序验证码来学习破解(注意*必须用c语言写接口和左http服务谷歌开源tesseract-ocr使用的c语言),也可以自己写算法实现验证码的破解。
g) U-key登录方式的破解,看这个U-KEY里面存放的是什么类型的key,有的是用证书制作的密钥,有的是非对称加密密钥。不同的密钥有不同的解决方案,可以破解。密钥作为模拟器使用,也可以破解加密狗复制到其他加密狗使用。
3、数据采集页面数据分析分页及日常数据抓取相关注意事项
a) 对于普通页面的分页数据分析,一般规则是url中的参数会存在于html页面中。对于一些有搜索的,先用SQL注入测试一下是否可以一次直接暴露所有数据。如果是普通的直接url,提交对应的页面。
b) 对于某些aspx类型的网站数据抓取,一般aspx网站很多人会使用一些制作精良的dll文件,其中很多都会有session功能,即访问第二个一页数据,他会读取相关页面中隐藏的数据,输入一页数据,每一页的数据都不一样,只是模拟爬行。
c) 其他一些页面数据的抓取,有些是Ajax返回的数据,前台无法解析。捕获此类数据的最佳方式是直接用 java 解析 json 数据。找json可能很费劲。
d) 对于一些横竖分页数据的爬取,只能横向切换爬取,然后垂直爬取所有分页数据。一些横向数据的post参数可以自己定义,可以抓到数据。
4、 数据分析与清洗数据
对于一些数据清洗,可以使用Jsoup、xpath、regex进行数据分析和分析。有些数据需要一些算法来获取数据,可以通过二次数据页面分析方法获取数据。(针对不同的数据选择不同的解决方案)
5、 用户限制和ip限制的解决方案
对于用户受限的数据抓取程序,只能通过时间间隔来掌握网站的频率抓取数据,解决用户登录问题。对于多用户登录和ip查看程序抓取数据,也可以申请多个账号进行抓取。ip限制取的方法可以冒充谷歌IP取数据,使用ADSL拨号方式取数据。这需要很长时间。其他方式可以购买代理ip和高保真代理数据抓取。
6、 下载和编码注意事项
对于普通爬虫,一般使用url的数据流下载相关文档解析word和excel,一般使用POI来达到效果。对于pdf,一般使用PDFParser来分析。有的会造成乱码,大部分是InputStream等造成的。一般用utf-8\gbk请求时,检查请求的头信息,相应修改代码。一些 网站 需要使用字节。为了解决乱码。有些下载需要修改请求头信息才能下载。
对于一些定制化的数据采集,只能编写定制的采集方案,统一*敏*感*词*中心分发下载,实现分布式数据采集。(注*部分网站不能使用分布式数据采集)。