文章目录

  • 一、脚本介绍 && 网站分析
    • 1.1 获取视频列表
    • 1.2 发评论
  • 二、完整代码
  • 三、如何使用
  • 四、打包程序(百度网盘)

一、脚本介绍 && 网站分析

b站up主盗号,举报没用?
md,干他!

实现功能:在盗号up的所有视频下,每隔一段时间,发一条评论。

实现步骤

  1. 应该通过up主的mid获取全部视频列表。并且,视频列表是要即时更新的。
  2. 通过步骤1拿到的视频列表,发评论

mid,就是点进up主页,url的那串数字

比如这个b(我小号)的mid,就是网址里面的
https://space.bilibili.com/435951708/video
435951708
懂伐?

1.1 获取视频列表

首先,这是个动态网页(数据不在html里面,而是动态加载出来的)。所以需要解析真实地址抓取

通过
右键->检查->network->刷新网页->输入视频名字,再手动
可以找到,视频列表在一个json文件里面
接口:

https://api.bilibili.com/x/space/arc/search?mid=435951708&ps=30&tid=0&pn=1&keyword=&order=pubdate&jsonp=jsonp

pn表示翻页,ps表示一页显示的数量。如果那个b站up的视频需要翻页的话,可以用通过修改 ps 和 pn 的值,获取到全部视频。

1.2 发评论

在评论区,打开 检查->network,输入一条评论,点击发送

可以看到,抓到了个叫 add 的包。如果包太多,不好看,可以选中一个包,然后 ctrl+f 输入你发送的评论,找到 add 包

通过这个包,可以看到,发评论的接口就是

https://api.bilibili.com/x/v2/reply/add

然后发了个post请求,需要带上 user-agent,cookie
请求附加了个表单

oid 表示up主的mid,type是类型,比如文字,message就是发的内容。
最关键的是 csrf 这个参数。如果你改了密码,那么cookie改了,csrf也要改


二、完整代码

import requests
import json
import timeclass Bilibili:def __init__(self):self.headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36","referer":"https://space.bilibili.com/398579071?spm_id_from=333.337.0.0"}self.cookie()self.csrf_read()self.readInfo()self.refresh()# 读取cookiedef cookie(self):with open("cookie.txt", "r", encoding="utf-8") as f:cookie = f.read()self.cookies = {}for c in cookie.split(";"):a = c.split("=")self.cookies[a[0]] = a[1]# 读取 csrfdef csrf_read(self):with open("csrf.txt", "r", encoding="utf-8") as f:self.csrf = f.read().strip()# 读取 info,里面存了发的内容def readInfo(self):with open("info.json", "r", encoding="utf-8") as f:s = json.loads(f.read())self.times = s['times']self.message = s['message']# 写入记录,写入 info.jsondef writeInfo(self):data = {"times":self.times,"message":self.message}with open("info.json", "w", encoding="utf-8") as f:f.write(json.dumps(data, ensure_ascii=False))# 获取所有视频的bv号def videoList(self):result = []self.vListApi = "https://api.bilibili.com/x/space/arc/search?mid={}&pn=1&ps=25&index=1&jsonp=jsonp"r = requests.get(self.vListApi.format(self.mid), cookies=self.cookies, headers=self.headers).json()vlist = r['data']['list']['vlist']for each in vlist:result.append([each['bvid'], each['aid']])return result# 发送def send(self, result):self.sendApi = "https://api.bilibili.com/x/v2/reply/add"data = {'oid': '','type': '1','message': '','plat': '1','ordering': 'heat','jsonp': 'jsonp','csrf': self.csrf}for each in result:data['oid'] = each[1]data['message'] = self.message.format(self.times)r = requests.post(self.sendApi, headers=self.headers, cookies=self.cookies, data=data)try:print(r.json()['data']['success_toast'], end="\t")self.times += 1except:print(r.json()['message'], end="\t")# 发送异常,记录with open("log.txt", "a", encoding="utf-8") as f:f.write("发送失败:" + time.ctime() + "\n")f.write("bv号:" + each[0] + "\n")f.write("aid:" + str(each[1]) + "\n")f.write("-"*20 + "\n")f.write(json.dumps(r.json()) + "\n")f.write("*"*70 + "\n"*5)print(each[0], "\t", each[1])# 更新,方便程序在运行时,更新参数def refresh(self):with open("配置文件.json", "r", encoding="utf-8") as f:a = json.loads(f.read())self.stop = a['stop']if a['cookie更新']!=False or a['csrf更新']!=False:self.cookie()self.csrf_read()self.mid = a['mid']if a['writeInfo']==True:self.writeInfo()def run(self):while True:try:# 获取所有视频的 aid 和 bv 号result = self.videoList()# 发送self.send(result)except Exception as e:print(e)with open("log.txt", "a", encoding="utf-8") as f:f.write("异常:" + time.ctime() + "\n")f.write(str(e))f.write("*"*70)f.write("\n"*5)# 每隔几分钟发一次self.refresh()time.sleep(self.stop)if __name__ == '__main__':b = Bilibili()b.run()

三、如何使用


首先,请确保脚本目录下,有

cookie.txt
csrf.txt
info.json
配置文件.json

这4个文件
cookie.txt,csrf.txt
里面存放了 cookie 和 csrf。这个要在pc登录b站,然后找到复制过来。怎么找?看第上文。
info.json里面

{"times": 1008,
"message": "该博主是盗视频的,请勿上当受骗{}"
}

times表示次数,是个数字。作用:避免评论重复,发不出去。如果代码停了,显示请勿重复评论,修改 times 即可。times 在运行中也会自己更新,一般不需要手动改
message就是你要发的内容。加个花括号

配置文件.json

{"stop":300,"cookie更新": false,"csrf更新": false,"mid": 435951708,"writeInfo": true
}

stop 表示暂停时间。假如up有10个视频,stop是60,那么每隔1分钟,在10个视频下分别发一次。平均6秒一次

cookie更新 和 csrf 更新,如果你的cookie 或 csrf 失效了,比如运行脚本时你改了密码,别慌!把 cookie 或 csrf 改成 true,并把 cookie csrf 复制到 相应的 txt 文件即可

writeInfo 为 true,意思是,运行脚本时,把 info.json 实时更新进去

运行时,如果报错,会在终端输出错误,同时在 log.txt 中会记录完整报错


四、打包程序(百度网盘)

链接:https://pan.baidu.com/s/1oJSHdgBF8ZEScAOSaeBtHg
提取码:qj4s

咳咳,明示一下,点个关注

【python脚本】写一个刷b站评论区的脚本相关推荐

  1. 用python写一个用驼峰法来命名变量脚本

    用python写一个用驼峰法来命名变量脚本 前言 一.思路 1.用有道翻译来翻译变量名 2.获取剪切板内容 3.热键监听来执行程序 二.使用步骤 1.大致的使用方法 2.要用到的库 2.主方法 总结 ...

  2. python爬虫在线测试_Python爬虫的初步测试:在B站评论区爬虫,python,初试,取

    本次爬取目标是最近看的一个很喜欢的描改手书的评论区,链接: [幸运星]永远都想对战游戏的泉此方[永遠にゲームで対戦したいコナタン] 首先通过网页中f12使用网页开发工具找到评论区对应的html代码段: ...

  3. 大神教你如何给脚本写一个守护进程

    在我们日常运维中,写脚本监控一个进程是比较常见的操作,比如我要监控mysql进程是否消失,如果消失就重启mysql. 用下面这段代码就可以实现: #!/bin/shDate=` date '+%c'` ...

  4. 用shell脚本写一个猜数游戏

    用shell脚本写一个猜数游戏 最近用shell写的一个猜数游戏,包括4个不同难度,脚本如下: #作者:p_小王echo '欢迎来到猜数游戏!' while true doread -p '开始/退出 ...

  5. python restful api_用Python语言写一个restful API

    本文主要向大家介绍了用Python语言写一个restful API,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. """ package.modul ...

  6. B站评论区抽奖[python]

    Bili-Luckdog B站评论区抽奖工具 by - ALKEYSHENG 2020.5.21 第三方库requests Blog: i.2017.work Github项目: Bili-Lucky ...

  7. 30分钟用python+pyechart写一个近期深圳的疫情地点展示

    @[TOC]30分钟用python+pyechart写一个近期深圳的疫情地点展示 背景 最近(今天20220227),深圳的–疫--情–又严重起来了.深圳卫健委天天都有在发病例XX,居住XX,只看地址 ...

  8. Python来写一个童话故事

    Python来写一个童话故事 主题:冒险, 风格:惊险, 人物:男孩, 地点:海底. 循环遍历鱼列表中的每一条鱼 for fish in fishes:# 获取男孩和鱼的坐标和距离boy_x, boy ...

  9. python实现一个整数加法计算器_如何使用python编程写一个加法计算器-Python教程...

    一.关上idle.点击file,而后点击new file.这是创立一个新的文件. 新建一个文件之后,咱们输出第一行代码,应用print函数,正在屏幕上打印一句话,此中字符串要应用双引号,输出法要应用英 ...

最新文章

  1. 编程是一种对你的身体健康十分有害的工作
  2. 监控系统或者网站服务器的报警及复位,机房监控系统标准和常见故障
  3. android-Activity
  4. Qt 加载QML 文件的几种方式
  5. PostgreSQL在win7上安装详细步骤
  6. ROS与navigation教程——基本导航调整指南
  7. React开发(126):ant design学习指南之form中的自定义校验validator
  8. RMAN之REPORT命令
  9. Hadoop 源代码分析(二三)FSDirectory
  10. android卡片 弹簧滑动,一种通用式弹簧卡扣的制作方法
  11. dell2900服务器做系统,dell2900如何重装系统
  12. 如何解决移动端300ms延迟的问题
  13. 【GLSL教程】(七)逐像素的光照
  14. SAP云上自适应跨可用区高可用方案
  15. JDK、JRE、eclipse安装教程
  16. windows_关闭windows休眠功能
  17. jsp中四个作用域的区别
  18. 开发Android第一步,安装SDK 1.6, 模拟器及安装游戏
  19. Pyecharts - 数据可视化
  20. java多线程批量插入实战

热门文章

  1. 更改计算机硬盘名字,如何修改盘符 – 磁盘及光驱名称错乱,教你怎么更改回来...
  2. 英语单词大小序 c语言,C语言中的英语单词
  3. 华为账号怎么强制退出
  4. 怎么去掉linux里嘟嘟的难听声音!
  5. 关于劳动合同法,你可能不知道的三个细节
  6. B圈,链圈,CX圈的朋友注意了,拥有以下软件的都要发财
  7. java毕业设计花店管理系统(附源码、数据库)
  8. IDEA热部署插件Jrebel安装以及使用步骤
  9. 【69】十一看《天道》有感
  10. 超级干货 :最全算法学习资源汇总(附链接)