Py学习  »  Python

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

python • 5 年前 • 385 次点击  


人生苦短,我用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
 
385 次点击