python爬虫--饿了么逆向分析

关于淘系的数据抓取,可能涉及到的一个参数就是sign,sign的值是有一个计算公式的,基于已有的经验,知道这种参数一般多是会保存在js文件里的。

(1)在淘宝页面,打开开发者工具(F12),进行调试,一个个查找在哪里出现的sign的赋值

…忽略搜索过程,可以发现在sign的计算关键代码在mtop.js 中,也就是

(https://g.alicdn.com/mtb/lib-mtop/2.3.16/mtop.js)

如图,可以看到sign的具体计算方法,也就是下图的j


(2)确定具体方法,直接贴出来代码如下:

j = h(d.token + “&” + i + “&” + g + “&” + c.data)

if (d.H5Request === !0) {

var

f = “//” + (d.prefix ? d.prefix + “.” : “”) + (d.subDomain ? d.subDomain + “.” : “”) + d.mainDomain + “/h5/” + c.api.toLowerCase() + “/” + c.v.toLowerCase() + “/”, g = c.appKey || (“waptest” === d.subDomain ? “4272” : “12574478”), i = (new

Date).getTime(), j = h(d.token + “&” + i + “&” + g + “&” + c.data), k = { jsv: x, appKey: g, t: i, sign: j }, l = { data: c.data, ua: c.ua }; Object.keys©.forEach(function (a) {

“undefined” == typeof

k[a] && “undefined” == typeof

l[a] && (k[a] = c[a])

}), d.getJSONP ? k.type = “jsonp” : d.getOriginalJSONP ? k.type = “originaljsonp” : (d.getJSON || d.postJSON) && (k.type = “originaljson”), d.querystring = k, d.postdata = l, d.path = f

}

(3)根据(2)中的函数方法,可以看出来是由一些参数通过&连接起来的。通过上面的代码,可以看出来

3.1 token是从cookie里面取出来的。

在无cookie状态下去访问该请求:https://acs.m.taobao.com/h5/mtop.taobao.wsearch.h5search/1.0/##,对方会返回关键Cookies信息,_m_h5_tk和_m_h5_tk_enc,接下来会用到。那么token就是_m_h5_tk的值得下划线前面的值

3.2 i 是时间戳,精确到毫秒

3.3 data 是传入的参数(通过request传入的参数值,包括搜索的关键词等)

PS:断点调试

建议使用谷歌内核,可以在函数附近添加断点,如下图可以看到,然后右边可以监视每个变量的值,从而可以知道此时的变量值,继而验证我们的是否算的正确


饿了么数据采集与淘宝类似,只要破解sign 生成方式就能成功采集到数据,欢迎加1420849833 沟通交流学习爬虫 

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容