# BiliDownload **Repository Path**: goodsccd/BiliDownload ## Basic Information - **Project Name**: BiliDownload - **Description**: No description available - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-01 - **Last Updated**: 2025-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
## 1.3.1
### 1. 在二维码中添加了 LOGO
在生成 WEB 端二维码时会在其中心添加 `resources` 中的 `logo-super-ellipse-resized.png` 图片,在生成 TV
端二维码时会在其中心添加 `logo-super-ellipse-2-resized.png` 图片。
### 2. 自定义化了多线程下载所用线程数
如果文件大小大于或等于 8MB 且从未保存过下载所用线程数,程序将会询问下载所用线程数。
## 1.3.0
### 1. 加速了下载
使用32个线程进行视频与音频的下载,最高速度可达 23MB/s。
### 2. 添加了 LOGO
现在,BiliDownload 也有了自己的 LOGO。原图存于 `bin/logo.png`。
### 3. 添加了 WEB 端二维码登录时浏览器标识的提示信息
选择 `WEB 端二维码登录` 并触发程序进行验证后,程序会提示当前所用的浏览器标识,便于与B站的登录操作通知中的 `设备/平台` 信息进行核实对照。
### 4. 解决了文件路径不能含有空格的问题
现已支持输入的文件路径中含有空格。
## 1.2.0
### 添加了 TV 端二维码登录功能
目前有三种登录方式可选:`WEB 端二维码登录`、 `TV 端二维码登录` 与 `输入 SESSDATA 登录`。若希望双端皆处于登录状态,在登录某端后继续登录另一端即可。
## 1.1.9
### 添加了 WEB 端二维码登录功能
目前有两种登录方式可选:`WEB 端二维码登录` 与 `输入 SESSDATA 登录`。`WEB 端二维码登录` 与 `TV 端二维码登录` 的区别在于,前者调用 WEB 端的 API 进行登录,在调用 WEB 端 API
下载视频时将解锁高清晰度;后者调用 TV 端的 API 进行登录,在调用 TV 端 API 下载视频时将解锁高清晰度。
## 1.1.7
### 自定义化了暂时存储路径
若选择 `视频+音频(合并需要 FFmpeg)` 并输入了 FFmpeg 路径,则程序在保存 `tmpVid.mp4` 与 `tmpAud.aac` 时将不再保存至 `System.getProperty("user.dir")`
获取的默认路径中,而将保存至指定的保存路径中。
## 1.1.6
### 1. 添加了退出功能
在每次输入时,若输入 `*exit`,则程序会调用 `System.exit(0)` 中止进程。
### 2. 优化了代码结构
将主函数拆分成了多个函数,每一步为一个函数,增强了代码的可读性。
### 3. 优化了输出
若输入源为 `Input.txt` 文件,则程序在正常模式下将不再显示输入提示,在 `debug` 模式下会一并输出所读取的内容。
## 1.1.5
### 1. 添加了 SESSDATA、保存路径、FFmpeg 路径的记忆功能
现在您不再需要在每次运行程序时都输入 SESSDATA、保存路径与 FFmpeg 路径,这些都将在输入一次之后保存到工作文件夹下的 `config.yml` 中。
### 2. 添加了下载时显示速度与时间的功能
下载视频或音频时,程序除了显示进度,还会显示平均速度与剩余时间。下载完成后,会显示下载用时。
## 1.1.0
### 1. 解决了访问 URL 时拒绝连接的问题([Issue #1](https://github.com/Naptie/BiliDownload/issues/1))
导致这个问题的原因很简单,就是我在 `readUrl(String url, String cookie)` 方法中写了这样一行代码:
`Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 1081));`。
这直接导致了程序在访问 URL 时选择了位于1081端口的代理。因此,如果这个端口没有代理,就会提示拒绝连接。
### 2. 添加了 Debug 模式
在参数中添加 `debug`,即可启用 debug 模式。在该模式下,程序每当访问一个 URL 时,就会输出所访问的 URL 以及所使用的 UA。其中,下载视频或音频时访问的 URL 将不被输出,因为这些 URL
已经通过 `成功获取...下载地址:...` 输出了。
## 1.0.0
### Initial Commit
---
# 无水印视频流接口的探索历程
#### 视频:[B站](https://www.bilibili.com/video/BV1pK4y1N7gw);[YouTube](https://youtu.be/ackdugNrRBc)。
- 0
3月31日的深夜,我无法安眠。
似有什么东西,撑着我的眼皮,愣是不让我关闭眼睛线程。
无奈之下,我起床走向客厅,打开电视,看起了B站。
无意间,看到了非常眼熟的画面,仿佛在某时某处看过一样。
我急忙打开手机,找到了这支视频,真相就在眼前——
**我为它进行了一键式三重连接。**
- 1
比起这一些,更引人注目的是,
电视上画面右上角少了一些奇怪的东西。
我赶忙用手机拍下来,所幸的是成功将这一似视觉欺骗般的幻象捕捉到了。
为了扩大样本容量,我将图片转发给更多的人,以确保这个现象是铁打的事实。
最终,所有人都观测到了这个现象,否定了我的视神经对于电视上这一特定的像素排列存在特异性的可能。
于是,我大胆推测,
之所以产生这一现象,
**是因为两个客户端分别使用了不同的端口。**
- 2
不知什么时候,我闭上了眼,被一股神秘的力量。
再睁眼看这世界,看到了天花板。
身体受到的压强远低于感知范围,就像躺在床上一样。
**笑死,我就在床上。**
- 3
4月,API 之月。
学业如此繁忙,却总有时间研究这个课题。
我若资本家,压榨着时间的剩余价值。
殊不知,时间是我的鸽命。
我于是再次打开远程连接,趁 OI 教练 AFK 之时,
安装 BlueStacks,
安装 Wireshark,
安装云视听小电视。
殊不知,Wireshark 对于我而言为时尚早。
我于是继续尝试,
安装 Charles。
又殊不知,这玩意他喵的看不到B站的 Path。
我于是继续尝试,
安装 Fiddler。
双殊不知,Fiddler 在默认情况下无法检测到 BlueStacks 的连接。
我于是继续尝试,
安装 Proxifier,
安装 ProxyCap。
叒殊不知,我的技术力过低而导致代理了个寂寞。
我于是继续尝试······
在手机上安装云视听小电视,并使手机的网络连接通过 Fiddler······
叕殊不知,
**安卓系统不再信任用户证书。**
- 4
我遇到了前所未有的尴尬局面。
艰难的决定······
「果然还是要这样了吗。」
带着一丝慌张,我找到了已4096个小时没有开机的华为 P7,
却万万没想到,
“getDuration(Action.BOOT_UP)”的返回值,
**是一夜。**
- 5
时间在消磨我的意志,好奇却在培育它。
KingRoot,安装。
RE 浏览器,安装。
云视听小电视,安装。
**我深知,前方是光明。**
- 6
万事俱备,只欠代理。
“192.168.3.149”“8888”
云视听小电视,打开。
Fiddler 还是带来了希望。
我深知,每当我掠过一个请求,
**真相就会更大概率地降临。**
- 7
不负众望,
通往无水印世界的大门终被打开,
那一似视觉欺骗般的幻象,
**将被无限重生。**
