最近爬虫的同事离职,帮忙处理一些爬虫的工作,正好易车获取车款的接口变了,在此记录一下接口参数的破解过程。
随便进入任意一个车型的参数配置页面,例如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)
}