一、前言
本篇风格会偏向讲故事,来记录整个发现问题,解决问题的过程。具体的知识点总结放在后一篇。
前段阵子被分配了一个工单,要求抓取另一个险企B的数据。想着应该不会比上一家A麻烦了,险企A抓取数据过程中有几次请求是跨域的,很多数据都是由ajax动态请求到的,要分析js代码,模拟请求。
稍微观察了一下险企B的页面源代码,发现所有操作除了表单提交,其他都是get请求。而且模拟登录时不需要输验证码。美滋滋。。就是有2点麻烦的地方:
- 险企B是通过专线访问的,只有借助代理公司的网络才能访问,公司在代理公司那放了台电脑,然后我在公司远程连接那台电脑进行开发的。操作会有延时,有点卡。
- 险企B的网站看起来很古老,只支持ie8及以下的浏览器访问,chrome、火狐啥的就更打不开了。所以抓包都靠fiddler了,页面解析元素定位就只能靠旧版本的ie开发工具,
好吧,虽然不便,但是还是不怎么影响开发过程。
然后在一开始,访问第一个登录页面的时候我就被卡住了。我用原来的工具类发了一个get请求去获取登录页面,结果报错了。
二、错误1
debug:
Unsupported record version SSLv2Hello
javax.net.ssl.SSLException: Unsupported record version SSLv2Hello
at sun.security.ssl.InputRecord.readV3Record(Unknown Source)
at sun.security.ssl.InputRecord.read(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:275)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:254)
at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:123)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
at org.apache.http.impl.execchain.Protoc