目录
一.生成websocket的url
1.查看网络面板拿到url,分析url
打开一个直播间,F12查看网络面板,可以看到websocket的url,简单分析三个关键参数room_id,user_unique_id,signature,如下图

2.分析url
1.获取room_id,user_unique_id
这两个参数都在房间号首页请求的html里,直接正则表达式获取就行了,如下图


然而postman直接get首页,却返回的一段加密的html,还有两个cookie:__ac_nonce和ttwid,如下图

尝试寻找原因:浏览器无痕模式保留日志跟踪一下请求,发现访问了两次首页,如下图
第一次返回加密的html,返回了两个的Cookie:__ac_nonce和ttwid
第二次返回了真实房间数据,请求时,发送了__ac_nonce和__ac_signature两个Cookie,很明显,应该是第一次返回的html有相关的js,生成了__ac_signature这个cookie

查看加密的html里的js,果然是根据__ac_nonce生成__ac_signature的cookie,如下图。

关键就是解密window.byted_acrawler.sign()函数计算结果值就可以了。__ac_nonce应该是个随机数,实测用一个固定值就行,但每次生成的__ac_signature不一样
2.获取signature
js里查找生成signature的代码,如下图,简单概括:e里存着数据,t是数组,循环t从e里按顺序取值然后拼接一个字符串o,用o进行MD5得到a,然后调用window.byted_acrawler.frontierSign()函数计算出signature的值

其中数组t的值如下,关键值room_id,user_unique_id在上面已经已经获取到,很容易生成MD5
["live_id", "aid", "version_code"