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

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

[复制链接]
  • TA的每日心情

    2022-11-1 14:36
  • 签到天数: 1 天

    [LV.1]初来乍到

    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的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    633

    主题

    5173

    回帖

    6052

    积分

    管理员

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

    积分
    6052

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

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

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情

    2022-11-1 14:36
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    2

    回帖

    6

    积分

    助理工程师

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    633

    主题

    5173

    回帖

    6052

    积分

    管理员

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

    积分
    6052

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

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

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

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    861

    回帖

    1360

    积分

    荣誉开发者

    积分
    1360

    荣誉开发者卓越贡献油中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请求。
    回复

    使用道具 举报

  • TA的每日心情

    2022-11-1 14:36
  • 签到天数: 1 天

    [LV.1]初来乍到

    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

    主题

    861

    回帖

    1360

    积分

    荣誉开发者

    积分
    1360

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

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

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

    使用道具 举报

    发表回复

    本版积分规则

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