开源一个半成品项目,思路是完整的,不过我自己不太想接着做下去,分享出来给有需要的人。

280 天前
 notot

开源一个半成品项目,思路是完整的,不过我自己不太想接着做下去,分享出来给有需要的人。项目地址 https://github.com/xiaoxiunique/mt-store-proxy

背景

一个朋友让我帮他做一个软件,基本的功能需求就是帮美团商家处理店铺导入问题

比如我要开一个店,比如水果店,成人用品店。这样的店有一个特征就是店里面的大部分的商品都是标品(就是不怎么需要修改),其实正常来说只需要对标到其他的店铺直接 Copy 一份过来就行。如果从 0 开始去录入,对于大部分商家而言都非常的困难,可能有的人电脑都不太会。

然而就拿成人用品这个品类来说,大概会有 500 多个商品,还有各种各样的分类,如果人工操作的话确实非常麻烦,因为这样的品类完全没必要自己操作,毕竟产品不是自己生产的,大部分产品的东西都非常标准。

这样 需求就产生了

大概方案

处理这个软件需求的初步方案分为下面几步

  1. 登录商家后台账号,获取商家登录信息,主要是 cookie
  2. 抓取需要复制数据商家的店铺商品信息,包括活动,营销图信息
  3. 将对应的店铺的商品上传到自己的店铺

分析完大概方案基本上可以确定这是一个 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 下面的命令是这个样子的。

我不接着做的原因

主要一个是没有太多相关的测试数据,朋友只提供了一个商家店铺,实际上它里面的类别还是挺多的,不太好测试, 再者就是里面的需要核对的数据太多了,再没有足够的测试数据的情况下,就比较麻烦了,调试起来就比较烦人,还有,也是最重要的原因,就是没有预算,再见。

3450 次点击
所在节点    分享创造
12 条回复
kkk9
280 天前
参与过类似项目。最后结果,如果脚本能解决这类问题,那代运营机构早就赚翻了。还是大学生更性价比
notot
280 天前
@kkk9 是的,不过其实现在市面上有两款这样的项目。基本思路就是上面这样,只是他们积累比较多,也基本上达到可用状态
sss15
280 天前
我看起来这个是一个一次性的开店工具,既然是一次性的,我也就开店用一次,用户为什么会为之付费,所以只能为爱发电了,商业模式可能还没找到出路
Imindzzz
280 天前
我还以为这种功能平台自带有呢,甚至跨平台导入都应该自带,
Gooon
280 天前
做个油猴插件可行吗
notot
280 天前
@sss15 你错了,其实用户很多的,很多老板开业的时候 我可以花 100 块钱,让人帮我直接处理好商品,我直接销售就可以了,为什么不做这么模式呢,难道要他自己花几天甚至 10 几天来一个一个的上传 SKU 吗,你是老板你会怎么选
notot
280 天前
@Imindzzz 官方只会处理,同类型,同品牌的门店的商品导入问题,但是不会给你口子,直接就去导入其他店铺的数据。
notot
280 天前
@Gooon 不行,因为这样拿到不到核心的 对应店铺的数据,必须通过抓包的方式进行实现
CDuXZMAPgHp1q9ew
280 天前
低频, 获客成本高
a463640216
278 天前
我们早就做过了,最后放弃了,原因就是现在代理人根本不可行,你多用几次号就无了,美团现在风控太严格了
banzige
278 天前
这种数据一般下游供应商会提供啊。
iSk2yroot
132 天前
如果知道对方店铺的 ID ,业务员好像可以直接复制

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1024903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX