Limit7 / DouyinBarrageGrab

基于系统代理的抖音弹幕wss抓取程序,能够获取所有数据来源,包括chrome,抖音直播伴侣等,可进行进程过滤

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

📺 抖音弹幕监听器

🔉前文提要

  • Github(受网络影响,更新很可能不及时)大佬请移步 Gitee ,参与Issues讨论,QQ技术讨论群:
    • 群1: 819927029 (已满)
    • 群2: 789875441 (新建)
    • 注: (进群前请先⭐Star,并填入答案,用于排除行外人员,特殊原因请私聊我),之前因满员踢掉的群员可申请群2。
    • 开不起千人群😅
  • 发行版下载地址在这里,别下成源码包了!!,决定下载使用前请先仔细阅读文档,不要进群提问已经介绍到的问题
  • 💭 需要多直播间超长稳定连接自动私信(支持群组,单发,支持多账号切换),私信监听自动关注关注,粉丝群,作品点赞,评论监听直播间发弹幕获取榜单直播间,用户主页信息采集商品上架,连麦,PK等其他所有消息作品评论(支持图片)、 等功能的可以找我(QQ 1083092844)提供一些技术支持 (注:主要面向个人直播自动化,不面向恶意j流,不支持匿名直播间,想搞采集匿名的勿扰,加群也不会有人支持)
  • LiveIdea 支持dou音Web全自动化的本地WebApi服务。直播、引留解放双手,需要了解详情请加我
  • 支持接单,个人定制,dy相关优先,其他方面也可以找我帮忙转发定制,匿名直播间需求勿扰
  • 那年,我与TA不可告人的秘密😏

⛳近期更新

2024-05-16 v2.7.5

  1. [重要修复] 修复了弹幕轮询响应解析Payload读取报错的问题
  2. 修复了在记录弹幕日志房间实例存在空引用导致弹幕丢失的问题
  3. 修复了窗体初始化因控件可能导致的句柄出错的问题
  4. 修复在使用窗体的情况下,因跨线程调用抛出异常导致的弹幕断连问题

2024-05-14 v2.7.4

  1. 修复通过抖音号进入直播偶见获取不到Owner对象和WebRoomid的问题;
  2. 修复部分电脑启动提示 ‘字符串格式错误’ 导致无法启动的问题
  3. 2024.05.16 补丁: 修复在使用窗体的情况下,因跨线程调用抛出异常导致的弹幕断连问题

2024-04-26 v2.7.3 (需要升级版本,请先仔细阅读)

  1. 支持串口转发,详见下方说明串口转发
  2. 推送包字段更新
    1. 推送包添加 Onwer字段,用户描述主播基本信息,客户端应优先使用其中的SecUid或者Uid作为直播间标识
    2. [破坏性更新] WebRoomidRoomid 改为String类型
    3. 之前直播伴侣开播会导致WebRoomid为-1,现会抓取直播伴侣开播响应信息,并填充WebRoomid,但直播伴侣的WebRoomid设定为主播抖音号,需要根据进程名做判断,使用请注意

2024-03-10 v2.7.2

  1. [重要更新] 支持设置为轮询模式监听(见配置项forcePolling,直播伴侣尚未支持),比起ws更稳定,适合长时间监听
  2. 支持进入直播间画面自动暂停
  3. 优化礼物连击判定规则,可区分出可连击的礼物,进一步避免礼物数量推送不准确的问题,并新增字段:
    1. Combo 礼物是否可连击
    2. ImgUrl 礼物图像地址
    3. ToUser 送礼目标
  4. roomId过滤改为 WebRoomid 过滤(仅支持已经被缓存的直播间,对直播伴侣可能无效)
  5. 添加“关闭代理.bat” 批处理脚本,见根目录或者上方文件,便于无法上网时双击执行
  6. 更多介绍请查看底下新增配置项

2023-11-23 v2.7.0

  1. 修复了因抖音版本升级导致的WebRoomId获取不到的问题,并更近了正则表达式尽量兼容后续的变更
  2. 添加了winfrom窗体,功能有限,默认隐藏
  3. 支持了控制台隐藏,推送器弹幕类型过滤,日志弹幕类型过滤,弹幕文件日志 (见配置文件)
  4. 支持了更多的ws命令,见 Command.cs

2023-11-04 v2.6.9

  1. 修复了因抖音版本升级导致的WebRoomId获取不到的问题,并做了多重处理

2023-09-24 v2.6.8

  1. 添加了上游代理支持,现在可以将无关的请求转发到其他的代理地址!详见下方配置说明upstreamProxy
  2. 内部添加了webRoomid 的缓存映射,只要打开直播间地址即可缓存WebRoomId和Roomid的映射关系,WebRoomId现已添加至ws弹幕流数据中!,需要注意直播伴侣端提取的弹幕当前不会有该字段,除非在开播后打开浏览器访问一次你的直播间
  3. MsgPack 现在添加了进程名字段ProcessName

2023-08-17 v2.6.7

  1. [重要更新] 支持浏览器/客户端 http 弹幕监听,这也会解决原先版本因网络波动使抖音客户端弹幕获取方式降级,而获取不到弹幕导致必须刷新页面重新连接的问题。
  2. [重要更新] 原先的web/客户端 页面无操作检测逻辑因官方js变动而失效,本次更新修复且完善了该功能,现在会定时模拟全局按键、绕过js检测逻辑、置空Websocket.close 方法三重手段尽量避免断开连接。你也可以直接修改直播页脚本而无需重新编译源码。
  3. ws连接现在默认监听在0.0.0.0地址,可以从其他客户端连接。
  4. 代理端口现在可选择不占用系统代理,便于某些用户直接使用浏览器代理获取弹幕(启动时携带参数,例如:"chrome.exe --proxy-server=127.0.0.1:8827",也可以在浏览器快捷方式-目标 引号之后附加该参数)

🖼️控制台截图

控制台截图

😎介绍及配置

介绍

  • 基于系统代理抓包打造的抖音弹幕服务推送程序,它能够获取电脑上所有抖音弹幕来源数据,主要包括三种来源:浏览器进程抖音客户端抖音直播伴侣。它可以监听弹幕点赞关注送礼进入直播间直播间统计粉丝团系列消息,你可使用它做自己的直播间数据分析,以及弹幕互动游戏,语音播报等。
  • 程序中有基本的配置可以过滤弹幕进程,弹幕数据通过Websocket服务推送,其他程序只需接入ws服务器就能接收到到弹幕数据消息
  • 若下载发行版,则该配置文件在根目录下的 WssBarrageService.exe.config 可自主配置,配置后需要重新启动程序
<!--配置更改后重启才能生效-->
<appSettings>
  <!--过滤Websocket数据源进程,可用','进行分隔,程序将会监听以下进程的弹幕信息-->
  <add key="processFilter" value="直播伴侣,douyin,chrome,msedge,QQBrowser,360se,firefox,2345explorer,iexplore" />
  <!--Websocket监听端口-->
  <add key="wsListenPort" value="8888" />
  <!--true:监听在0.0.0.0,接受任意Ip连接,false:监听在127.0.0.1,仅接受本机连接-->
  <add key="listenAny" value="true" />
  <!--系统代理端口-->
  <add key="proxyPort" value="8827" />
  <!--上游代理地址,例如开启了系统代理,但是需要将其他无关请求转发到VPN工具中,例如:127.0.0.1:11223,不要带http://-->
  <add key="upstreamProxy" value="" />
  <!--在控制台输出弹幕-->
  <add key="printBarrage" value="true" />
  <!--要在控制台打印的弹幕类型,多个使用','分隔,(空代表不过滤) 1[普通弹幕],2[点赞消息],3[进入直播间],4[关注消息],5[礼物消息],6[统计消息],7[粉丝团消息],8[直播间分享],9[下播]-->
  <add key="printFilter" value="" />
  <!--要推送的弹幕消息类型,多个使用','分隔,同上-->
  <add key="pushFilter" value="" />
  <!--要日志记录的弹幕消息类型,多个使用','分隔,同上-->
  <add key="logFilter" value="1,2,4,5,6,7,8" />
  <!--要进行过滤的Web房间ID,多个使用','分隔,根据缓存来过滤的,直播伴侣不支持 -->
  <add key="webRoomIds" value="940152769375" />
  <!--是否启用系统代理,若设置为false 则需要在程序手动指定代理地址 -->
  <add key="usedProxy" value="true" />
  <!--开启内置的域名过滤,设置为false会解包所有https请求,cpu占用很高,建议在无法获取弹幕数据时调整 -->
  <add key="filterHostName" value="true" />
  <!--已知的弹幕域名列表 ','分隔  用作过滤规则中,凡是webcast开头的域名程序都会自动列入白名单-->
  <add key="hostNameFilter" value="" />
  <!--隐藏控制台-->
  <add key="hideConsole" value="false" />
  <!--弹幕文件日志-->
  <add key="barrageFileLog" value="false" />
  <!--显示窗体-->
  <add key="showWindow" value="false" />
  <!--进入直播间自动暂停播放-->
  <add key="autoPause" value="true"/>
  <!--强制启用轮询模式获取弹幕 (对于容易断开连接或者更加追求稳定的直播间,可以启用这个开关,虽然响应速度不如WebSocket,但是绝对稳定!)-->
  <add key="forcePolling" value="false"/>
  <!--弹幕轮询间隔,当 forcePolling 为 true 时生效 (毫秒,1000毫秒=1秒,不建议小于1000毫秒,太小可能会被封IP,值越小,弹幕流越丝滑,对于观众多的直播间可以改小)-->
  <add key="pollingInterval" value="3000"/>
  <!--禁用直播页浏览器脚本缓存 (如果需要确保脚本每次能够正常匹配替换,则启用它,可能会损失一定的页面加载速度)-->
  <add key="disableLivePageScriptCache" value="true"/>
  <!--指定要发送的COM串口 格式:'COM1:9600' 代表用COM1发送,波特率9600,若不需要使用串口抄送服务请留空 -->
  <add key="comPort" value="" />
  <!--启用自定义消息过滤,启用后可去程序根目录 Scripts/engine/comPortFilter.js 调整过滤规则 -->
  <add key="useComPortFilter" value="true" />
</appSettings>

推送数据格式

  • 弹幕数据由WebSocket服务进行分发,使用Json格式进行推送,见项目 BarrageMessages.cs,如需调整请克隆项目后参照 message.proto 进行源码修改调整,文件包含所有弹幕相关数据结构,可前往ws在线测试网站,连接 ws://127.0.0.1:8888 进行测试

使用方法

  1. 管理员身份启动本程序,第一次启动会提示安装自签名证书,程序启动后挂在后台不要关,不然再打开会监听不到正在进行中的直播弹幕。
  2. 打开浏览器进入任何直播间进行测试,没有问题再启动直播伴侣
  3. 如果需要对接自己的应用程序,请先了解 WebSocket ,然后进行对接,可前往这里测试

🔌 串口转发

  • 配置串口:见配置文件comPort,配置发送串口以及波特率,不填则不启用
  • 串口报文自定义:可在根目录Scripts/engine/comPortFilter.js 根据自己的需求配置转发报文,提供了一定的Bit转换函数,详见其注释

👨‍⚕️ 诊断排查

  • 启动后无法获取,排查清单

    1. 先判断自己的浏览器进程名称是否在配置文件列表中
    2. 程序启动后,检查系统代理有无正常打开,有可能修改注册表被其他杀毒软件拦截
    3. 检查程序是否以管理员身份启动
    4. 注意程序启动先后顺序(很重要),必须保证在进入直播间之前监听程序已在运行
    5. 检查代理端口是否与其他端口冲突,可尝试修改
  • 打开报错,排查清单

    • 通用处理方法:

      • 关闭杀毒软件,杀毒软件可能会阻止注册系统代理,访问端口号
      • 关闭Windows网络防火墙(设置-搜索) ,可能会阻止访问端口号
    • 以一种访问权限不允许的方式做了一个访问套接字的尝试

      • 可能是端口被占用了,请尝试前往配置文件将8888端口号修改为别的号码(1000~65535)
      • 关杀毒
    • 尝试执行未经授权的操作

      • 关杀毒
    • 以上都不行

  • 弹幕断连

    • 如果浏览器总是连接一段时间后,就在在控制台看不到弹幕了,优先使用Chrome 和 Edge 浏览器,其他浏览器(例如360浏览器) 可能会存在该问题

    • 尝试打开配置文件 forcePolling 选项,情况获取会有所改善

    • 其他可能是网络原因,或者直播间断连导致,正在想办法优化解决中。。。需要长时间连接可以找我使用其他方式,支持直连和轮询获取方式

  • 程序关闭后无法上网

    • 这是因为本程序运行时会占用系统代理,不正确的关闭方式可能会导致系统代理未能正确关闭,请前往找到 系统设置-网络和Internet-代理-使用代理服务器 并关闭它即可,也可管理员运行关闭代理.bat

🎲 实践指南

  • 隐藏控制台:见配置文件 hideConsole

  • 远程控制程序:例如远程关闭,隐藏/显示控制台,启用/关闭系统代理,可发送Json数据包 {"Cmd":xx,"Data":xx} 到ws推送地址,数据格式详见: Command.cs

  • 启用弹幕文件日志:见配置文件 barrageFileLog,启用后,抓到弹幕会记录在根目录 logs/弹幕日志 文件夹中,支持类型过滤,见logFilter 配置项

  • UI界面: 见配置文件 showWindow (做的仓促,功能简陋)

  • 上游代理:一般用于自己有 代理工具/代理服务器,希望在使用本程序时访问外网不受到影响,见配置文件项upstreamProxy 将它改为你代理工具的代理地址

  • 局域代理: 若是只需要监听了浏览器,且不想占用系统代理,可创建一个浏览器快捷方式,打开属性,并在exe文件路径后附加启动参数,--proxy-server=127.0.0.1:8827,例如:"C:\\xxx\chrome.exe" --proxy-server=127.0.0.1:8827

  • 直播间区分: 推送包含 Onwer字段,用户描述主播基本信息,客户端可以优先使用其中的SecUid或者Uid作为直播间标识,若使用WebRoomid则需要注意直播伴侣进程需要特殊处理,因为直播伴侣推送的WebRoomid是用户的抖音号。RoomId只能作为场次标识,每次开播都会不一样,不可用作直播间唯一区分

  • 直播间地址: 冷知识,使用https://live.douyin.com/<抖音号> 也可以进入主播直播间

⚠️特别注意

  1. 程序只能监听到握手之后的ws数据包,例如先进入直播间或开启直播再打开本程序是无法监听到的,所以请保持程序后台运行

  2. 由于打开系统代理需要自动检查/生成证书,所以程序需要管理员身份运行

  3. 只有到达客户端的弹幕数据才能被接收,被抖音服务器过滤的弹幕是抓不到的

  4. 关闭程序后若有无法上网的情况请检查: 网络和internet设置-->代理-->使用代理服务器 ,关闭即可,也可管理员运行关闭代理.bat

📢鸣谢

  • 请施舍一个 ⭐Start ,请及时订阅更新

  • 如果你也是开发者,欢迎提交你所擅长的语言的对接Demo,照拂新手朋友

⚖️免责声明

  • 本程序仅供学习参考,不得用于商业用途,不得用于恶意搜集他人直播间用户信息!
  • 请详细阅读免责声明条款后进行使用

🍻支持一下?

开源不易啊老板

微信支付

About

基于系统代理的抖音弹幕wss抓取程序,能够获取所有数据来源,包括chrome,抖音直播伴侣等,可进行进程过滤

License:MIT License


Languages

Language:C# 98.4%Language:JavaScript 1.5%Language:Batchfile 0.1%