edu 发表于 2022-11-1 14:36:20

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:06

可以对页面点击进入直播间做一些监听?感觉
监听点击某个直播间先切换牌子再触发点击事件

edu 发表于 2022-11-1 15:53:53

李恒道 发表于 2022-11-1 15:31
可以对页面点击进入直播间做一些监听?感觉
监听点击某个直播间先切换牌子再触发点击事件 ...

这样要对多个入口的按钮监听吧,对于直接输入网址进入到无解

李恒道 发表于 2022-11-1 15:56:14

edu 发表于 2022-11-1 15:53
这样要对多个入口的按钮监听吧,对于直接输入网址进入到无解

如果直接输入网页的话
就要取决于弹幕姬显示是不是本地发送到服务端
还是服务端根据你请求自动显示了
如果前者你可以做一下xhr拦截
后者可以试试自动切换完重新刷新网页?

cxxjackie 发表于 2022-11-1 21:09:02

抓包看了一下,弹幕姬可能是通过这个请求判断你进场的:
https://api.live.bilibili.com/xlive/web-room/v1/index/roomEntryAction
在这个请求发生之前换好粉丝牌可能有用,所以重点是脚本的运行时机,越早越好,那个__NEPTUNE_IS_MY_WAIFU__的定义是写在html里的,把运行时机定在document-body应该比较合适。如果不行的话,考虑document-start,然后劫持xhr请求。

edu 发表于 2022-11-2 00:27:27

cxxjackie 发表于 2022-11-1 21:09
抓包看了一下,弹幕姬可能是通过这个请求判断你进场的:
https://api.live.bilibili.com/xlive/web-room/v1 ...

并不行,我把所有带了直播间id的请求在浏览器中拦截了,依旧会提示进场

cxxjackie 发表于 2022-11-2 22:22:44

edu 发表于 2022-11-2 00:27
并不行,我把所有带了直播间id的请求在浏览器中拦截了,依旧会提示进场

试一下在document-start换粉丝牌有没有用,就是不读取__NEPTUNE_IS_MY_WAIFU__,直接换一个固定id,能换的话就有办法,不能的话脚本应该就解决不了了。
页: [1]
查看完整版本: b站直播自动切换粉丝牌的问题