B站批量删除动态—Python

2025-11-10 08:10:46 | 世界杯足球价格

B站协议批量删除动态实现

b站登录协议请看点方蓝色字体

b站扫码登录协议

文章结尾附Python代码

一、抓包

1.1删除动态包

POST请求 https://api.bilibili.com/x/dynamic/feed/operate/remove?platform=web&csrf=3bdb2bda73e3d6f75ea991167fb39389

请求表单数据{"dyn_id_str":"967767049365356551","dyn_type":1,"rid_str":"967767049365356551"}

csrf——从登录Cookie中获取

dyn_id_str、rid_str——动态id

dyn_type——1:删除

响应结果

b站协议所有出现这样的响应都表示成功

1.2动态协议获取包

GET请求 https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?offset=&host_mid=484733984&timezone_offset=-480&platform=web&features=itemOpusStyle,listOnlyfans,opusBigCover,onlyfansVote,decorationCard,forwardListHidden,ugcDelete,onlyfansQaCard&web_location=333.999&dm_img_list=[{"x":3837,"y":2839,"z":0,"timestamp":1813,"k":110,"type":0},{"x":3053,"y":1798,"z":10,"timestamp":1915,"k":70,"type":0},{"x":2601,"y":1627,"z":49,"timestamp":2015,"k":102,"type":0},{"x":2645,"y":1677,"z":98,"timestamp":2120,"k":109,"type":0},{"x":2434,"y":1419,"z":5,"timestamp":2235,"k":109,"type":0},{"x":2809,"y":1817,"z":472,"timestamp":2338,"k":94,"type":0},{"x":2862,"y":1896,"z":654,"timestamp":2437,"k":97,"type":0},{"x":2365,"y":1365,"z":328,"timestamp":2539,"k":97,"type":0},{"x":2300,"y":1293,"z":284,"timestamp":2639,"k":112,"type":0},{"x":2543,"y":1543,"z":529,"timestamp":2827,"k":87,"type":0},{"x":2392,"y":1402,"z":371,"timestamp":2930,"k":66,"type":0},{"x":2087,"y":1147,"z":77,"timestamp":3033,"k":94,"type":0},{"x":3211,"y":2320,"z":1215,"timestamp":3136,"k":109,"type":0},{"x":2081,"y":1123,"z":1252,"timestamp":3866,"k":65,"type":0},{"x":970,"y":14,"z":365,"timestamp":3966,"k":119,"type":0},{"x":739,"y":-218,"z":137,"timestamp":4069,"k":103,"type":0},{"x":2107,"y":1149,"z":1485,"timestamp":4168,"k":71,"type":0},{"x":2200,"y":1152,"z":1503,"timestamp":4271,"k":88,"type":0},{"x":2564,"y":917,"z":1617,"timestamp":4372,"k":118,"type":0},{"x":2976,"y":1168,"z":1983,"timestamp":4474,"k":63,"type":0},{"x":2546,"y":692,"z":1553,"timestamp":4576,"k":63,"type":0},{"x":2798,"y":943,"z":1808,"timestamp":4677,"k":94,"type":0},{"x":1185,"y":-670,"z":195,"timestamp":4779,"k":60,"type":1},{"x":3068,"y":1214,"z":2075,"timestamp":4957,"k":83,"type":0},{"x":2085,"y":264,"z":809,"timestamp":5060,"k":122,"type":0},{"x":4167,"y":2963,"z":189,"timestamp":5161,"k":71,"type":0},{"x":4430,"y":3261,"z":347,"timestamp":5263,"k":126,"type":0}]&dm_img_str=V2ViR0wgMS&dm_cover_img_str=QU5HTEUgKE5WSURJQSwgTlZJRElBIEdlRm9yY2UgODgwMCBHVFggRGlyZWN0M0QxMSB2c181XzAgcHNfNV8wKSwgb3Igc2ltaWxhckdvb2dsZSBJbmMuIChOVklESU&dm_img_inter={"ds":[{"t":0,"c":"","p":[333,111,111],"s":[166,4830,2444]}],"wh":[3685,4015,55],"of":[357,714,357]}&x-bili-device-req-json={"platform":"web","device":"pc"}&x-bili-web-req-json={"spm_id":"333.999"}&w_rid=7661ecebb3082069024a0b5211a8d40b&wts=1727231810

dm_img_list

dm_img_str

dm_cover_img_str

dm_img_inter

w_rid

wts

涉及到的算法较多,请看本专栏的B站协议各参数算法加密文章

响应结果

id_str—— 删除动态所需要的id

二、Python实现

2.1动态id

def get_act_data(cookie, dm_img_list, dm_img_str, dm_cover_img_str, dm_img_inter, w_rid, wts):

url = "https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space"

# 构造请求参数

params = {

"offset": "",

"host_mid": "484733984",

"timezone_offset": "-480",

"platform": "web",

"features": "itemOpusStyle,listOnlyfans,opusBigCover,onlyfansVote,decorationCard,forwardListHidden,ugcDelete,onlyfansQaCard",

"web_location": "333.999",

"dm_img_list": dm_img_list,

"dm_img_str": dm_img_str,

"dm_cover_img_str": dm_cover_img_str,

"dm_img_inter": dm_img_inter,

"x-bili-device-req-json": '{"platform":"web","device":"pc"}',

"x-bili-web-req-json": '{"spm_id":"333.999"}',

"w_rid": w_rid,

"wts": wts

}

# 构造请求头,cookie

headers = {

"Cookie": cookie

}

# 发送GET请求

response = requests.get(url, params=params, headers=headers)

if response.status_code == 200:

return response.json()

else:

return '获取失败'

2.2删除动态

def remove(cookie, csrf, dyn_id_str, rid_str):

url = "https://api.bilibili.com/x/dynamic/feed/operate/remove"

# 请求参数

params = {

"platform": "web",

"csrf": csrf

}

# 表单数据

data = {

"dyn_id_str": dyn_id_str,

"dyn_type": 1,

"rid_str": rid_str

}

# 请求头,cookie

headers = {

"Cookie": cookie,

"Content-Type": "application/x-www-form-urlencoded"

}

# 发送POST请求

response = requests.post(url, params=params, data=data, headers=headers)

if response.status_code == 200:

return response.json()

else:

return "删除失败"