b站直播自动切换粉丝牌的问题
在做一个在进入直播间时自动切换粉丝牌的脚本,主要功能都写好了没问题。但在我进入直播间别人看我还是没换的粉丝牌(弹幕姬进场提示),能不能在打开直播间的时候换粉丝牌再让弹幕姬显示我进来?不知道有没有大佬刚好写过或者有研究?js0基础,代码是边学边写凑出来的
```
// ==UserScript==
// @namespace https://space.bilibili.com/
// @name 哔哩哔哩切牌牌
// @description DDDDDDDDDDDDDD
// @author 触角
// @version 1.0
// @grant GM_xmlhttpRequest
// @match https://live.bilibili.com/*
// ==/UserScript==
//获取当前直播间粉丝牌的id.
var 粉丝牌Id = window.top.__NEPTUNE_IS_MY_WAIFU__.roomInfoRes.data.anchor_info.medal_info.medal_id;
//获取csft,用于提交时的验证.
var csrf = getCookie("bili_jct");
//切换粉丝牌
GM_xmlhttpRequest({
url: 'https://api.live.bilibili.com/xlive/web-room/v1/fansMedal/wear&;#39;,
method: 'POST',
data: 'medal_id=' + 粉丝牌Id +'&csrf_token=' + csrf + '&csrf=' + csrf,
headers: {
"content-type": "application/x-www-form-urlencoded"
},
timeout: 10000,
async: true,
onload: (xhr) => {
var json = JSON.parse(xhr.responseText)
var msg = JSON.stringify(json.message)
//alert("粉丝牌状态:" + msg);
},
},)
//获取cookie
function getCookie(cname){
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca.trim();
if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
}
return "";
};
``` 可以对页面点击进入直播间做一些监听?感觉
监听点击某个直播间先切换牌子再触发点击事件 李恒道 发表于 2022-11-1 15:31
可以对页面点击进入直播间做一些监听?感觉
监听点击某个直播间先切换牌子再触发点击事件 ...
这样要对多个入口的按钮监听吧,对于直接输入网址进入到无解 edu 发表于 2022-11-1 15:53
这样要对多个入口的按钮监听吧,对于直接输入网址进入到无解
如果直接输入网页的话
就要取决于弹幕姬显示是不是本地发送到服务端
还是服务端根据你请求自动显示了
如果前者你可以做一下xhr拦截
后者可以试试自动切换完重新刷新网页? 抓包看了一下,弹幕姬可能是通过这个请求判断你进场的:
https://api.live.bilibili.com/xlive/web-room/v1/index/roomEntryAction
在这个请求发生之前换好粉丝牌可能有用,所以重点是脚本的运行时机,越早越好,那个__NEPTUNE_IS_MY_WAIFU__的定义是写在html里的,把运行时机定在document-body应该比较合适。如果不行的话,考虑document-start,然后劫持xhr请求。 cxxjackie 发表于 2022-11-1 21:09
抓包看了一下,弹幕姬可能是通过这个请求判断你进场的:
https://api.live.bilibili.com/xlive/web-room/v1 ...
并不行,我把所有带了直播间id的请求在浏览器中拦截了,依旧会提示进场 edu 发表于 2022-11-2 00:27
并不行,我把所有带了直播间id的请求在浏览器中拦截了,依旧会提示进场
试一下在document-start换粉丝牌有没有用,就是不读取__NEPTUNE_IS_MY_WAIFU__,直接换一个固定id,能换的话就有办法,不能的话脚本应该就解决不了了。
页:
[1]