这是崔斯特的第二十二篇原创文章
采集方案策略设计
在群里看到有人询问饿了么的参数,正好感兴趣,就来时间一番。
这里引用下大佬的一段话:
首先大的地方,我们想抓取某个数据源,我们要知道大概有哪些路径可以获取到数据源,基本上无外乎三种:
- PC端网站
- 针对移动设备响应式设计的网站(也就是很多人说的H5, 虽然不一定是H5);
- 移动App
原则是能抓移动App的,最好抓移动App,如果有针对移动设备优化的网站,就抓针对移动设备优化的网站,最后考虑PC网站。因为移动App基本都是API很简单,而移动设备访问优化的网站一般来讲都是结构简单清晰的HTML,而PC网站自然是最复杂的了;
针对PC端网站和移动网站的做法一样,分析思路可以一起讲,移动App单独分析。
其实很多网页都有移动端,像微博,我知道这三个:
- weibo.com
- weibo.cn
- m.weibo.cn
最简单的当然是第二种了,对于今天的受害者——饿了么来说,当然,首选也是移动端。
饿了么抓包分析
这里抓包工具选择Fiddler,这里不讲如何配置,具体参考 用Fiddler对Android应用进行抓包
下面打开手机的饿了么,原本以为会有数据,结果,竟然是这样
去询问了专业人士,了解了有些应用不允许用户抓包,会有相应的限制。好吧,这就能难倒我了吗??
当我切换到发现类目下,发现有奇怪的提示
在疯狂点击继续访问后,我终于可以正常访问了。
那么就可以在Fiddler中查看对应的数据了。这里直接把接口展示出来:饿了么接口
浏览器直接打开,貌似没有啥验证
具体分析里面的参数
|
|
有4个参数, offset
和 limit
就很常见了,翻页和每页的数据,至于 latitude
和 longitude
仔细观察就知道,经纬度嘛,把它该修改为你想采集的位置的经纬度就好。
抓包分析之后,接下来采集数据就很简单了,数据字段标识:
food_id
是商品ID,接口是:https://www.ele.me/restapi/shopping/v1/foods?food_ids%5B%5D=712859937
打开此链接就是商品详情内容
可爱的小笼包
restaurant_id
是店铺ID,接口 https://www.ele.me/shop/157458556
打开就是店铺详情页,当然,也有移动端:https://h5.ele.me/shop/#id=157458556
这样进行商品采集就比较轻松了。
好饿,容我先点个外卖。
微信公众号抓包分析
既然都看了饿了么,那也来看看微信吧。
使用Fiddler抓出来的curl命令
|
|
直接在浏览器中打开,会提示错误
|
|
使用postman分析,最后Python的代码是
|
|
这个时候的参数有
|
|
目前还不清楚这些参数的作用,再抓一个试试
|
|
估计就是 __biz
和 appmsg_token
这两个参数对应不同的公众号
对了,上面的代码会出现一个问题
|
|
解决方法
|
|
App的分析
App类使用的工具是Fidder,手机和电脑在一个局域网内,先用Fidder配置好端口,然后手机设置代理,ip为电脑的ip,端口为设置的端口,然后如果手机上请求网络内容时,Fidder会显示相应地请求,那么就ok了,分析的大体逻辑基本一致,限制会相对少很多,但是也有几种情况需要注意:
- 加密,App有时候也有一些加密的字段,这个时候,一般来讲都会进行反编译进行分析,找到对应的代码片段,逆推出加密方法;
- gzip压缩或者base64编码,base64编码的辨别度较高,有时候数据被gzip压缩了,不过Charles都是有自动解密的;
- https证书,有的https请求会验证证书, Fidder提供了证书,可以在官网找到,手机访问,然后信任添加就可以。
最后,祝大家圣诞节快乐