Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
pip install bilibili_toolman
凭据需要在本地准备
.exe
版本使用 Web 端 API
python -m bilibili_toolman --save --cookies "SESSDATA=8aafe8**********;bili_jct=4f39b**********"
SESSDATA
,bili_jct
可在XHR请求头中或document.cookies
获得,这里不将阐述
使用 上传助手 API
python -m bilibili_toolman --save --sms
跟随输出操作即可(注:需要完成 Geetest 校验)
凭据即输出的 Base64 编码内容
Fork 此项目
在项目 Settings > Secret > New repository secret 创建:
SESSION
此处为准备好的凭据
可选 替换不同凭据上传、投稿
指定上传凭据
SESSION_UPLOAD
此处为准备好的凭据
指定投稿凭据
SESSION_SUBMIT
此处为准备好的凭据
一般推荐使用 Web 凭据上传,上传助手凭据投稿(高速 (?) (~400Mbps) 上传,多P投稿)
该 Actions 适用于手动转载的用户
该 Actions 适用于需要自动转载Youtube频道的用户
>>> from bilibili_toolman.bilisession.web import BiliSession
# bilisession.client 即上传助手 API。较 Web 版相比,可以用低等级帐号投稿多 P 视频
# 同时,可以免去大部分人机校验操作
# bilisession.web 即 Web 端创作中心 API。在上传速度上会有优势
# 注:投稿与上传*不需要*在同一个 Session 中完成
# 不论 import 的是什么版本,登录态恢复时都会重新实例化登录态对应的 Session
>>> session = BiliSession.from_base64_string("H4sIADKW+2EC/5VVWW/bRhB2EF216...")
# 从凭据恢复登录态,详情见 准备凭据
>>> endpoint_1,cid_1 = session.UploadVideo("本地视频01.mp4")
('n220208141kq78....', ...)
>>> endpoint_2,cid_2 = session.UploadVideo("本地视频02.mp4")
('n220209892re88....', ...)
# 上传视频并拿 key
# 上传线路根据恢复的 Session 而定
# Web / Cookies 使用的是网宿CDN,国内外速度都很可观
# Client 使用的 CDN 在海外的速度则较慢
# 推荐分别准备 Web / Client 的 Session. 如此可用 Web 高速上传,Client 多 P 投稿
>>> from bilibili_toolman.bilisession.common.submission import Submission
# 准备稿件
>>> submission = Submission(
title="【toolman】 转载测试",
desc="...as per request"
)
# 新建稿件 (标题描述出现韩文字符等会导致稿件无效,具体参见 -h 输出)
>>> submission.videos.append(
Submission(
title="多 P (P1)",
video_endpoint=endpoint_1
)
)
>>> submission.videos.append(
Submission(
title="多 P (P2)",
video_endpoint=endpoint_2
)
)
# 添加视频 (P),注意仅父节点(稿件)描述会被显示;分 P 视频和父稿件同类型
>>> cover = session.UploadCover('封面测试.png')
>>> submission.cover_url = cover['data']['url']
# 上传,设置封面
>>> submission.source = 'https://github.com/mos9527/bilibili-toolman'
# 设置转载来源
>>> submission.tags.append('转载')
# 添加标签
>>> submission.thread = 17
# 设置分区(详见 README 文末分区表)
>>> session.SubmitSubmission(submission,seperate_parts=False)
# 投稿视频 (尝试以多 P 模式上传)
# 若使用 Web API,如果条件不足(Lv3+ 及 1000+ 关注量) 则会报错
>>> session.SubmitSubmission(submission,seperate_parts=True)
# 投稿视频 (尝试以将多 P 分为单 P 后上传)
{'code:': 0,
'results': [{'code': 0, 'message': '0','ttl': 1,
'data': {'aid': 5939...., 'bvid': 'BV1oq....'}}]}
PC 上传助手逆向 · FortuneDayssss/BilibiliUploader
分区数据,API 参考 · Passkou/bilibili_api
usage: bilibili-toolman [-h] [--cookies COOKIES] [--sms] [--load LOAD]
[--load_upload LOAD_UPLOAD]
[--load_submit LOAD_SUBMIT] [--save] [--http]
[--noenv] [--cdn {ws,qn,bda2,kodo,gcs,bos}]
[--opts OPTS] [--thread_id THREAD_ID] [--tags TAGS]
[--desc DESC] [--title TITLE] [--seperate_parts]
[--no_upload] [--no_submit] [--original]
[--no_reprint] [--localfile LOCALFILE-URL]
[--youtube YOUTUBE-URL]
使用帮助
optional arguments:
-h, --help show this help message and exit
身份设置 (随方式优先级排序):
--cookies COOKIES 登陆: 使用 Cookies 登陆,即使用 Web API (不可多 P 上传) ( 需要 SESSDATA 及 bili_jct ) e.g.SESSDATA=cb0..; bili_jct=6750...
--sms 登陆:使用短信验证码登陆,即使用 上传助手 API (可多 P 上传)(需手动交互)(有日获取限制,请配合 --save 使用)
--load LOAD 登陆:加载凭据,同时用于上传及投稿
--load_upload LOAD_UPLOAD
登陆:使用该凭据上传,而不用--load凭据上传
--load_submit LOAD_SUBMIT
登陆:使用该凭据投稿,而不用--load凭据投稿
--save 登陆:向stdout输出当前登陆凭据并退出(其他输出转移至stderr)
--http 强制使用 HTTP (不推荐)
--noenv 上传时,不采用环境变量(如代理)
--cdn {ws,qn,bda2,kodo,gcs,bos}
上传用 CDN (限 Web API) (对应 网宿(适合海外),七牛,百度(默认),七牛,谷歌,百度)
--retry_submit_delay RETRY_SUBMIT_DELAY
投稿限流时,重新投稿周期
--retry_submit_count RETRY_SUBMIT_COUNT
投稿限流时,尝试重新投稿次数
上传设置:
--opts OPTS 解析可选参数 ,详见 --opts 格式
--thread_id THREAD_ID
分区 ID
--tags TAGS 标签
--desc DESC 描述格式 e.g. "原描述:{desc}" (其他变量详见下文)(仅稿件有描述)
--title TITLE 标题格式 e.g. "[Youtube] {title} (其他变量详见下文)(使用于稿件及分P)"
--seperate_parts 不分P (e.g. --youtube [播放列表],--localfile [文件夹])独立投稿(不分P)(Web上传默认不分 P)
--no_upload 只下载资源
--no_submit 不提交稿件,适用于获取filename参数
--original 设置稿件为原创
--no_reprint 设置稿件不允许转载
解析可选参数 "opts" (格式 : [参数1]=[值1];[参数2]=[值2] (query-string)):
--localfile LOCALFILE-URL
本地文件
参数:
cover (str) - 封面图片路径
e.g. --localfile "le videos/" --opts cover="le cover.png" --tags ...
--youtube YOUTUBE-URL
Youtube / Twitch / etc 视频下载 (yt-dlp)
参数:yt-dlp 参数:
format (str) - 同 yt-dlp -f
quite (True,False) - 是否屏蔽 yt-dlp 日志 (默认 False)
特殊参数:
playlistend - 对于播放列表、频道,下载到(时间顺序,新者在前)第 n 个视频为止
playliststart - 对于播放列表、频道,从(时间顺序,新者在前)第 n 个视频开始下载
daterange - 只下载在该参数指定时间窗口内的视频 (精确到毫秒)
格式可以为 YYmmdd,也可以用相对时间. 如:
e.g. daterange=now; (下载今天上传的视频)
e.g. daterange=now-1day; (下载昨天到今天上传的视频)
e.g. daterange=220430~220501 (下载 2022年4月30日~2022年5月1日 的视频)
hardcode - 烧入硬字幕选项
e.g. 启用 ..;hardcode;...
e.g. 换用字体 ..;hardcode=style:FontName=Segoe UI
e.g. NV硬解码 ..;hardcode=input:-hwaccel cuda/output:-c:v h264_nvenc -crf 17 -b:v 5M
多个选项用 / 隔开
e.g. --youtube "..." --opts "format=best&quiet=True&hardcode" --tags ...
此外,针对视频对象,还提供其他变量:
{id}
{title}
{descrption}
{upload_date}
{uploader}
{uploader_id}
{uploader_url}
{channel_id}
{channel_url}
{duration}
{view_count}
{avereage_rating}
...
注:输入播放列表且多 P 时,稿件标题为播放列表标题,稿件描述仅为 `来自Youtube`
默认配置:不烧入字幕,下载最高质量音视频,下载字幕但不操作
变量:
{title},{desc} 等变量适用于:
title, desc, tags
通用变量:
{title} - 原标题
{desc} - 原描述
{safe_korean_title}
- 【韩文】替换韩文为特殊字符的标题
{roma_korean_title}
- 【韩文】替换韩文为罗马音的标题 (需要安装 korean_romanizer)
本工具支持将给定视频源转载至哔哩哔哩
详见项目 README 以获取更多例程 : github.com/greats3an/bilibili-toolman
分区 | TID |
---|---|
MAD·AMV | 24 |
MMD·3D | 25 |
综合 | 27 |
短片·手书·配音 | 47 |
特摄 | 86 |
手办·模玩 | 210 |
分区 | TID |
---|---|
连载动画 | 33 |
资讯 | 51 |
官方延伸 | 152 |
分区 | TID |
---|---|
国产动画 | 153 |
国产原创相关 | 168 |
布袋戏 | 169 |
资讯 | 170 |
动态漫·广播剧 | 195 |
分区 | TID |
---|---|
原创音乐 | 28 |
音乐现场 | 29 |
VOCALOID·UTAU | 30 |
翻唱 | 31 |
演奏 | 59 |
音乐综合 | 130 |
MV | 193 |
电音 | 194 |
分区 | TID |
---|---|
宅舞 | 20 |
舞蹈综合 | 154 |
舞蹈教程 | 156 |
街舞 | 198 |
明星舞蹈 | 199 |
中国舞 | 200 |
分区 | TID |
---|---|
单机游戏 | 17 |
Mugen | 19 |
网络游戏 | 65 |
GMV | 121 |
音游 | 136 |
电子竞技 | 171 |
手机游戏 | 172 |
桌游棋牌 | 173 |
分区 | TID |
---|---|
野生技术协会 | 122 |
社科人文 | 124 |
科学科普 | 201 |
财经 | 207 |
校园学习 | 208 |
职业职场 | 209 |
分区 | TID |
---|---|
手机平板 | 95 |
电脑装机 | 189 |
摄影摄像 | 190 |
影音智能 | 191 |
分区 | TID |
---|---|
日常 | 21 |
动物圈 | 75 |
美食圈 | 76 |
搞笑 | 138 |
手工 | 161 |
绘画 | 162 |
运动 | 163 |
其他 | 174 |
汽车 | 176 |
分区 | TID |
---|---|
鬼畜调教 | 22 |
音MAD | 26 |
人力VOCALOID | 126 |
教程演示 | 127 |
分区 | TID |
---|---|
美妆 | 157 |
服饰 | 158 |
T台 | 159 |
健身 | 164 |
风尚标 | 192 |
分区 | TID |
---|---|
热点 | 203 |
环球 | 204 |
社会 | 205 |
综合 | 206 |
分区 | TID |
---|---|
综艺 | 71 |
明星 | 137 |
分区 | TID |
---|---|
短片 | 85 |
影视杂谈 | 182 |
影视剪辑 | 183 |
预告·资讯 | 184 |
分区 | TID |
---|---|
人文·历史 | 37 |
科学·探索·自然 | 178 |
军事 | 179 |
社会·美食·旅行 | 180 |
分区 | TID |
---|---|
其他国家 | 83 |
欧美电影 | 145 |
日本电影 | 146 |
华语电影 | 147 |
分区 | TID |
---|---|
国产剧 | 185 |
海外剧 | 187 |
FAQs
bilibili-toolman 哔哩哔哩搬运工具
We found that bilibili-toolman demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.