爬取websocket(ws)数据1
哈咯哈咯,这里是失踪人口回归了,这段时间有些懈怠了,要重新拾起学习的激情啊,那么马上带来的是有关数据银行、策略中心、达摩盘的画像数据抓取。先拿数据银行来说,在自定义分析-查看报告-人群透视中可以看到用户画像,抓包后可以发现是ws传输的数据,那么该怎么抓下来呢
先看看ws这边headers的参数,Sec-WebSocket-Key通过base64.b64encode(os.urandom(16)).decode(‘utf-8’).strip()生成其他就没啥了
主要来看提交的参数,
bizParam中的databankCrowdId是人群ID,可以在网址上找到,captcha亲测可以不用管,似乎并不检测,看着还挺复杂
condition是需要post链接https://databank.tmall.com/api/ecapi获取返回的数据,需要携带CROWD_ID(人群ID),DATE(指定日期,这个日期很微妙,我这边选择的是昨天的日期,大家可以自己品),然后在headers中有个x-csrf-token参数是从页面上获取的
tags就是画像的字段名,一次只能放9个哦
rid是时间戳+随机值,通过str(int(time.time() * 1000)) + str(self.count).zfill(2)实现,count起初为0,ws每发送一次消息count=count+2
网上关于ws的抓取框架应该是很多的,我这边也是随便选了一种,就开干了,其他也没啥可以说的,流程就是先on_open发送第一次消息,获取了以后,接着在on_message中接收数据,同时发送第二次消息,on_message中接收第二次的数据,同时发送第三次消息…以此类推,这边有个需要注意,数据银行针对查询会有压力限制,会返回error编码50040200,也就是它太卡了,数据出不来,你可以time.sleep(几分钟)再继续
最后效果如下,抓了某个人群包所有的画像
更多推荐








所有评论(0)