在繁忙的生活中,有时候没有足够的时间去完成一些日常任务,比如在B站上投币、点赞、分享视频。但是,如果你是一名B站的资深用户,你可能知道这些任务可以帮助你获得更多的经验和银币。所以,有没有一种方法可以让计算机来代替你完成这些任务呢?答案是肯定的!在这篇教程中,我们将介绍如何使用Python编写自动化脚本来完成B站的任务,让你可以轻松地获取更多的经验和银币。
准备工作
在开始之前,你需要准备以下内容:
- B站账号:确保你有一个B站账号,并且已经登录到B站网站。
- Python环境:确保你已经安装了Python,并且可以在命令行中运行Python脚本。
-
B站的Cookie:你需要从浏览器中获取你的B站Cookie,用于登录和访问B站的API。在浏览器中登录B站后,你可以按照以下步骤获取Cookie:
- 登录B站网站。
- 打开浏览器的开发者工具(F12键)。
- 在开发者工具中切换到“网络”选项卡。
- 刷新B站网页。
- 在网络请求中找到一个名为“http://api.bilibili.com/x/space/myinfo”的请求,点击它。
- 在右侧的面板中找到“请求标头”一栏,你将看到一个名为“Cookie”的值。复制这个值,它是你的B站Cookie。
编写Python脚本
现在,我们将编写Python脚本,用于自动化执行B站的任务。以下是一个示例脚本,你可以根据需要进行修改和定制。
# -*- coding: utf8 -*-
import requests
import json
import time
import random
# 填写你的B站Cookie
cookies = "在这里粘贴你的B站Cookie"
# 将Cookie转换为字典
def extract_cookies(cookies):
global csrf
cookies = dict([l.split("=", 1) for l in cookies.split("; ")])
csrf = cookies['bili_jct']
return cookies
# 获取银币数
def getCoin():
cookie = extract_cookies(cookies)
url = "http://account.bilibili.com/site/getCoin"
r = requests.get(url, cookies=cookie).text
j = json.loads(r)
money = j['data']['money']
return int(money)
# 获取个人信息
def getInfo():
global uid
url = "http://api.bilibili.com/x/space/myinfo"
cookie = extract_cookies(cookies)
r = requests.get(url, cookies=cookie).text
j = json.loads(r)
uid = j['data']['mid']
level = j['data']['level']
current_exp = j['data']['level_exp']['current_exp']
next_exp = j['data']['level_exp']['next_exp']
sub_exp = int(next_exp) - int(current_exp)
days = int(int(sub_exp) / 65)
coin = getCoin()
times = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
msg = "【B站任务】" + str(times) + "\n欢迎!当前等级为" + str(level) + "\n当前经验为" + str(current_exp) + "\n距离升级还差" + str(sub_exp) + "经验\n需要" + str(
days) + "天\n" + \
"剩余银币数量为" + str(coin)
print(msg)
return msg
# 推荐动态
def getActiveInfo():
url = "http://api.bilibili.com/x/web-interface/archive/related?aid=" + \
str(7)
cookie = extract_cookies(cookies)
r = requests.get(url, cookies=cookie).text
j = json.loads(r)
return j
# 推荐动态的第二种方式
def getVideo():
random_page = random.randint(0, 167)
url = "http://api.bilibili.cn/recommend?page=" + str(random_page)
cookie = extract_cookies(cookies)
r = requests.get(url, cookies=cookie).text
j = json.loads(r)
return j
# 执行任务:投币、分享5次
def Task():
coin_num = getCoin()
# 需要投币的个数
num = 5
if coin_num <= num:
num = coin_num
coin_count = 0
count = 0
while True:
j = getVideo()
list_len = len(j['list'])
random_list = random.randint(1, list_len - 1)
bvid = j['list'][random_list]['bvid']
aid = j['list'][random_list]['aid']
print(str(count) + ' ---- ' + str(bvid) + ' ---- ' + str(aid))
count = count + 1
toview(bvid)
time.sleep(5)
shareVideo(bvid)
time.sleep(5)
if coin_count < num:
coin_code = tocoin(aid, bvid)
if coin_code == -99:
return
if coin_code == 1:
coin_count = coin_count + 1
if coin_count == num:
break
print('----------------------')
# 观看视频【不会点赞投币】
def toview(bvid):
playedTime = random.randint(10, 100)
url = "https://api.bilibili.com/x/click-interface/web/heartbeat"
data = {
'bvid': bvid,
'played_time': playedTime,
'csrf': csrf
}
cookie = extract_cookies(cookies)
r = requests.post(url, data=data, cookies=cookie).text
j = json.loads(r)
code = j['code']
if code
== 0:
print('观看视频成功!')
else:
print('观看视频失败!')
# 分享视频
def shareVideo(bvid):
url = "https://api.bilibili.com/x/web-interface/share/add"
data = {
'bvid': bvid,
'csrf': csrf
}
cookie = extract_cookies(cookies)
# 需要请求头
header = {
"Content-Type": "application/x-www-form-urlencoded",
"Connection": "keep-alive",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.38",
}
r = requests.post(url, data=data, cookies=cookie, headers=header).text
j = json.loads(r)
code = j['code']
if code == 0:
print('分享视频成功!')
else:
print('分享视频失败!')
# 投币函数
def tocoin(aid, bvid):
coinNum = getCoin()
if coinNum == 0:
print('银币不足!')
return -99
url = "https://api.bilibili.com/x/web-interface/coin/add"
headers = {
'authority': 'api.bilibili.com',
'method': 'POST',
'path': '/x/web-interface/coin/add',
'scheme': 'https',
'accept': 'application/json, text/plain, */*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded',
'origin': 'https://www.bilibili.com',
'pragma': 'no-cache',
'referer': 'https://www.bilibili.com/video/' + str(bvid) + '?spm_id_from=444.41.0.0',
'sec-ch-ua': '"Not;A Brand";v="99", "Google Chrome";v="97", "Chromium";v="97"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}
data = {
'aid': aid,
'multiply': 1,
'select_like': 1,
'cross_domain': 'true',
'csrf': csrf
}
cookie = extract_cookies(cookies)
r = requests.post(url, data=data, headers=headers, cookies=cookie).text
j = json.loads(r, strict=False)
code = j['code']
if code == 0:
print(str(bvid) + ' 投币成功!')
return 1
else:
print(str(bvid) + ' 投币失败!')
return 0
# 一键三连
def toall(bvid):
coinNum = getCoin()
if coinNum == 0:
print('银币不足!')
return -99
url = "http://api.bilibili.com/x/web-interface/archive/like/triple"
data = {
'bvid': bvid,
'csrf': csrf
}
cookie = extract_cookies(cookies)
r = requests.post(url, data=data, cookies=cookie).text
j = json.loads(r)
code = j['code']
if code == 0:
print(str(bvid) + ' 三连成功!')
return 1
else:
print(str(bvid) + ' 三连失败!')
return 0
# 运行任务
def run():
getInfo()
Task()
# 主函数入口
if __name__ == '__main__':
run()
如何运行脚本
-
将上面的Python代码复制到一个文本编辑器中,并将B站Cookie粘贴到脚本中的
cookies
变量中。 -
打开命令行终端,进入存储脚本的目录。
-
在命令行中运行以下命令,启动脚本:
python your_script_name.py
请将
your_script_name.py
替换为你保存脚本的文件名。
结语
通过这篇教程,你学会了如何使用Python编写自动化脚本来完成B站的任务。这可以帮助你节省时间,轻松获取更多的经验和银币。希望你能够在B站上享受更多的乐趣!