本文仅供学习,请勿用于任何非法用途!
美团外卖目前有h5和app两个端,再对比两端的加密方式后,h5相对会简单些,毕竟接口和css加解密的方式都能通过chrome调试获得,需要花时间攻克的主要是对ip和账号的限制。
美团外卖h5地址 美团外卖
一、ip的问题
花了不少时间去找好用的代理ip,由于需要在登录状态获取数据,因此ip必须是长效的,否则频繁更换ip,可能账号很快就会被封掉,还尝试过手机热点/云主机,但是很快都被美团识别到,到目前为止还没有找到稳定好用的代理ip,如果你有好用的,不妨交流下。目前想到的方案:
1、找朋友或兼职,在不同的ip运行程序
2、在朋友或兼职的电脑上搭建代理,自己实现代理ip功能。
二、账号问题
为了这次任务搞了几个手机号注册了美团,最好用这些账号下个1单外卖,因为有时验证会让你填入最近一次的订单号,有时是让你填身份证里生日的8位数字。然后尽量账号与ip配对使用,避免混用,否则也容易被封。其次就是短信验证的问题,账号少的情况下,手动输输算了,如果的多的话,可以考虑买个猫池或者自己用adb去实现短信的自动输入。
三、定位问题
美团外卖只能搜索附近店铺,因此比如你想获得全上海的的全家超市,你是不可能通过一次搜索全部获得,必须不断的变换位置进行搜索,而美团在你访问h5页面的过程中会不断获得你的位置信息,同时会用ip定位获得你的位置,因此在你设置了设备的位置后,还需要拦截美团的主动定位请求,否则你每次搜索只能搜到你ip附近的店铺。下面是localstorge中会影响到定位的key
下面是美团主动发出的定位请求
四、css反爬
相对于大众点评的svg方式,美团要简单不少,直接解析woff就可以,首先找到文字对应的unicode,然后去woff文件里拿对应的文字即可,有位朋友针对这类加密专门提供了一个接口,如果你懒得研究可以单独联系我获取(记的要收藏并点赞本文哦)。
五、客户端的人机识别
套路和大众点评差不多,代码都是一样,你的设备信息(屏幕长宽,可视区域长宽、设备名称、webdriver等)会被加密随每个请求发送给美团,鼠标移动的轨迹也会随请求上报,因此通过纯接口的方式获取点评和美团已经不太现实,只能借助一些自动化测试工具加载网页进行获取,获取过程的操作也要拟人,且频率不能太高。
补充
针对评论区的提问补充
商家电话虽然没有渲染,但是在商家信息接口是返回电话信息的,在shopPhone字段内
{
"tip": "以下为本店全部商品,不在列表中则不售卖;加热等特殊需求请备注。\n为环保助力,外卖商品不主动提供一次性餐具,建议自备餐具或按需选择。\n如果您对我们的服务满意,请给五星哟~",
"sold": "0",
"isBrand": 1,
"serTime": [
"09:00-21:00"
],
"shopLat": 31205455,
"shopLng": 121629095,
"brandMsg": "该商户为品牌商户",
"dpShopId": 0,
"shopName": "便利蜂(张江盛银大厦店)",
"shopStar": 0,
"mtWmPoiId": "1000024226129925",
"onlinePay": 1,
"shopPhone": [
"4000001234"
],
"invoiceMsg": "",
"licencePics": [],
"shopAddress": "上海市上海市浦东新区盛夏路666号、银东路122号盛银大厦6幢1层04单元",
"activityList": [
{
"actDesc": "满39减2;满49减5;满69减10;满99减18",
"actName": "",
"actType": 0,
"iconUrl": "http://p0.meituan.net/activityconfig/6087b33fd42d14fd94e899084aaef56d1720.png",
"iconText": ""
},
{
"actDesc": "折扣商品5.72折起",
"actName": "",
"actType": 0,
"iconUrl": "http://p0.meituan.net/activityconfig/3da2d9c7a4ddf89e4e71cfdfff168c391088.png",
"iconText": ""
},
{
"actDesc": "实际支付39元返3元商家代金券",
"actName": "",
"actType": 0,
"iconUrl": "http://p0.meituan.net/xianfu/652eea4034250563fe11b02e3219ba8d981.png",
"iconText": ""
},
{
"actDesc": "该商家支持在线支付",
"actName": "",
"actType": 0,
"iconUrl": "http://p1.meituan.net/xianfu/32200c3060be7903f62c9076308619ee734.png",
"iconText": ""
}
],
"shopEnvTitle": "商家环境",
"invoiceSupport": 0,
"shopReviewTitle": "点评评价",
"poiQualificationInfo": {
"url": "https://i.waimai.meituan.com/c/foods_safe_doc/index.html?wm_poi_id=1000024226129925",
"show": true,
"content": "查看食品安全档案"
},
"overtimePaymentSupported": false
}