上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

b站直播自动切换粉丝牌的问题

[复制链接]

该用户从未签到

1

主题

2

回帖

6

积分

助理工程师

积分
6
发表于 2022-11-1 14:36:20 | 显示全部楼层 | 阅读模式
悬赏2油猫币未解决

在做一个在进入直播间时自动切换粉丝牌的脚本,主要功能都写好了没问题。但在我进入直播间别人看我还是没换的粉丝牌(弹幕姬进场提示),能不能在打开直播间的时候换粉丝牌再让弹幕姬显示我进来?不知道有没有大佬刚好写过或者有研究?

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[i].trim();
        if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
    }
    return "";
};

  • TA的每日心情
    擦汗
    2024-12-18 11:32
  • 签到天数: 194 天

    [LV.7]常住居民III

    731

    主题

    6235

    回帖

    6981

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6981

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-11-1 15:31:06 | 显示全部楼层
    可以对页面点击进入直播间做一些监听?感觉
    监听点击某个直播间先切换牌子再触发点击事件
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    回帖

    6

    积分

    助理工程师

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

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-12-18 11:32
  • 签到天数: 194 天

    [LV.7]常住居民III

    731

    主题

    6235

    回帖

    6981

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6981

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-11-1 15:56:14 | 显示全部楼层
    edu 发表于 2022-11-1 15:53
    这样要对多个入口的按钮监听吧,对于直接输入网址进入到无解

    如果直接输入网页的话
    就要取决于弹幕姬显示是不是本地发送到服务端
    还是服务端根据你请求自动显示了
    如果前者你可以做一下xhr拦截
    后者可以试试自动切换完重新刷新网页?
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    883

    回帖

    1381

    积分

    荣誉开发者

    积分
    1381

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-11-1 21:09:02 | 显示全部楼层
    抓包看了一下,弹幕姬可能是通过这个请求判断你进场的:
    https://api.live.bilibili.com/xl ... dex/roomEntryAction
    在这个请求发生之前换好粉丝牌可能有用,所以重点是脚本的运行时机,越早越好,那个__NEPTUNE_IS_MY_WAIFU__的定义是写在html里的,把运行时机定在document-body应该比较合适。如果不行的话,考虑document-start,然后劫持xhr请求。
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    回帖

    6

    积分

    助理工程师

    积分
    6
    发表于 2022-11-2 00:27:27 | 显示全部楼层
    cxxjackie 发表于 2022-11-1 21:09
    抓包看了一下,弹幕姬可能是通过这个请求判断你进场的:
    https://api.live.bilibili.com/xlive/web-room/v1 ...

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    883

    回帖

    1381

    积分

    荣誉开发者

    积分
    1381

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

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

    试一下在document-start换粉丝牌有没有用,就是不读取__NEPTUNE_IS_MY_WAIFU__,直接换一个固定id,能换的话就有办法,不能的话脚本应该就解决不了了。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表