开源一个半成品项目 某团商品抓取

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

地址:github.com/xiaoxiuniqu...

背景

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

比如我要开一个店,比如水果店,成人用品店。这样的店有一个特征就是店里面的大部分的商品都是标品(就是不怎么需要修改),其实正常来说只需要对标到其他的店铺直接 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,这个我比较熟悉这个,其他的也可以

json 复制代码
      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 证书,这个流程应该是可以自己完成的 但是我现在没做,嫌麻烦,大家自己用的时候也可以先自己手动安装证书,自己测试通之后再自己安装证书

全局代理问题

在启动中间人抓包之后,还有一个需要为电脑设置全局代理

json 复制代码
networksetup -setwebproxy Wi-Fi 127.0.0.1 8003;
networksetup -setsecurewebproxy Wi-Fi 127.0.0.1 8003;

MAC 下面的命令是这个样子的。

我不接着做的原因

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

相关推荐
IT_陈寒3 分钟前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端
逝水无殇21 分钟前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
YIAN44 分钟前
从手写 Agent 工具到 MCP 协议:一文搞懂大模型跨进程跨语言工具调用
后端·agent·mcp
小兔崽子去哪了1 小时前
Docker 删除镜像后磁盘空间没有释放?
后端·docker·容器
高明珠2 小时前
麒麟 V10 SP1 排查实录:ttyS5 每 10 秒莫名收到一批报文,元凶是 eGTouchD
后端
卷无止境2 小时前
Python FFI 技术深度解析:ctypes、cffi 与 pybind11 的性能差异与实践挑战
后端·python
ServBay2 小时前
AI Gateway 是什么?为什么每个平台都在做
后端·aigc·ai编程
SamDeepThinking2 小时前
Vibe Coding最重要的是Spec
后端·程序员·ai编程
掘金_答案2 小时前
上线那天,一个 ConcurrentHashMap 差点送走我的 AI 客服——3 天排查 JVM 血泪史
java·后端·架构
妙码生花2 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(三十三):权限规则管理器
后端·go·gin