一个朋友让我帮他做一个软件,基本的功能需求就是帮美团商家处理店铺导入问题
比如我要开一个店,比如水果店,成人用品店。这样的店有一个特征就是店里面的大部分的商品都是标品(就是不怎么需要修改),其实正常来说只需要对标到其他的店铺直接 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 的方式上传
因为我们需要进行中间人抓包,所以在你的电脑上需要安装好 HTTPS 证书,这个流程应该是可以自己完成的 但是我现在没做,嫌麻烦,大家自己用的时候也可以先自己手动安装证书,自己测试通之后再自己安装证书
在启动中间人抓包之后,还有一个需要为电脑设置全局代理
networksetup -setwebproxy Wi-Fi 127.0.0.1 8003;
networksetup -setsecurewebproxy Wi-Fi 127.0.0.1 8003;
MAC 下面的命令是这个样子的。
主要一个是没有太多相关的测试数据,朋友只提供了一个商家店铺,实际上它里面的类别还是挺多的,不太好测试, 再者就是里面的需要核对的数据太多了,再没有足够的测试数据的情况下,就比较麻烦了,调试起来就比较烦人,还有,也是最重要的原因,就是没有预算,再见。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.