百度网盘扩容自动化

很久前,就知道百度网盘扩容这么一回事,就是给你的百度网盘存入超过空间的文件

image-20220824003807689

目前我分享的课程也是通过这种方式来存的(要不然你以为我这么这么多空间)

image-20220824004026915

一些商家也付费提供着需要授权码的软件,但白嫖才是正道。

但是现有手工操作过于麻烦,了解到相关知识后,我得知了百度网盘扩容原理,因此我抓包百度网盘相关接口自己写了一个自动化的扩容程序,

包含扩容和修复两部分。

需要的工具:占位文件,百度网盘客户端,浏览器,一个会员百度网盘账号(会员才有垃圾清理功能)

注意事项:请使用一个小号,据说扩容可能会封号(网上流传超过80t概率封号,我没封过不知道是不是真的)

Python代码

本篇文章暂时先简略写着记录一下,后续优化后有详细过程。

扩容

目前网上扩容的原理无非就是利用百度网盘的垃圾文件清理功能,

通过特定操作来删除垃圾文件

从而来实现网盘的容量减少,存入的文件容量增加

手工操作过程如下(这里不细讲,也不放图了,提供大致流程)

  1. 保存10个文件到文件夹【working】
  2. 清理文件夹【working】,并获取垃圾文件列表
  3. 删除【working】文件夹内所有文件
  4. 删除垃圾文件(此时空间容量会减少)

但是手工的方式过于繁琐,使用Python可极大程度方便使用

扩容代码大致如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def kuorong():
"""
1.保存10个文件到文件夹【working】
2.清理文件夹【working】,并获取垃圾文件列表
3.删除文件夹内所有文件
4.删除垃圾文件
5.保存一个5T的文件夹
:return: None
"""

# 1.保存10个文件到文件夹【working】
save("[690435813055101,26598162122456,1020496199701393,644765167361037,261696681183572,132504979092525,169677771677732,829587079548271,260890747525505,111657973573120]", '/占位/working')

# 2.清理文件夹【working】,并获取垃圾文件列表
taskid = clear('/占位/working')["taskid"]
print("正在清理重复文件,taskid:%s" % taskid)
query = garbagetaskquery(taskid)
while query["status"] == "running":
print("**当前进度:%s" % query["progress"], end="**")
time.sleep(3)
query = garbagetaskquery(taskid)
print("整理文件完成")

# 3.删除文件夹内所有文件
delete('["/占位/working/xwangpan10","/占位/working/xwangpan06","/占位/working/xwangpan09","/占位/working/xwangpan08","/占位/working/xwangpan05","/占位/working/xwangpan03","/占位/working/xwangpan04","/占位/working/xwangpan01","/占位/working/xwangpan07","/占位/working/xwangpan02","/占位/working/xwangpan02(1)","/占位/working/xwangpan07(1)","/占位/working/xwangpan05(1)","/占位/working/xwangpan04(1)","/占位/working/xwangpan09(1)","/占位/working/xwangpan01(1)","/占位/working/xwangpan06(1)","/占位/working/xwangpan10(1)","/占位/working/xwangpan08(1)","/占位/working/xwangpan03(1)"]')

# 4.保存五个文件
save("[690435813055101,26598162122456,1020496199701393,644765167361037,261696681183572,132504979092525,169677771677732,829587079548271,260890747525505,111657973573120]", '/占位/working')

# 4.删除垃圾文件
json = get_garbagelist(taskid)
garbage_list = []
for i in json["list"][0]["data"]:
file = '{"fs_id": "%s", "index": %s}' % (i['fs_id'], str(i['index']))
garbage_list.append(file)
# print(garbage_list)
print("获取删除列表成功", str(garbage_list).replace("'", ""))
garbage_delete(taskid, str(garbage_list).replace("'", ""))

# 5.保存一个5T的文件夹
save('[1054623448621227]', "/占位")

修复

扩容之后第二天基本都会爆盘,就是你的空间已经超出最大容量了,无法存入资料了,

加入你存进网盘的资料不需要更新,那么你就不需要修复了,可以正常使用文件分享功能,

如果你需要继续存文件,就要使用修复了。

修复的原理则是利用百度网盘客户端的移入隐私空间,然后清理垃圾文件来实现修复。

手工操作大致流程如下(这里不细讲,也不放图了,提供大致流程):

  1. 清理文件夹【修复】,并获取垃圾文件列表
  2. 把文件夹【修复】移入隐藏空间
  3. 删除垃圾文件
  4. 移出隐藏空间

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def fix():
"""
1.清理垃圾,获取taskid
2.查询进度
3.获取删除列表
4.进行删除操作
"""
# 1.清理垃圾,获取taskid
taskid = clear('/修复')["taskid"]
print("正在清理重复文件,taskid:%s" % taskid)

# 2.查询进度
query = garbagetaskquery(taskid)
while query["status"] == "running":
print("**当前进度:%s" % query["progress"], end="**")
time.sleep(3)
query = garbagetaskquery(taskid)

# 3.获取删除列表
json = get_garbagelist(taskid)
garbage_list = []
for i in json["list"][0]["data"]:
file = '{"fs_id": "%s", "index": %s}' % (i['fs_id'], str(i['index']))
garbage_list.append(file)
print("获取删除列表成功", str(garbage_list).replace("'", ""))

# 4.进行删除操作
move_info = move("/修复", "/_pcs_.safebox", "修复")
if move_info["errno"] == 0:
print("移入隐藏空间成功", move_info)
else:
print("移入隐藏空间失败", move_info)
garbage_delete(taskid, str(garbage_list).replace("'", ""))

但是代码写的时候遇到了问题,就是移出隐藏空间的包抓取不了,应该是百度网盘进行相关加密了

也就是说修复完需要手动把文件移出隐藏空间(算个小瑕疵了)

不过最近我了解到一种不需要隐藏空间移动的方法,待我有空验证可行性在吧这种方法写成Python,完美实现自动化操作

目前代码虽然已经完成,但是未考虑到分享给广大用户(因为代码如果你们使用会有太多限制,代码很多操作都是根据我自己网盘实际情况来写的),后续(我很懒)优化代码后可能会考虑写个Gui图形界面,分享给你们使用。

附各函数功能说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 以下代码仅显示函数名

# 得到百度网盘bdstoken
def get_bdstoken():

# 保存文件
def save(fs_ids, file_dir):.

# 删除文件
def delete(file_dir):

# 移动文件到隐藏空间
def move(form_file, to_file, newname):

# 文件的任务查询
def taskquery(taskid):

# 清理垃圾任务查询垃圾
def garbagetaskquery(taskid):

# 执行清理垃圾
def clear(filedir):

# 得到待清理垃圾的列表
def get_garbagelist(taskid):

# 删除垃圾列表
def garbage_delete(taskid, garbagelist):

# 修复
def fix():

# 扩容
def kuorong()

if __name__ == '__main__':
pc_cookie = '填写你的pc_cookie'
cookie = '填写你的cookie’
bdstoken = get_bdstoken()

# fix()
# kuorong()