多语言展示
当前在线:1296今日阅读:19今日分享:20

使用httpClient对带有验证码的网站写爬虫

使用httpClient对一个https类型且带有验证码类型的网站破解登陆,并获取到网站登陆后的内容
工具/原料
1

eclipse

2

httpClient相关工具包

方法/步骤1 准备工作
1

引用相关jar包,包括httpClient4.5及处理json相关的jar工具包

2

按f12可以切换到谷歌浏览器开发者模式,我们后面模拟发送请求需要使用到该调试工具的network选项卡,现在准备完毕

方法/步骤2 用程序生成验证码产生
1

通过分析可以看到验证码是通过一个get请求,请求中带有一个当前时间的时间戳

2

因为该网站是https类型的,所以需要定制一个任何情况下都返回true的TrustStrategy,可以封装一个绕过未知证书的方法。如下图所示。

3

根据2封装的方法,得到一个绕过https检测的CloseableHttpClient对象,由于发送请求验证码的get请求后,返回的是一个InputStream,所以需要封装一个将该流解析成子节数组的方法。

4

使用当前时间戳,生成获取验证码的url,然后模拟出一个get请求,将网站响应得到的InputStream流通过io写入到本地磁盘,保存为一张图片。这个时候可以通过JFrame写个登陆界面,可以将刚才生成的图片加载到登陆界面。这一步得到验证码便可以完成。

方法/步骤3 模拟登陆
1

通过查看该网站的源码,其登陆过程在js中进行处理,登陆采取的post请求,其登陆url和使用到的表单数据较为清晰

2

使用上述url,及表单数据模拟出一个post请求,验证码可以成功登陆了。

推荐信息