天猫评论采集分析

170 阅读1分钟

项目中需要采集天猫的商品评论,在这里,把我分析爬取评论的过程记录下来。

url :https://detail.tmall.com/item.htm?abbucket=2&id=553245827881&rn=cb3c068010c5bd0536cd72b3c6a99e1b&skuId=3416073220988&spm=a1z10.5-b-s.w4011-22146789590.91.53e812ecJGwYtT

1. 限制

从页面上可以看,只能看前3页的内容。这不能满足项目的需要。就找了找有没有其它入口。在下方看到二维码,扫描二维码,是手机端的入口。在手机上,可选择打开APP查看。这不打开APP,在手机浏览器中查看。就发现 h5 入口。

https://h5.m.taobao.com/app/rate/www/rate-list/index.html?auctionNumId=626295498723

在这个url, 可以查看前10000条记录,可以选它。

2. js 逆向

在chrome 中 打开开发者模式,切个 network 选项卡。从中看到一个请求,

https://h5api.m.taobao.com/h5/mtop.taobao.rate.detaillist.get/6.0/?jsv=2.7.0&appKey=12574478&t=1691198028769&sign=e3ceffa2358e0520068cc275c318f34d&api=mtop.taobao.rate.detaillist.get&v=6.0&ecode=1&type=jsonp&timeout=20000&dataType=jsonp&sessionOption=AutoLoginOnly&jsonpIncPrefix=haloMtop&callback=mtopjsonphaloMtop4&data=%7B%22showTrueCount%22%3Afalse%2C%22auctionNumId%22%3A%22553245827881%22%2C%22rateType%22%3A%22%22%2C%22searchImpr%22%3A%22-8%22%2C%22expression%22%3A%22%22%2C%22orderType%22%3A%22%22%2C%22pageSize%22%3A10%2C%22pageNo%22%3A2%7D

这条请求中,有评论的数据。有几个关键参数: appKey, data,t,sign. 其中sign 是加密验证参数,data是翻页变量,t是时间戳,appKey 是用户key. 从参数中可以看出,这个request 是需要用户登录的。 下面就是从源码中获取这 4 个参数。 切到 source 选项卡, 点右上角中的 search, 搜 sign ,从检索结果中一个个浏览,找到mtop.js 文件。

mtop.js.png

h(d.token + '&' + i + '&' + g +'&'+c.data)

这是sign的加密函数。找到 h().

屏幕快照 2023-09-10 下午6.49.23.png

如衅,是天猫写的散列函数,没有用md5,SHA32。

3. mitmproxy

h5api.m.taobao.com 这个页面通过向下滚动加载下一页,可以通过在selenium 中控制页面滚动,用mitmdump 把加载的数据存入数据库。

  • 首先启动浏览器,指定端口,user-data 目录,这样登录以后,可以记下用户的cookie 等信息。
  • 在python 中 通过端口连接浏览器,通过js 让页面向下滚动。
  • 用mitmproxy 写脚本页面,过滤请求,并解析数据,存入数据库。