社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

网上喷子太多,用Python开发弹幕轰炸程序怒怼“网络喷子”

python • 6 年前 • 410 次点击  


人生苦短,我用Python,所以让我们一起来学习Python吧!

互联网时代,说话没有了限制,于是网络上的“喷子”也是越来越多!

动之以情晓之以理都解决不了这么“喷子”,那么咱们就以其人之道还治其人之身!


环境:

Python3.6+ Windows

模块:

# 导入一个第三请求库
import requests
# 导入一个时间模块
import time

第一步:获取实时弹幕

1.1 定一个需要送的表单

def post_info_data():
   # 1.2 打包一些基本信息
   from_data = {
       'csrf_token': '',
       'roomid': 10185039,
       'visit_id': '92cvaa6up88w'}
   return from_data

1.2 发送我们已经打包好的数据

def post_data_url(data):
   # 要数据到这个URL
   url = 'https://api.live.bilibili.com/ajax/msg'
   # 发送数据得到响应
   response = requests.post(url, data=data)
   # 一层一层的通过键值对的键找到我们的
   data = response.json()['data']['room']
   # 定义一个列表保存最近的10条弹幕数据
   itemcont = []
   # 遍历我们从字典中所有的键
   for items in data:
       itemcont.append(items['text'])
   # print(response)
   return itemcont[-1]

用一个变量接收打包好的数据

post_data = post_info_data()
# 用一个循环来无限获取
while True:
   # 睡眠1秒,再接着运行
   time.sleep(1)
   # 得到最新的一条弹幕信息
   cont = post_data_url(post_data)
   print(cont)
# print(post_data)

第二步: 发送实时弹幕

2.1要找到我们发送弹幕的URL

# 所需要发送的数据
def post_data_cont():
   post_data = {
       'color': '16777215',
       'csrf_token': '',
       'fontsize': 25,
       'mode': 1,
       'msg': '嗨',
       'rnd': '1527404803',
       'roomid': '10185039'}
   return post_data

向服务器发送信息

def post_url_data(data):
   # 向这个地址,提交表单,表单中包含了我们需要发送的弹幕信息
   url = 'https://api.live.bilibili.com/msg/send'
   # cookie 用于服务器记录我们的登录信息
   cookie = {'Cookie' : 'buvid3=9D5AF13F-81C3-44D2-ADBF-7E9EE187FC0A13512infoc; LIVE_BUVID=AUTO5515224216712884; rpdid=kxxkikiqkwdosiipioxpw; finger=c650951b; Hm_lvt_8a6e55dbd2870f0f5bc9194cddf32a02=1527401127,1527404662; sid=4r7a6x2c; fts=1527401995; DedeUserID=321074467; DedeUserID__ckMd5=17d6f40c8a8668f0; SESSDATA=c30fb9e3%2C1529994023%2Ca56e1407; bili_jct=57cef56872eb3d2938ee9b66edd0bacd; _dfcaptcha=f6bf50348608fde1876dc53faba7f655; Hm_lpvt_8a6e55dbd2870f0f5bc9194cddf32a02=1527404804'}
   # 向服务器提交我们的个人信息,以及需要发送的表单内容和发送到什么地址
   response = requests.post(url, cookies=cookie, data=data)
   # print(response)
   # 检测我们发送的状态,是不是正常发送
   if response.status_code == 200:
       print(response.json())
   pass
form_data = post_data_cont()
post_url_data(form_data)
print(form_data)

第三步: 组合第一步和第二步

3.1步

def post_info_data(roomid):
   # 3.2 打包一些基本信息
   from_data = {
       'csrf_token': '57cef56872eb3d2938ee9b66edd0bacd',
       'roomid': roomid,
       'visit_id': '92cvaa6up88w'}
   return from_data

3.2 发送我们已经打包好的数据

def post_data_url(data):
   # 要数据到这个URL
   url = 'https://api.live.bilibili.com/ajax/msg'
   # 发送数据得到响应
   response = request.post(url, data=data)
   # 一层一层的通过键值对的键找到我们的
   data = response.json()['data']['room']
   # 定义一个列表保存最近的10条弹幕数据
   itemcont = []
   # 遍历我们从字典中所有的键
   for items in data:
       # 把得到的弹幕信息添加到列表中
       itemcont.append(items['text'])
   # print(response)
   return itemcont[-1]

3.3步




    
def post_data_cont(post_msg,roomid):
   post_data = {
       'color': '16777215',
       'csrf_token': '57cef56872eb3d2938ee9b66edd0bacd',
       'fontsize': 25,
       'mode': 1,
       'msg': post_msg,
       'rnd': '1527404803',
       'roomid': roomid}
   return post_data

3.4 向服务器发送信息

def post_url_data(data):
   # 向这个地址,提交表单,表单中包含了我们需要发送的弹幕信息
   url = 'https://api.live.bilibili.com/msg/send'
   # cookie 用于服务器记录我们的登录信息
   cookie = {'Cookie': ''}
   # 向服务器提交我们的个人信息,以及需要发送的表单内容和发送到什么地址
   request.post(url, cookies=cookie, data=data)
   # print(response)
   # 检测我们发送的状态,是不是正常发送
# 主函数,(程序入口)
def main():
   roomid = input('请输入你想要整蛊的房间ID:')
   while True:
       time.sleep(2)
       form_msg_data = post_info_data(roomid)
       post_msg = post_data_url(form_msg_data)
       print('实时弹幕是 - > %s' % post_msg)
       post_msg_cont = post_data_cont(post_msg,roomid)
       print('正在发送的弹幕 - > %s ' % post_msg)
       post_url_data(post_msg_cont)
if __name__ == '__main__':
   main()


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/Hkw3zOf1Ds
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/13359
 
410 次点击