最近爬虫的同事离职,帮忙处理一些爬虫的工作,正好易车获取车款的接口变了,在此记录一下接口参数的破解过程。
随便进入任意一个车型的参数配置页面,例如2021款朗逸
打开Chrome
浏览器的F12
调试模式,经排查找到config_new_param
接口,其返回的信息正是我们需要的车款信息
python
直接调用此接口,带上相同的GET
参数,接口返回错误信息headers
,再调用此接口,带上相同的GET
参数,接口返回正常数据headers
如下headers
,10分钟就过期了,很明显x-timestamp
是请求时间,x-sign
是跟时间相关的签名js
代码,搜索x-sign
,最终找到其签名的逻辑,如下图所示
3. 使用Python
复制这个逻辑,调用成功
params = {
'cid': 508,
'param': "{\"cityId\":201,\"carId\":\"" + str(car_id) + "\"}"
}
ts = int(time.time() * 1000)
text = 'cid={}'.format(params['cid'])
text += '¶m={}'.format(params['param'])
text += '19DDD1FBDFF065D3A4DA777D2D7A81EC'
text += str(ts)
sign = hashlib.md5(text.encode('utf-8')).hexdigest()
headers = {
'x-platform': 'pc',
'x-sign': sign,
'x-city-id': '201',
'x-timestamp': str(ts)
}