爬取菜鸟裹裹的数据

菜鸟裹裹{:target=”_blank”}是阿里旗下的一个物流数据的整合平台,数据准确、及时.前几天在关注菜鸟和顺丰的争端,因为在前一天我刚刚爬到菜鸟上面的快递数据,第二天看到二者出现了摩擦,在菜鸟上面已经查不到顺丰的信息了,还好有国家邮政局出面了解决,不得不为我们是社会主义点个赞。这次爬数据经历点波折,个人觉得阿里做的安全性还是很专业的。下面开始介绍如何找到突破口把数据拿到的。


 声明:此文只做技术交流,请不要恶意攻击,当然我也相信阿里的技术,不可能轻意被攻破的。     

本文Demo下载:

菜鸟裹裹Demo(可能已经不能用)
快递100数据Demo

监控Ajax请求

  • 打开Chrome的控制台中的NetWork后,点击上面的查询按钮,查看请求记录,如下使用一个顺丰的物流号查询出对应的信息和请求:

    shufeng

    对应的请求为:

NetWorkInfo

NetWorkInfo

参数原始为:v=1.0&api=mtop.cnwireless.CNLogisticDetailService.wapqueryLogisticPackageByMailNo&appKey=12574478&t=1496714756142&callback=mtopjsonp5&type=jsonp&sign=2ac43c025e94399c2ee2b7e0240f8303&data=xxxx

分析Url参数

从上面的请求和响应结果可以看出,请求的参数为:v, api, appKey, t, callback, type, sign, data,其中很明显sign是加密的,appKey在多次请求验证后发现是一个固定的值,callback是回调的参数,这个我们用不到,直接给一个任意值就可以,根据callback参数和type=jsonp,可以推测出,菜鸟使用的跨域回调的方法来进行数据传输的,这里也在js代码里面已经有验证了,采用的是动态追加