自动获取房产车位信息、抢车位
新房子入驻没多久又要买车位,上海的车位真是贵呀。而且车位数有限,想要喜欢的车位还要抢!车位都要抢!车位是通过微信小程序在线抢,提前一天给一次模拟的机会。看中了一个距离住的地方比较近的车位,有多个人加入了收藏。为了保险起见,程序员动手了。。。
为了减少不必要的麻烦,过程着重描述技术点,不加截图。最终如愿的抢中了喜欢的车位!
工具及软件环境
- iPhone8p
- MacBook Pro
- Charles4.2.7
- jdk1.8
- IDEA
- SpringBoot-下面附加maven信息
- Jsoup-下面附加maven信息
前期准备
- 手机、电脑,Charles抓包工具;
- Charles设置HTTPS协议数据包抓包配置,手机网络走电脑代理;
- 验证手机微信小程序数据包是否被Charles抓取成功,抓取成功;
分析抢车位页面逻辑
- 进入页面查看接口请求方式;
- 查看数据传输形式;
- 检查是否存在安全验证逻辑;
- 分析返回的数据,关联接口的请求参数获取位置<返回的数据可能有header中的cookie信息、页面中的csrf-token信息、还有其他的一些身份token>。这里建议把所有的内容都打印出来,查看是否存在有用的信息<关联业务的非公共报头信息>;
提取关键信息
- 关键的接口请求地址、接口请求形式、接口参数传递方式、请求头部信息;
- 接口请求参数的获取方式、标记id信息,分析完成后开始编码;
1 | //全部待选信息 |
代码部分:
maven依赖
1 | <parent> |
封装RestTemplate绕行SSL证书验证
1 | public RestTemplate restTemplate() { |
确认选购
1 | /** |
确认选房参数
1 | /** |
房间详情获取确认token
1 | /** |
待抢车位
1 | /** |
构造请求参数
1 | public MultiValueMap<String, Object> getHourseListValueMap() { |
请求、解析封装
1 | public String van(String url, HttpMethod method, MultiValueMap<String, Object> parameters) { |
构建请求报头
1 | public HttpHeaders getVankHeaders() { |