首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >b站自动评论脚本,b站up主自动回复,哔哩哔哩私信评论插件【python】

b站自动评论脚本,b站up主自动回复,哔哩哔哩私信评论插件【python】

原创
作者头像
用户11749621
发布2025-07-25 10:01:31
发布2025-07-25 10:01:31
3470
举报

下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1891

这个完整的B站自动化交互系统包含四个模块:主功能模块、配置文件、主程序入口和实用工具。系统实现了自动评论、UP主自动回复和私信功能,并考虑了防封禁策略。使用时需要替换config.py中的Cookie和CSRF Token等配置信息。

代码语言:txt
复制

import requests
import json
import time
import random
from typing import Dict, List, Optional

class BilibiliAuto:
    def __init__(self, cookies: str, csrf_token: str):
        self.session = requests.Session()
        self.headers = {
            'User-Agent': 'Mozilla/5.0',
            'Cookie': cookies,
            'Referer': 'https://www.bilibili.com/'
        }
        self.csrf_token = csrf_token
        self.base_url = 'https://api.bilibili.com'
        
    def get_video_info(self, bvid: str) -> Dict:
        url = f"{self.base_url}/x/web-interface/view?bvid={bvid}"
        response = self.session.get(url, headers=self.headers)
        return response.json()
    
    def post_comment(self, bvid: str, message: str) -> Dict:
        url = f"{self.base_url}/x/v2/reply/add"
        data = {
            'oid': self.get_video_info(bvid)['data']['aid'],
            'type': 1,
            'message': message,
            'plat': 1,
            'csrf': self.csrf_token
        }
        response = self.session.post(url, headers=self.headers, data=data)
        return response.json()
    
    def get_replies(self, bvid: str) -> List[Dict]:
        url = f"{self.base_url}/x/v2/reply/main?oid={self.get_video_info(bvid)['data']['aid']}&type=1"
        response = self.session.get(url, headers=self.headers)
        return response.json()['data']['replies']
    
    def reply_to_comment(self, bvid: str, root_id: int, parent_id: int, message: str) -> Dict:
        url = f"{self.base_url}/x/v2/reply/add"
        data = {
            'oid': self.get_video_info(bvid)['data']['aid'],
            'type': 1,
            'root': root_id,
            'parent': parent_id,
            'message': message,
            'plat': 1,
            'csrf': self.csrf_token
        }
        response = self.session.post(url, headers=self.headers, data=data)
        return response.json()
    
    def send_private_message(self, target_id: int, message: str) -> Dict:
        url = f"{self.base_url}/x/msg/web/send"
        data = {
            'msg[sender_uid]': self.get_self_info()['data']['mid'],
            'msg[receiver_id]': target_id,
            'msg[msg_type]': 1,
            'msg[content]': json.dumps({'content': message}),
            'csrf': self.csrf_token
        }
        response = self.session.post(url, headers=self.headers, data=data)
        return response.json()
    
    def get_self_info(self) -> Dict:
        url = f"{self.base_url}/x/space/myinfo"
        response = self.session.get(url, headers=self.headers)
        return response.json()
    
    def auto_reply_to_comments(self, bvid: str, reply_rules: Dict[str, str]) -> None:
        while True:
            try:
                replies = self.get_replies(bvid)
                for reply in replies:
                    if reply['member']['mid'] != self.get_self_info()['data']['mid']:
                        for keyword, response in reply_rules.items():
                            if keyword in reply['content']['message']:
                                self.reply_to_comment(
                                    bvid,
                                    reply['rpid'],
                                    reply['rpid'],
                                    response
                                )
                                break
                time.sleep(60)
            except Exception as e:
                print(f"Error: {e}")
                time.sleep(300)

                

                # B站登录信息配置
COOKIES = "您的B站Cookie"
CSRF_TOKEN = "您的CSRF Token"

# 自动回复规则
REPLY_RULES = {
    "你好": "你好呀!感谢支持~",
    "谢谢": "不客气,欢迎常来看看!",
    "加油": "谢谢鼓励,我会继续努力的!",
    "up主": "我是自动回复机器人,主人马上就会看到你的消息~"
}

# 自动评论内容池
COMMENT_POOL = [
    "视频很棒,支持一下!",
    "内容很有价值,感谢分享!",
    "学到了新知识,谢谢UP主!",
    "这个视频太有趣了,哈哈哈",
    "期待下一期视频!"
]

# 私信发送配置
PRIVATE_MESSAGE_TARGETS = [
    12345678,  # 用户ID1
    87654321   # 用户ID2
]
PRIVATE_MESSAGE_CONTENT = "您好,我是B站UP主,感谢您的关注和支持!"

 bilibili_auto import BilibiliAuto
from config import COOKIES, CSRF_TOKEN, REPLY_RULES, COMMENT_POOL, PRIVATE_MESSAGE_TARGETS, PRIVATE_MESSAGE_CONTENT
import time
import random

def main():
    # 初始化B站自动化实例
    bilibili = BilibiliAuto(COOKIES, CSRF_TOKEN)
    
    # 目标视频BV号
    target_bvid = "BV1GJ411x7h7"
    
    # 自动评论功能
    print("开始执行自动评论...")
    comment = random.choice(COMMENT_POOL)
    result = bilibili.post_comment(target_bvid, comment)
    print(f"评论结果: {result}")
    
    # 自动私信功能
    print("\n开始执行自动私信...")
    for target_id in PRIVATE_MESSAGE_TARGETS:
        result = bilibili.send_private_message(target_id, PRIVATE_MESSAGE_CONTENT)
        print(f"给用户{target_id}发送私信结果: {result}")
        time.sleep(10)  # 避免发送过快
    
    # 自动回复功能
    print("\n开始执行自动回复监控...")
    bilibili.auto_reply_to_comments(target_bvid, REPLY_RULES)

if __name__ == "__main__":
    main()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档