开源一个半成品项目,思路是完整的,不过我自己不太想接着做下去,分享出来给有需要的人。项目地址 https://github.com/xiaoxiunique/mt-store-proxy
一个朋友让我帮他做一个软件,基本的功能需求就是帮美团商家处理店铺导入问题
比如我要开一个店,比如水果店,成人用品店。这样的店有一个特征就是店里面的大部分的商品都是标品(就是不怎么需要修改),其实正常来说只需要对标到其他的店铺直接 Copy 一份过来就行。如果从 0 开始去录入,对于大部分商家而言都非常的困难,可能有的人电脑都不太会。
然而就拿成人用品这个品类来说,大概会有 500 多个商品,还有各种各样的分类,如果人工操作的话确实非常麻烦,因为这样的品类完全没必要自己操作,毕竟产品不是自己生产的,大部分产品的东西都非常标准。
这样 需求就产生了
处理这个软件需求的初步方案分为下面几步
分析完大概方案基本上可以确定这是一个 electron 软件,纯 web 方案实现难度也比较高,需要和美团的爬虫团队对抗处理各种人机验证,环境监测,滑块。属实没必要。
基本方案就是 ,通过 electron 的 webview 获取到 cooike
在 electron 里面启动好 代理软件,比如 anyproxy, http-mimt-proxy, 这样的,并自动配置好 https 证书,以及电脑的代理端口。 在微信里面,大概电脑端的美团店铺的微信小程序,然后浏览商品,浏览过程中,通过 代理软件保存商品信息,等到后面进行上传。
避免后续商品冲突,在上传之前需要先删除掉所有的原店铺里面的所有商品分类,以及对应的商品信息。
然后上传商品
这个没什么好说基本思路就是 通过 webview 打开登录的页面,然后在页面里面 监听是否登录成功,登录成功之后获取页面里面的 cookie 并发送给 main process 进行保存。
具体的方案可以监测登录后的 localStorage 1s 检测一次,有就说明登录成功了。
因为成本问题,所以采用这种抓包的方式,如果直接通过调用接口的方式,需要逆向代码,成本太高。
这里我直接使用了 anyproxy,这个我比较熟悉这个,其他的也可以
async beforeSendResponse(req, res) {
if (req.url.indexOf("wx-shangou.xx.com") === -1) {
return null;
}
console.log(req.url);
if (req.url.indexOf("/mtweapp/v1/poi/sputag/products") !== -1) {
const r = JSON.parse(Buffer.from(res.response.body).toString());
const projectList = r.data.product_spu_list;
win?.webContents.send("product-list", projectList);
return null;
}
if (req.url.indexOf("/mtweapp/v1/poi/food") !== -1) {
const r = JSON.parse(Buffer.from(res.response.body).toString());
const tags = r.data.food_spu_tags;
win?.webContents.send("tags", tags);
return null;
}
return null;
}
具体的方案就是 监听对应接口的 response 请求,然后保存具体的值。
有几种方案,一种是通过 excel 的方式上传 可以将商品整理成美团官方规定的格式用 excel 的方式进行上传,不过根据我的实验,只有小部分标准商品可以,大部分的商品还是有问题的。
第二种方法就是直接通过后台的接口进行上传,这个在后台操作的时候可以看出来,对应的就是补起参数就可以了。但是也是比较麻烦
目前店铺登录,抓取竞品数据,清除店铺数据,包括上传,其实都 OK 了,就是上传数据不太完成,可能还需要仔细分析一下 包,核对一下数据才行。
因为前期测试的原因,所以我是保存了店铺的固定的 cookie 然后模拟登录的,实际上调试就可以使用这样的方式, 因为美团的后台的 cookie 其实很长时间都不会更新,真正在测试的时候,使用我上面注视掉的代码就可以。
因为我们需要进行中间人抓包,所以在你的电脑上需要安装好 HTTPS 证书,这个流程应该是可以自己完成的 但是我现在没做,嫌麻烦,大家自己用的时候也可以先自己手动安装证书,自己测试通之后再自己安装证书
在启动中间人抓包之后,还有一个需要为电脑设置全局代理
networksetup -setwebproxy Wi-Fi 127.0.0.1 8003;
networksetup -setsecurewebproxy Wi-Fi 127.0.0.1 8003;
MAC 下面的命令是这个样子的。
主要一个是没有太多相关的测试数据,朋友只提供了一个商家店铺,实际上它里面的类别还是挺多的,不太好测试, 再者就是里面的需要核对的数据太多了,再没有足够的测试数据的情况下,就比较麻烦了,调试起来就比较烦人,还有,也是最重要的原因,就是没有预算,再见。
1
kkk9 235 天前
参与过类似项目。最后结果,如果脚本能解决这类问题,那代运营机构早就赚翻了。还是大学生更性价比
|
3
sss15 235 天前
我看起来这个是一个一次性的开店工具,既然是一次性的,我也就开店用一次,用户为什么会为之付费,所以只能为爱发电了,商业模式可能还没找到出路
|
4
Imindzzz 235 天前 via Android
我还以为这种功能平台自带有呢,甚至跨平台导入都应该自带,
|
5
Gooon 235 天前
做个油猴插件可行吗
|
6
notot OP @sss15 你错了,其实用户很多的,很多老板开业的时候 我可以花 100 块钱,让人帮我直接处理好商品,我直接销售就可以了,为什么不做这么模式呢,难道要他自己花几天甚至 10 几天来一个一个的上传 SKU 吗,你是老板你会怎么选
|
9
CDuXZMAPgHp1q9ew 235 天前
低频, 获客成本高
|
10
a463640216 233 天前
我们早就做过了,最后放弃了,原因就是现在代理人根本不可行,你多用几次号就无了,美团现在风控太严格了
|
11
banzige 233 天前
这种数据一般下游供应商会提供啊。
|
12
iSk2yroot 87 天前
如果知道对方店铺的 ID ,业务员好像可以直接复制
|