淘宝大家问 java爬虫练习淘宝大家问的爬取分析
需求: 由于公司需要做商品的大家问统计,就需要爬取几个店铺商品的大家问问题统计,接下来就看看爬取的步骤。
首先给出链接: 淘宝商品链接.
一个手机移动端的h5页面,后面的itemId根据自己的需要替换即可,请求过后,我们通过分析chrome里面的请求做进一步的解释
1.两个常规的GET请求
一下子就找到了请求的接口已经参数,接下来就是对请求参数的分析
appKey:淘宝请求appKey,不变
t:当前时间timestamp
sign:参数加密后的标识
api:请求的淘宝接口
v: 1.0(版本,不变)
ecode:0
AntiCreep:true
type: jsonp(跨域)
dataType: jsonp
callback: mtopjsonp1(主要用来控制返回分页数据)
data: {"itemId":"547642483558","wdjType":"1","size":5,"topicId":"0","pageNum":"1"}
别的信息都是好获取的,接下来的任务就是处理这个sign的加密了。
初步判断是通过请求参数的拼接然后通过算法来做sign的加密的,既然是页面段加密,那么就肯定存在于js之中,分析了一波请求,找到了这个js:
https://g.alicdn.com/mtb//??lib-flexible/0.3.2/flexible.js,lib-promise/3.0.1/polyfillB.js,lib-windvane/2.1.8/windvane.js,lib-login/1.5.8/login.js,lib-mtop/2.3.6/mtop.js,lib-env/1.9.9/env.js?v=34810523_40364,ctrl+f 找一下,直接就发现了sign的踪迹。
立马格式化一下js,研究分析加密方法,得出了加密规则
sign = MD5(cookieToken+appKey+now+data)
now 就是上面的t,data就是上面的data,appKey就是上面的appKey,那么这个cookieToken是什么呢?
分析一波js,找到了是函数里面从c= this.options cookieToken=d.token,对应于我们请求的request里面的token,那么我就要去request里面找了
处理一下之后,就可以获取cookie的token了:565dc2a459b86016a0d0e51fc04290cb
这样一来,基本上请求的问题解决了
但是直接模拟请求之后会发现报错:令牌缺失,研究了一下,是cookie缺少了,如果你省事,可以手动获取之后,吧request里的cookie全部贴在你的请求里面,这样请求都不会报错了
得到了数据了,接下来就可以做处理了。。。。。。。由于淘宝有反爬虫,需要你登陆后再做爬虫操作,不然会提示你登录,所以手动把登录后的cookie贴一下还是有效的