Compare commits

...

3 Commits

Author SHA1 Message Date
dichgrem
8fe0f821f3 feat:add_ssh 2025-08-27 20:54:59 +08:00
dichgrem
77ffb7cc53 update:atv 2025-08-27 15:39:51 +08:00
dichgrem
4cc105c221 update:yt-dlp 2025-08-27 14:04:53 +08:00
87 changed files with 1273 additions and 743 deletions

View File

@@ -1,9 +1,9 @@
+++
title = "网络艺术:Aria2使用指南"
title = "下载系列(3):Aria2使用指南"
date = 2025-04-15
[taxonomies]
tags = ["网络艺术"]
tags = ["Network"]
+++
前言 Aria2是一款开源、跨平台的命令行界面下载管理器常常被各种下载器软件使用。

View File

@@ -1,5 +1,5 @@
+++
title = "网络艺术:下载技术的历史"
title = "下载系列(1):下载技术的历史"
date = 2025-04-11
[taxonomies]

195
content/Network-ssh.md Normal file
View File

@@ -0,0 +1,195 @@
+++
title = "网络艺术:SSH使用指南"
date = 2025-05-02
[taxonomies]
tags = ["Network"]
+++
前言 SSHSecure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。
<!-- more -->
## 历史
1995年芬兰赫尔辛基工业大学的研究员 Tatu Ylönen 设计了 ``SSH 协议的第一个版本(现称为 SSH 1``,同时写出了第一个实现(称为 SSH1
当时,他所在的大学网络一直发生密码嗅探攻击,他不得不为服务器设计一个更安全的登录方式。写完以后,他就把这个工具公开了,允许其他人免费使用。
SSH 可以替换 rlogin、TELNET、FTP 和 rsh 这些不安全的协议所以大受欢迎用户快速增长1995年底已经发展到五十个国家的20,000个用户。SSH 1 协议也变成 IETF 的标准文档。
1995年12月由于客服需求越来越大``TatuYlönen就成立了一家公司SCS专门销售和开发SSH``。这个软件的后续版本,逐渐从免费软件变成了专有的商业软件。
SSH 1 协议存在一些安全漏洞,所以``1996年又提出了 SSH 2 协议(或者称为 SSH 2.0``。这个协议与1.0版不兼容在1997年进行了标准化1998年推出了软件实现 SSH2。但是官方的 SSH2 软件是一个专有软件,不能免费使用,而且 SSH1的有些功能也没有提供。
1999年OpenBSD 的开发人员决定写一个``SSH 2 协议的开源实现`` ,这就是 OpenSSH 项目。该项目最初是基于 SSH 1.2.12 版本,那是当时 SSH1 最后一个开源版本。但是OpenSSH 很快就完全摆脱了原始的官方代码在许多开发者的参与下按照自己的路线发展。OpenSSH 随 OpenBSD 2.6 版本一起提供,以后又移植到其他操作系统,成为最流行的 SSH 实现。目前Linux 的所有发行版几乎都自带 OpenSSH。
## 开始
李华是一个大学生现在他买了一台服务器公网IPv4为114.514.114.514,李华打算连到上面看看:
```
ssh -p 22 root@114.514.114.514
```
随后命令行弹出了密码输入李华输入了初始密码114514,成功登录了进去;现在每次登录只要输入一行命令就可以,大功告成!
## 安全
一段时间后李华的linux知识提高了不少他发现有不少IP在用随机密码不断尝试登录自己的服务器这太危险了
于是,李华查阅了资料,发现有一篇博客[乱七八糟:服务器初始化与安全设置](https://blog.dich.bid/about-server-set/)于是他将openssh-server的端口改成了2333,并开启了fail2ban这下应该安全了
```
### 更换SSH端口
使用root账户或已经有sudo权限的用户登录到系统。
打开SSH配置文件`sshd_config`可以使用文本编辑器如nano或vi。以下是使用nano编辑器的示例
sudo vim /etc/ssh/sshd_config
在配置文件中找到以下行:
Port 22
这是SSH默认的端口号你可以将其更改为你想要的任何未被占用的端口号。例如将端口更改为2333
Port 2333
保存并关闭文本编辑器。重新启动SSH服务以应用更改
sudo service ssh restart
或者如果你的系统使用systemd可以使用以下命令
sudo systemctl restart ssh
### 安装 Fail2ban
sudo apt-get install fail2ban
#### Debian 12 及以上的版本需要手动安装 rsyslog
sudo apt-get install rsyslog
####启动 Fail2ban 服务
sudo systemctl start fail2ban
#### 开机自启动
sudo systemctl enable fail2ban
#### 查看 Fail2ban 服务状态
sudo systemctl status fail2ban
```
但是服务器依然在被爆破,李华又又研究了以下教程,决定将自己的服务器由密码登录改为密钥登录,这下没有牛马来爆破了!
```
#### 执行以下命令生成.pub后缀的公钥和无后缀的密钥
ssh-keygen
注意不同密钥对名称不能相同;同时可以为这两个文件用密码加密;
#### 随后将.pub后缀的公钥中的内容写入服务器的~/.ssh/authorized_keys中
#### 使用以下命令编译服务器的SSH配置
vim /etc/ssh/sshd_config
将其中的该行改为PasswordAuthentication no保存退出随后使用
sudo systemctl restart sshd
重启SSH即可禁用密码登录
#### 将PermitRootLogin一栏改为PermitRootLogin prohibit-password**即可实现仅root用户密钥登录
#### 使用以下命令查看输出,
sudo cat /etc/ssh/sshd_config | grep -E 'PasswordAuthentication|PubkeyAuthentication'
如有PasswordAuthentication no → 禁用密码登录以及PubkeyAuthentication yes → 允许密钥登录则成功。
> 注意authorized_keys**的权限为600如果不是则需要改正chmod 600 ~/.ssh/authorized_keys
```
## 管理
现在服务器安全了但随着服务器数量的增加李华很快发现一个新问题如何管理这些个SSH连接呢手动输入太慢了每次都要复制粘贴也很麻烦但是又不得不用总不能回退到密码时代吧况且数量多了密码也记不住。
于是李华运用软件工程学的思想想着这种大众的需求应该有人解决过了吧果然李华很快在GitHub上找到了一个开源跨平台的SSH管理软件[electerm](https://github.com/electerm/electerm)!
![electerm](/images/electerm.png)
通过在electerm的书签中写入服务器的地址登录用户和密钥只要打开electerm并点击书签就可以连接了太方便了
## 返璞
随着技术阅历的增长李华看electerm越来越不顺眼用它管理SSH固然方便但同时这就得在各个系统上安装一个Electron架构的软件而且用electerm的shell并不好用,并且备份electerm的配置不能给其他软件使用。终于在一次界面崩溃之后李华忍无可忍决定更换新的方案
通过研究李华发现原来openssh有自带的管理方法且非常便捷好用。
首先,李华在用户目录下创建了一个``.ssh``文件夹linux中在``/home/username/.ssh``这里windows下在``C:\Users\username\.ssh``这里。
随后李华安装了openssh在系统上linux中一般已经存在windows上在``设置-系统-可选功能-添加功能``中选中OpenSSH Client和openssh-server开启即可.
随后,李华在.ssh文件夹下创建了一个文件名为``config``,并在其中写入以下内容:
```
Host US
HostName 114.514.114.514
User root
IdentityFile ~/.ssh/US
IdentitiesOnly yes
```
随后李华在对应的位置``~/.ssh/US``创建了一个文件,李华将服务器的私钥放了进去,里面是以``-----BEGIN OPENSSH PRIVATE KEY-----``开头``-----END OPENSSH PRIVATE KEY-----``结尾的私钥。
现在,要登录``114.514.114.514``这台服务器,只需要使用``ssh US``命令就可以连上服务器了,不用再手动输入了!
## 归真
在进一步了解SSH之后李华很快又发现了新的问题服务器的私钥放在本地是不安全的尤其是Windows这种安装源松散鱼龙混杂的系统上。究竟有没有更好的方法呢在对keepassxc进行研究后李华终于得出了一个几乎完美的方案
- 开启keepassxc的SSH代理集成
- 本地.ssh文件夹只保留公钥
- 私钥保存在keepassxc的一个组中
这样一来,当你执行``ssh xxx``时ssh 不是去读私钥文件,而是通过``SSH_AUTH_SOCK``环境变量找到 KeePassXC 的 agent。KeePassXC 会提示你解锁数据库/确认使用密钥。私钥不会离开 KeePassXC只是 KeePassXC ``用私钥做一次签名``,把结果返回给 ssh。这样``硬盘上不需要保存私钥文件``,安全性更高,且``只需要备份.ssh文件夹和keepassxc的kbdx文件``即可.
那么该怎么做呢?
首先,将.ssh文件夹中的config进行修改,把私钥文件改为公钥文件,同时创建对应的``~/.ssh/US.pub``公钥文件里面是以ssh-ed25519或者ssh-rsa开头的公钥.
```
Host US
HostName 114.514.114.514
User root
IdentityFile ~/.ssh/US.pub
IdentitiesOnly yes
```
随后在keepassxc的设置-ssh代理中开启``启用SSH代理集成``.openssh
接下来在keepassxc中左侧栏``新建一个文件夹``名为SSH里面``新建条目``标题为US和config中一致然后在右侧``高级``中``新建``附件文件名为US和config中保持一致文件内容为US的私钥.随后在左侧SSH代理中选中``在打开或解锁数据库的时候,向代理添加密钥``和``数据库锁定或关闭时从SSH代理中删除密钥``这两个选项,并将下面的``私钥``选择``附件``即为我们刚刚在高级中新建的US可以看到对应的公钥也出现了上一步没有公钥的可以在这里添加.按``确定``后关闭keepassxc并重新开启这时候就可以使用``ssh US``命令登录了!
> 注意每次登录前先开启keepassxc并解锁
---
**Done.**

View File

@@ -1,38 +1,40 @@
+++
title = "网络艺术:Yt-dlp使用指南"
title = "下载系列(2):Yt-dlp使用指南"
date = 2025-04-12
[taxonomies]
tags = ["网络艺术"]
tags = ["Network"]
+++
前言 有时候我们想要视频保存到本地以便离线回看。yt-dlp是一款功能强大的命令行工具专注于下载视频与音频内容支持数千个平台是开源下载工具爱好者的常用选择。
前言 yt-dlp是一款功能强大的命令行工具专注于下载视频与音频内容支持数千个平台是开源下载工具爱好者的常用选择。
<!-- more -->
有时候我们想要下载网络上的某些视频比如BilibiliYouTube等等但它们没有提供下载按钮这时候就可以用开源的yt-dlp来进行下载。和Aria2一样很多下载软件的核心就是yt-dlp.
## 历史沿革:从 youtube-dl 到 yt-dlp
## 历史
- **起源与演进**
`youtube-dl` 由 Ricardo García González 于 **2006 年**创建,最初仅支持 YouTube随后扩展至其他网站成为 GitHub 上最受欢迎的开源下载项目之一.项目维护者在 2011 年、2021 年等阶段陆续交替,由 phihag、dstftw 等接手.2020 年唱片业协会RIAA发起 DMCA 要求删除该项目,虽一度被移除,但在公众与 EFF 的推动下于当年 11 月恢复,并促使 GitHub 改进相关策略.
- **停滞youtube-dlc → yt-dlp 的诞生**
随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,随即在 **2021 年**演变为更活跃的 `yt-dlp` 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,迅速在 Linux 发行版中取代 youtube-dl (如 Ubuntu 22.04 之后).
随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,**2021 年**演变为更活跃的 `yt-dlp` 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,成为了GitHub上star最多的项目之一.
- **重构与功能拓展**
`yt-dlp` 从 youtube-dlc 完全重构,新增许多 extractor解析器、改进配置与默认行为还扩展了插件系统和兼容性支持.
## 各平台安装指南
## 安装
- 通用Linux/macOS/Windows
### Windows
下载官方最新可执行文件:
从yt-dlp官方GitHub上下载exe二进制文件:
```bash
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
````
[yt-dlp](https://github.com/yt-dlp/yt-dlp/releases/tag/2025.08.22)
将其放到一个目录下,比如``C:\Users\<你的用户名>\yt-dlp\yt-dlp.exe``,随后添加环境变量。
> 添加环境变量Win键搜索“环境变量”打开“编辑系统环境变量”点击最下方的“环境变量”选择“系统变量”中的path点击“编辑”新建一个变量将上面的目录 C:\Users\<你的用户名>\yt-dlp\ 写入,注意去掉前后引号,随后确定-确定-确定退出。
更新版本:
@@ -46,15 +48,21 @@ yt-dlp -U
python3 -m pip install -U yt-dlp
```
- Linux 发行版仓库
各发行版可能提供略滞后的 yt-dlp
### Linux 发行版
- Debian / Ubuntu`sudo apt install yt-dlp`
- Arch / Manjaro`sudo pacman -S yt-dlp`
- Fedora`sudo dnf install yt-dlp` 等。
- Fedora`sudo dnf install yt-dlp`
- Nixos:
```
{pkgs, ...}: {
home.packages = with pkgs; [
peazip
];
}
```
- AndroidTermux
### AndroidTermux
```bash
pkg update && pkg upgrade
@@ -62,7 +70,84 @@ pkg install python libexpat openssl ffmpeg
python3 -m pip install -U yt-dlp
```
## 常用命令
## 下载实战
- **下载B站带字幕视频**:
```
yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat
--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持)
--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流
```
- **下载YouTube视频**
先使用这个命令查看可用格式:
```
yt-dlp -F https://www.youtube.com/watch?v=xxxxxxxxxxxx
```
然后它会列举出所有可用的格式,如下:
```
[youtube] MgtOAVOXBWo: Downloading webpage
[youtube] MgtOAVOXBWo: Downloading tv client config
[youtube] MgtOAVOXBWo: Downloading tv player API JSON
[youtube] MgtOAVOXBWo: Downloading ios player API JSON
[youtube] MgtOAVOXBWo: Downloading m3u8 information
[info] Available formats for MgtOAVOXBWo:
ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27 0 │ mhtml │ images storyboard
sb1 mhtml 80x45 0 │ mhtml │ images storyboard
sb0 mhtml 160x90 0 │ mhtml │ images storyboard
233 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, low
234 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, high
602 mp4 256x144 15 │ ~ 9.23MiB 81k m3u8 │ vp09.00.10.08 81k video only Untested
269 mp4 256x144 30 │ ~ 14.94MiB 130k m3u8 │ avc1.4D400C 130k video only Untested
603 mp4 256x144 30 │ ~ 15.90MiB 139k m3u8 │ vp09.00.11.08 139k video only Untested
229 mp4 426x240 30 │ ~ 33.33MiB 291k m3u8 │ avc1.4D4015 291k video only Untested
604 mp4 426x240 30 │ ~ 25.82MiB 225k m3u8 │ vp09.00.20.08 225k video only Untested
230 mp4 640x360 30 │ ~ 73.50MiB 642k m3u8 │ avc1.4D401E 642k video only Untested
605 mp4 640x360 30 │ ~ 55.73MiB 487k m3u8 │ vp09.00.21.08 487k video only Untested
231 mp4 854x480 30 │ ~104.35MiB 911k m3u8 │ avc1.4D401F 911k video only Untested
606 mp4 854x480 30 │ ~ 94.79MiB 827k m3u8 │ vp09.00.30.08 827k video only Untested
311 mp4 1280x720 60 │ ~330.73MiB 2887k m3u8 │ avc1.4D4020 2887k video only Untested
612 mp4 1280x720 60 │ ~197.04MiB 1720k m3u8 │ vp09.00.40.08 1720k video only Untested
312 mp4 1920x1080 60 │ ~486.64MiB 4248k m3u8 │ avc1.64002A 4248k video only Untested
617 mp4 1920x1080 60 │ ~369.06MiB 3222k m3u8 │ vp09.00.41.08 3222k video only Untested
623 mp4 2560x1440 60 │ ~ 1.00GiB 8945k m3u8 │ vp09.00.50.08 8945k video only Untested
```
我们下载312和233,即视频和音频,使用以下命令:
```
yt-dlp -f "312+233" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxxx
```
这行命令会自动将下载的312的1080p/H.264的视频和233的音频合并为一个mp4视频注意新的名称不能太长否则会下载失败。
如果要下载带字幕的视频,则使用
```
yt-dlp -f "312+233" --write-subs --write-auto-subs --embed-subs --sub-langs "zh.*,en.*" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxx
```
这个命令会:
- 下载1080p视频
- 下载中文和英文字幕(包括自动生成的)
- 将字幕嵌入到视频文件中
- 同时保存单独的字幕文件
- 参数说明
```
--write-subs: 下载手动字幕
--write-auto-subs: 下载自动生成的字幕
--embed-subs: 将字幕嵌入到视频中
--sub-langs "zh.*": 指定下载中文字幕(所有中文变体)
--sub-format srt: 指定字幕格式(可选)
```
## 常用参数
- **下载视频**
@@ -151,40 +236,6 @@ python3 -m pip install -U yt-dlp
在 `~/.config/yt-dlp/config` 文件中添加习惯参数,如下载路径、格式偏好等。
- **比如下载B站带字幕视频的命令**:
```
yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat
--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持)
--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流
```
---
## 进阶技巧
- **FFmpeg 合并支持**:若视频与音频分离,需安装 FFmpeg 才能完成合并。
- **处理地理限制**:结合 `--proxy` 或 `--geo-bypass` 等选项使用 VPN/代理绕过区域限制。
- **应对下载失败(如 403**
```bash
yt-dlp --rm-cache-dir
```
- **设置 UA、Referer、打印请求头调试**
```bash
--add-headers "User-Agent: ..." --print http_headers
```
- **Stability & 更新问题**:建议避免使用发行版中的旧版本,推荐使用官方可执行或 pip 方法。
---
**Done.**

View File

@@ -27,13 +27,30 @@ tags = ["综合工程"]
## 一.选择合适的平台
X86还是Arm两者之间各有优点截止到今天各种Arm电视盒子已经非常成熟价格便宜也可以使用运营商的电视盒子进行刷机性能并不会太弱而X86平台往往价格偏贵且解码性能和功能适配没有和电视生态联系紧密因此建议首选Arm平台
X86还是Arm两者之间各有优点截止到今天各种Arm电视盒子已经非常成熟价格便宜也可以使用运营商的电视盒子进行刷机性能并不会太弱而X86平台往往价格偏贵驱动不全,解码性能和功能适配没有和电视生态联系紧密因此建议首选Arm平台.
本文以s905l3a盒子为示例截止目前平均价格在60rmb左右非常具有性价比。
| 项目 | 规格说明 |
| ------- | ---------------------------------------------- |
| CPU 架构 | 四核 ARM Cortex-A53 (64-bit) |
| 主频 | \~1.8 GHz |
| 制程工艺 | 12 nm |
| GPU | Mali-G31 MP2约 850 MHz20.8 GFLOPS |
| 视频解码 | H.265 4Kp75 (10-bit), H.264 4Kp30 |
| 视频编码 | H.264/H.265 1080p60 |
| 最大显示输出 | 4K @ 75fps |
| 内存支持 | 支持 DDR3, DDR4-2666, LPDDR4-3200设备常见 2 GB DDR4 |
| 存储 | 常见 8 GB eMMC5.1 |
| 接口支持 | USB2.0/3.0, HDMI 2.0b/2.1 |
| 网络支持 | 千兆 MAC (常见盒子为 10/100), Wi-Fi, BT4.1/5.0 |
| 发布时间/制程 | Q3 202212 nm |
> 如果预算充足也可以选择s905x3s905x4以及rk3528等等芯片的盒子。如果有旧手机也可以改装为电视盒子比如骁龙865盒子性能非常强大。
## 二.选择合适的系统
无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且不要迷信所谓的“无广告”电视盒子,它们往往配置低,性价比不高且还是有内置付费项目,甚至有一些根本没有做到去广告
无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且要小心一些所谓的“无广告”电视盒子或者外贸盒子,它们往往配置低,性价比不高且还是有内置付费项目,甚至有一些还会偷偷跑PCDN。因此建议买到手之后自行刷写固件
| 特性 | **Android-x86** | **Android TV** |
|--------------------|---------------------------------------------------------|----------------------------------------------------------|
@@ -48,75 +65,29 @@ X86还是Arm两者之间各有优点截止到今天各种Arm电视盒子
| **遥控器支持** | 不适配遥控器,主要使用鼠标键盘操作。 | 专为遥控器优化,支持按键导航和语音输入。 |
| **开源贡献** | 由社区维护,支持各种自定义和实验功能。 | 由 Google 官方主导OEM 厂商提供硬件优化支持。 |
---
> Android-x86 的安装类似windows需要命令行界面配置Android TV安装类似 Android手机通过刷分区或TWRP卡刷安装。
> Android-x86 的安装类似windowsAndroid TV安装类似 Android手机通过刷分区或TWRP卡刷安装。
> Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等的驱动可能不兼容或需要额外的配置。
> Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等的驱动可能不兼容或需要额外的配置,本文不再说明Android TV x86的安装与使用
**刷 Tosathony Android TV X86 准备工作**
## 三.安装软件
- 1.[Tosathony 制作的 Android TV x86 9.0](https://pan.baidu.com/s/17eDDrf4WzWVmrc9hLw-c_w?pwd=a728)
安装软件有很多方法可以使用U盘将apk安装包拷入也可以使用localsend将apk安装包通过内网传输过去。这里介绍一种通过ADB安装软件的方法。
- 2.[Rufus 写盘工具](https://www.423down.com/10080.html)
- 首先我们在设置中找到“设置”>“设备首选项”>“关于”,然后在“构建”上点击几次以解锁``开发者模式``随后开启USB调试开关。
- 3.[Android tv Remote 手机遥控器软件:](https://android-tv-remote-control.en.softonic.com/android)
- 随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址然后用ADB连接上去这里使用命令``adb connect <IP 地址>:<端口> ``随后在ATV端授权连接例如
- 4.[Tiny ADB 软件](https://androidmtk.com/tiny-adb-and-fastboot-tool#installer)
```
adb connect 192.168.1.666:9527
**一些可安装的软件**
connected to 192.168.1.666:9527
- [kodi](http://www.kodiplayer.cn/)
adb devices
- [当贝市场](https://www.dangbei.com/apps/)
xxxxxxxxx sideload
```
- [哔哩哔哩TV版](https://www.fenxm.com/104.html)
- [ATV Launcher](https://www.fenxm.com/592.html)
## 一、写盘BIOS启动
- 使用 Rufus 将下载好的 ATV 镜像写入U盘。
- 将U盘插到目标主机上并设置 BIOS-boot 优先启动,不同设备进入 BIOS 的按键不同大部分是F2或者DEL
## 二、开始安装
- boot 成功后选择自动安装;
- 经过跑码后进入若干个选项,一路 yes 过去,文件系统选 ext4;随后运行 ATV 并拔出U盘
## 三、进入Google界面
由于国内网络环境问题,导致一些界面无法进入,可使用如下方法或全局科学。
1.如果卡在 Google的logo 界面或者动画比较缓慢,或者重启后无法进入 ATV 界面,需要在``BIOS-Advanced-OS selection``中将其设置为Windows 8.X或者Android。
2.然后可以看到 PayPal 界面,这里使用可以 `Ctrl+Alt+F1` 进入命令行界面,随后输入
``pm disable com.tosanthony.tv.networkprovider #注意空格``
回车执行,随后按`Ctrl+Alt+F7或F8`回到图形界面。
3.下一步,我们可以看到自动更新界面,这里我们需要禁用它:
同样`Ctrl+Alt+F1` 进入命令行界面,随后输入
``pm disable com.google.android.tungsten.setupwraith #注意空格``
回车执行,随后按`Ctrl+Alt+F7或F8`回到图形界面。
4.此时会进入一个 WiFi 界面如果你是使用网线直连就没有问题或者用键盘连接家里的WiFi作者因为工控机没有WiFi模块在这里卡了半天。
5.随后进入了 AndroidTV 的桌面。
## 四、安装软件并设置桌面启动
1.首先我们在设置中找到“设置”>“设备首选项”>“关于”然后在“构建”上点击几次以解锁“开发人员”选项随后开启USB调试开关。
2.随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址然后用Tiny ADB连接上去这里使用命令``adb connect <IP 地址> ``随后在ATV端授权连接
3.接着使用命令adb install <path to android app.apk>将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。
- 接着使用命令``adb install <path to android app.apk>``将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。
**一些 ADB 常用命令**
@@ -131,42 +102,65 @@ adb shell wm density <dpi> #改变显示器的像素密度。
adb kill server #切断 PC 和 Android TV 之间的连接。
```
4.如果存在一些软件无法安装可开启ARM兼容层具体方法为在 `dl.android-x86.org/houdini/9_y/houdini.sfs` 中下载得到`houdini.sfs`,把文件名改成`houdini9_y.sfs`随后拷贝进U盘进入命令行界面输入 `ls` 找到 storage 目录,输入 `cd storage` 进入你的U盘输入 `ls` ,查看你拷贝的 `houdini9_y.sfs` 文件,并复制到该目录下。
**要安装的软件**
- [TVBox](https://github.com/o0HalfLife0o/TVBoxOSC/releases/tag/20250706-1456):前猫影视,可自行添加源,包括电影电视剧等等,选择 armeabi-generic-java.apk
- [PPSSPP](https://www.ppsspp.org/download/):PSP模拟器支持高清修复游戏选择 APK for Android
- [BBLL](https://github.com/xiaye13579/BBLL):第三方开源哔哩哔哩客户端适配TV界面不需要额外VIP
- [酷9TV](https://www.right.com.cn/FORUM/thread-8437225-1-1.html):经典IPTV播放器功能丰富可导入IPTV源使用
- [VLC](http://www.videolan.org/vlc/download-android.html):老牌开源音视频播放器,支持远程和串流功能
- [Kodi](https://github.com/xbmc/xbmc):开源的跨平台多功能媒体播放器和数字媒体娱乐中心,非常强大
- [TV-Bro](https://github.com/truefedex/tv-bro):适用与安卓TV的浏览器经过了遥控器优化设计可以作为网页播放器
- [MaterialFiles](https://github.com/zhanghai/MaterialFiles):又名质感文件,优秀的开源文件管理器
- [Localsend](https://github.com/localsend/localsend):经典内网互传工具可以通过它传输apk安装包或者视频到TV上
- [ATV Launcher](https://www.fenxm.com/592.html):平铺风格的安卓启动器,可以形成海报墙效果
> 注意s905l3a为32位架构需要下载带armv7a的软件
## 四.设置ATV桌面
安装所需的软件包后我们可以删除自带的牛马软件或者不需要的软件比如我们要安装ATV就可以删除当贝桌面。
- 连接到ADB成功后我们使用``adb shell``进入shell随后使用命令``pm list packages``列出所有软件包;
- 可以先使用``pm disable-user --user 0 com.dangbei1.tvlauncher`` 禁用软件,确认没有问题之后再用``pm uninstall -k --user 0 com.dangbei1.tvlauncher``删除;
- 对于暂时无法确定包名的软件,可以先打开,再使用``adb shell dumpsys activity activities | grep mResumedActivity``获取当前前台应用的包名;
- 可以进入安卓原生设置里面将默认主屏幕应用改为ATV代替掉自带的桌面,并使用
```
cp houdini9_y.sfs /system/etc
enable_nativebridge
reboot
adb shell pm disable-user --user 0 com.google.android.tvlauncher
adb shell pm disable-user --user 0 com.google.android.tungsten.setupwraith
```
5.安装一些软件包后我们发现需要代替掉ATV自带的桌面从而形成海报墙效果,这和 linux 的桌面环境切换有异曲同工之处。注意:替换前需要已经安装完成其他桌面!!!!(比如 ATV Launcher )我们使用以下命令禁用 google 默认的桌面。随后重启即可看到ATV的海报墙
命令禁用原来的默认桌面。随后重启盒子即可看到海报墙效果,如果ATV桌面没有开机自启动可以使用Launch on Boot工具
``pm disable-user --user 0 com.google.android.tvlauncher ``
恢复原有桌面:
```
C:\Users\root>adb shell
generic_x86:/ $ su
generic_x86:/ # pm enable --user 0 com.google.android.tvlauncher
Package com.google.android.tvlauncher new state: enabled
```
**最终效果**
![s905-atv](/images/s905-atv.webp)
## 后记
- [Android TV google 官方 TV 库](https://github.com/googlesamples/leanback-showcase)
- [智能电视,电视盒子开发 SDK](https://github.com/boxmate/tvframe)
- [选中框切换动画,适用于电视](https://github.com/EZJasonBoy/FocusChangeAnimation)
- [Android tv盒子投影仪 控件](https://github.com/FrozenFreeFall/Android-tv-widget)
- [TV 项目常用工具(焦点问题,适配问题等.)](https://github.com/genius158/TVProjectUtils)
- [e900v22c项目与讨论组文档](https://github.com/Calmact/e900v22c)

View File

@@ -622,8 +622,8 @@
<span class="button next">
<a href="https://blog.dich.bid/about-gpg/">
<span class="button__text">乱七八糟:GPG使用小记</span>&nbsp;
<a href="https://blog.dich.bid/network-ssh/">
<span class="button__text">网络艺术:SSH使用指南</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>

View File

@@ -247,9 +247,9 @@
</div>
<div class="pagination__buttons">
<span class="button previous">
<a href="https://blog.dich.bid/about-baci/">
<a href="https://blog.dich.bid/network-ssh/">
<span class="button__icon"></span>&nbsp;
<span class="button__text">乱七八糟:Baci实验笔记</span>
<span class="button__text">网络艺术:SSH使用指南</span>
</a>
</span>

View File

@@ -601,7 +601,7 @@
<span class="button previous">
<a href="https://blog.dich.bid/network-aria2/">
<span class="button__icon"></span>&nbsp;
<span class="button__text">网络艺术:Aria2使用指南</span>
<span class="button__text">下载系列(3):Aria2使用指南</span>
</a>
</span>

View File

@@ -370,7 +370,7 @@ Markdown 使用一个或多个空行来分隔不同的段落。如果要换行
<span class="button next">
<a href="https://blog.dich.bid/network-download-1/">
<span class="button__text">网络艺术:下载技术的历史</span>&nbsp;
<span class="button__text">下载系列(1):下载技术的历史</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>

View File

@@ -125,6 +125,16 @@
::
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
</li>
<li class="post-list">
<a href="https://blog.dich.bid/network-ssh/">
<span class="post-date">2025-05-02</span>
:: <span class="post-list-title">网络艺术:SSH使用指南</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
</li>
<li class="post-list">
<a href="https://blog.dich.bid/about-baci/">
@@ -149,27 +159,27 @@
<li class="post-list">
<a href="https://blog.dich.bid/network-aria2/">
<span class="post-date">2025-04-15</span>
:: <span class="post-list-title">网络艺术:Aria2使用指南</span></a>
:: <span class="post-list-title">下载系列(3):Aria2使用指南</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
</li>
<li class="post-list">
<a href="https://blog.dich.bid/network-yt-dlp/">
<span class="post-date">2025-04-12</span>
:: <span class="post-list-title">网络艺术:Yt-dlp使用指南</span></a>
:: <span class="post-list-title">下载系列(2):Yt-dlp使用指南</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
</li>
<li class="post-list">
<a href="https://blog.dich.bid/network-download-1/">
<span class="post-date">2025-04-11</span>
:: <span class="post-list-title">网络艺术:下载技术的历史</span></a>
:: <span class="post-list-title">下载系列(1):下载技术的历史</span></a>
<span class="post-tags-inline">
::

View File

@@ -45,6 +45,25 @@
<summary type="html">&lt;p&gt;前言 PGP&#x2F;GPG 的核心功能——公钥加密、数字签名、信任管理广泛用于各个行业,本文简单说明了其使用方法。&lt;&#x2F;p&gt;</summary>
</entry>
<entry xml:lang="en">
<title>网络艺术:SSH使用指南</title>
<published>2025-05-02T00:00:00+00:00</published>
<updated>2025-05-02T00:00:00+00:00</updated>
<author>
<name>
Unknown
</name>
</author>
<link rel="alternate" type="text/html" href="https://blog.dich.bid/network-ssh/"/>
<id>https://blog.dich.bid/network-ssh/</id>
<summary type="html">&lt;p&gt;前言 SSHSecure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。&lt;&#x2F;p&gt;</summary>
</entry>
<entry xml:lang="en">
<title>乱七八糟:Baci实验笔记</title>
@@ -85,7 +104,7 @@
</entry>
<entry xml:lang="en">
<title>网络艺术:Aria2使用指南</title>
<title>下载系列(3):Aria2使用指南</title>
<published>2025-04-15T00:00:00+00:00</published>
<updated>2025-04-15T00:00:00+00:00</updated>
@@ -104,7 +123,7 @@
</entry>
<entry xml:lang="en">
<title>网络艺术:Yt-dlp使用指南</title>
<title>下载系列(2):Yt-dlp使用指南</title>
<published>2025-04-12T00:00:00+00:00</published>
<updated>2025-04-12T00:00:00+00:00</updated>
@@ -119,11 +138,11 @@
<link rel="alternate" type="text/html" href="https://blog.dich.bid/network-yt-dlp/"/>
<id>https://blog.dich.bid/network-yt-dlp/</id>
<summary type="html">&lt;p&gt;前言 有时候我们想要视频保存到本地以便离线回看。yt-dlp是一款功能强大的命令行工具专注于下载视频与音频内容支持数千个平台是开源下载工具爱好者的常用选择。&lt;&#x2F;p&gt;</summary>
<summary type="html">&lt;p&gt;前言 yt-dlp是一款功能强大的命令行工具专注于下载视频与音频内容支持数千个平台是开源下载工具爱好者的常用选择。&lt;&#x2F;p&gt;</summary>
</entry>
<entry xml:lang="en">
<title>网络艺术:下载技术的历史</title>
<title>下载系列(1):下载技术的历史</title>
<published>2025-04-11T00:00:00+00:00</published>
<updated>2025-04-11T00:00:00+00:00</updated>

View File

@@ -134,9 +134,27 @@
<li>实现<strong>游戏主机串流</strong>包括PS/Xbox/Switch等等</li>
</ul>
<h2 id="yi-xuan-ze-he-gua-de-ping-tai">一.选择合适的平台</h2>
<p>X86还是Arm两者之间各有优点截止到今天各种Arm电视盒子已经非常成熟价格便宜也可以使用运营商的电视盒子进行刷机性能并不会太弱而X86平台往往价格偏贵且解码性能和功能适配没有和电视生态联系紧密因此建议首选Arm平台</p>
<p>X86还是Arm两者之间各有优点截止到今天各种Arm电视盒子已经非常成熟价格便宜也可以使用运营商的电视盒子进行刷机性能并不会太弱而X86平台往往价格偏贵驱动不全,解码性能和功能适配没有和电视生态联系紧密因此建议首选Arm平台.</p>
<p>本文以s905l3a盒子为示例截止目前平均价格在60rmb左右非常具有性价比。</p>
<table><thead><tr><th>项目</th><th>规格说明</th></tr></thead><tbody>
<tr><td>CPU 架构</td><td>四核 ARM Cortex-A53 (64-bit)</td></tr>
<tr><td>主频</td><td>~1.8 GHz</td></tr>
<tr><td>制程工艺</td><td>12 nm</td></tr>
<tr><td>GPU</td><td>Mali-G31 MP2约 850 MHz20.8 GFLOPS</td></tr>
<tr><td>视频解码</td><td>H.265 4Kp75 (10-bit), H.264 4Kp30</td></tr>
<tr><td>视频编码</td><td>H.264/H.265 1080p60</td></tr>
<tr><td>最大显示输出</td><td>4K @ 75fps</td></tr>
<tr><td>内存支持</td><td>支持 DDR3, DDR4-2666, LPDDR4-3200设备常见 2 GB DDR4</td></tr>
<tr><td>存储</td><td>常见 8 GB eMMC5.1</td></tr>
<tr><td>接口支持</td><td>USB2.0/3.0, HDMI 2.0b/2.1</td></tr>
<tr><td>网络支持</td><td>千兆 MAC (常见盒子为 10/100), Wi-Fi, BT4.1/5.0</td></tr>
<tr><td>发布时间/制程</td><td>Q3 202212 nm</td></tr>
</tbody></table>
<blockquote>
<p>如果预算充足也可以选择s905x3s905x4以及rk3528等等芯片的盒子。如果有旧手机也可以改装为电视盒子比如骁龙865盒子性能非常强大。</p>
</blockquote>
<h2 id="er-xuan-ze-he-gua-de-xi-tong">二.选择合适的系统</h2>
<p>无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且不要迷信所谓的“无广告”电视盒子,它们往往配置低,性价比不高且还是有内置付费项目,甚至有一些根本没有做到去广告</p>
<p>无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且要小心一些所谓的“无广告”电视盒子或者外贸盒子,它们往往配置低,性价比不高且还是有内置付费项目,甚至有一些还会偷偷跑PCDN。因此建议买到手之后自行刷写固件</p>
<table><thead><tr><th>特性</th><th><strong>Android-x86</strong></th><th><strong>Android TV</strong></th></tr></thead><tbody>
<tr><td><strong>目标用户</strong></td><td>面向 PC 用户,将 Android 运行在 x86/x86_64 设备上。</td><td>面向电视和机顶盒用户,优化用于遥控器或语音操作。</td></tr>
<tr><td><strong>适配设备</strong></td><td>传统 PC、笔记本、平板电脑等 x86 架构设备。</td><td>智能电视、电视盒子等 ARM 或特定芯片架构设备。</td></tr>
@@ -149,77 +167,33 @@
<tr><td><strong>遥控器支持</strong></td><td>不适配遥控器,主要使用鼠标键盘操作。</td><td>专为遥控器优化,支持按键导航和语音输入。</td></tr>
<tr><td><strong>开源贡献</strong></td><td>由社区维护,支持各种自定义和实验功能。</td><td>由 Google 官方主导OEM 厂商提供硬件优化支持。</td></tr>
</tbody></table>
<hr />
<blockquote>
<p>Android-x86 的安装类似windows,需要命令行界面配置Android TV安装类似 Android手机通过刷分区或TWRP卡刷安装。</p>
<p>Android-x86 的安装类似windowsAndroid TV安装类似 Android手机通过刷分区或TWRP卡刷安装。</p>
</blockquote>
<blockquote>
<p>Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等的驱动可能不兼容或需要额外的配置。</p>
<p>Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等的驱动可能不兼容或需要额外的配置,本文不再说明Android TV x86的安装与使用</p>
</blockquote>
<p><strong>刷 Tosathony Android TV X86 准备工作</strong></p>
<h2 id="san-an-zhuang-ruan-jian">三.安装软件</h2>
<p>安装软件有很多方法可以使用U盘将apk安装包拷入也可以使用localsend将apk安装包通过内网传输过去。这里介绍一种通过ADB安装软件的方法。</p>
<ul>
<li>
<p>1.<a href="https://pan.baidu.com/s/17eDDrf4WzWVmrc9hLw-c_w?pwd=a728">Tosathony 制作的 Android TV x86 9.0</a></p>
<p>首先我们在设置中找到“设置”&gt;“设备首选项”&gt;“关于”,然后在“构建”上点击几次以解锁<code>开发者模式</code>随后开启USB调试开关。</p>
</li>
<li>
<p>2.<a href="https://www.423down.com/10080.html">Rufus 写盘工具</a></p>
</li>
<li>
<p>3.<a href="https://android-tv-remote-control.en.softonic.com/android">Android tv Remote 手机遥控器软件:</a></p>
</li>
<li>
<p>4.<a href="https://androidmtk.com/tiny-adb-and-fastboot-tool#installer">Tiny ADB 软件</a></p>
<p>随后在设置 &gt; 设备首选项 &gt; 关于 &gt; 状态中找到并记下IP 地址然后用ADB连接上去这里使用命令<code>adb connect &lt;IP 地址&gt;:&lt;端口&gt; </code>随后在ATV端授权连接例如</p>
</li>
</ul>
<p><strong>一些可安装的软件</strong></p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span> adb connect 192.168.1.666:9527
</span><span>
</span><span>connected to 192.168.1.666:9527
</span><span>
</span><span> adb devices
</span><span>
</span><span>xxxxxxxxx sideload
</span></code></pre>
<ul>
<li>
<p><a href="http://www.kodiplayer.cn/">kodi</a></p>
</li>
<li>
<p><a href="https://www.dangbei.com/apps/">当贝市场</a></p>
</li>
<li>
<p><a href="https://www.fenxm.com/104.html">哔哩哔哩TV版</a></p>
</li>
<li>
<p><a href="https://www.fenxm.com/592.html">ATV Launcher</a></p>
</li>
<li>接着使用命令<code>adb install &lt;path to android app.apk&gt;</code>将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。</li>
</ul>
<h2 id="yi-xie-pan-biosqi-dong">一、写盘BIOS启动</h2>
<ul>
<li>
<p>使用 Rufus 将下载好的 ATV 镜像写入U盘。</p>
</li>
<li>
<p>将U盘插到目标主机上并设置 BIOS-boot 优先启动,不同设备进入 BIOS 的按键不同大部分是F2或者DEL</p>
</li>
</ul>
<h2 id="er-kai-shi-an-zhuang">二、开始安装</h2>
<ul>
<li>
<p>boot 成功后选择自动安装;</p>
</li>
<li>
<p>经过跑码后进入若干个选项,一路 yes 过去,文件系统选 ext4;随后运行 ATV 并拔出U盘</p>
</li>
</ul>
<h2 id="san-jin-ru-googlejie-mian">三、进入Google界面</h2>
<p>由于国内网络环境问题,导致一些界面无法进入,可使用如下方法或全局科学。</p>
<p>1.如果卡在 Google的logo 界面或者动画比较缓慢,或者重启后无法进入 ATV 界面,需要在<code>BIOS-Advanced-OS selection</code>中将其设置为Windows 8.X或者Android。</p>
<p>2.然后可以看到 PayPal 界面,这里使用可以 <code>Ctrl+Alt+F1</code> 进入命令行界面,随后输入</p>
<p><code>pm disable com.tosanthony.tv.networkprovider #注意空格</code></p>
<p>回车执行,随后按<code>Ctrl+Alt+F7或F8</code>回到图形界面。</p>
<p>3.下一步,我们可以看到自动更新界面,这里我们需要禁用它:</p>
<p>同样<code>Ctrl+Alt+F1</code> 进入命令行界面,随后输入</p>
<p><code>pm disable com.google.android.tungsten.setupwraith #注意空格</code></p>
<p>回车执行,随后按<code>Ctrl+Alt+F7或F8</code>回到图形界面。</p>
<p>4.此时会进入一个 WiFi 界面如果你是使用网线直连就没有问题或者用键盘连接家里的WiFi作者因为工控机没有WiFi模块在这里卡了半天。</p>
<p>5.随后进入了 AndroidTV 的桌面。</p>
<h2 id="si-an-zhuang-ruan-jian-bing-she-zhi-zhuo-mian-qi-dong">四、安装软件并设置桌面启动</h2>
<p>1.首先我们在设置中找到“设置”&gt;“设备首选项”&gt;“关于”然后在“构建”上点击几次以解锁“开发人员”选项随后开启USB调试开关。</p>
<p>2.随后在设置 &gt; 设备首选项 &gt; 关于 &gt; 状态中找到并记下IP 地址然后用Tiny ADB连接上去这里使用命令<code>adb connect &lt;IP 地址&gt; </code>随后在ATV端授权连接</p>
<p>3.接着使用命令adb install <path to android app.apk>将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。</p>
<p><strong>一些 ADB 常用命令</strong></p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>adb reboot #将重启 Android 设备。
</span><span>
@@ -231,21 +205,64 @@
</span><span>
</span><span>adb kill server #切断 PC 和 Android TV 之间的连接。
</span></code></pre>
<p>4.如果存在一些软件无法安装可开启ARM兼容层具体方法为在 <code>dl.android-x86.org/houdini/9_y/houdini.sfs</code> 中下载得到<code>houdini.sfs</code>,把文件名改成<code>houdini9_y.sfs</code>随后拷贝进U盘进入命令行界面输入 <code>ls</code> 找到 storage 目录,输入 <code>cd storage</code> 进入你的U盘输入 <code>ls</code> ,查看你拷贝的 <code>houdini9_y.sfs</code> 文件,并复制到该目录下。</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>cp houdini9_y.sfs /system/etc
</span><span>
</span><span>enable_nativebridge
</span><span>
</span><span>reboot
</span></code></pre>
<p>5.安装一些软件包后我们发现需要代替掉ATV自带的桌面从而形成海报墙的效果这和 linux 的桌面环境切换有异曲同工之处。注意:替换前需要已经安装完成其他桌面!!!!(比如 ATV Launcher )我们使用以下命令禁用 google 默认的桌面。随后重启即可看到ATV的海报墙。</p>
<p><code>pm disable-user --user 0 com.google.android.tvlauncher </code></p>
<p>恢复原有桌面:</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>C:\Users\root&gt;adb shell
</span><span>generic_x86:/ $ su
</span><span>generic_x86:/ # pm enable --user 0 com.google.android.tvlauncher
</span><span>Package com.google.android.tvlauncher new state: enabled
<p><strong>要安装的软件</strong></p>
<ul>
<li>
<p><a href="https://github.com/o0HalfLife0o/TVBoxOSC/releases/tag/20250706-1456">TVBox</a>:前猫影视,可自行添加源,包括电影电视剧等等,选择 armeabi-generic-java.apk</p>
</li>
<li>
<p><a href="https://www.ppsspp.org/download/">PPSSPP</a>:PSP模拟器支持高清修复游戏选择 APK for Android</p>
</li>
<li>
<p><a href="https://github.com/xiaye13579/BBLL">BBLL</a>:第三方开源哔哩哔哩客户端适配TV界面不需要额外VIP</p>
</li>
<li>
<p><a href="https://www.right.com.cn/FORUM/thread-8437225-1-1.html">酷9TV</a>:经典IPTV播放器功能丰富可导入IPTV源使用</p>
</li>
<li>
<p><a href="http://www.videolan.org/vlc/download-android.html">VLC</a>:老牌开源音视频播放器,支持远程和串流功能</p>
</li>
<li>
<p><a href="https://github.com/xbmc/xbmc">Kodi</a>:开源的跨平台多功能媒体播放器和数字媒体娱乐中心,非常强大</p>
</li>
<li>
<p><a href="https://github.com/truefedex/tv-bro">TV-Bro</a>:适用与安卓TV的浏览器经过了遥控器优化设计可以作为网页播放器</p>
</li>
<li>
<p><a href="https://github.com/zhanghai/MaterialFiles">MaterialFiles</a>:又名质感文件,优秀的开源文件管理器</p>
</li>
<li>
<p><a href="https://github.com/localsend/localsend">Localsend</a>:经典内网互传工具可以通过它传输apk安装包或者视频到TV上</p>
</li>
<li>
<p><a href="https://www.fenxm.com/592.html">ATV Launcher</a>:平铺风格的安卓启动器,可以形成海报墙效果</p>
</li>
</ul>
<blockquote>
<p>注意s905l3a为32位架构需要下载带armv7a的软件</p>
</blockquote>
<h2 id="si-she-zhi-atvzhuo-mian">四.设置ATV桌面</h2>
<p>安装所需的软件包后我们可以删除自带的牛马软件或者不需要的软件比如我们要安装ATV就可以删除当贝桌面。</p>
<ul>
<li>
<p>连接到ADB成功后我们使用<code>adb shell</code>进入shell随后使用命令<code>pm list packages</code>列出所有软件包;</p>
</li>
<li>
<p>可以先使用<code>pm disable-user --user 0 com.dangbei1.tvlauncher</code> 禁用软件,确认没有问题之后再用<code>pm uninstall -k --user 0 com.dangbei1.tvlauncher</code>删除;</p>
</li>
<li>
<p>对于暂时无法确定包名的软件,可以先打开,再使用<code>adb shell dumpsys activity activities | grep mResumedActivity</code>获取当前前台应用的包名;</p>
</li>
<li>
<p>可以进入安卓原生设置里面将默认主屏幕应用改为ATV代替掉自带的桌面,并使用</p>
</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>adb shell pm disable-user --user 0 com.google.android.tvlauncher
</span><span>adb shell pm disable-user --user 0 com.google.android.tungsten.setupwraith
</span></code></pre>
<p>命令禁用原来的默认桌面。随后重启盒子即可看到海报墙效果如果ATV桌面没有开机自启动可以使用Launch on Boot工具。</p>
<p><strong>最终效果</strong></p>
<p><img src="/images/s905-atv.webp" alt="s905-atv" /></p>
<h2 id="hou-ji">后记</h2>
<ul>
<li>
@@ -263,6 +280,9 @@
<li>
<p><a href="https://github.com/genius158/TVProjectUtils">TV 项目常用工具(焦点问题,适配问题等.)</a></p>
</li>
<li>
<p><a href="https://github.com/Calmact/e900v22c">e900v22c项目与讨论组文档</a></p>
</li>
</ul>
</div>

BIN
public/images/electerm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
public/images/s905-atv.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 KiB

View File

@@ -166,6 +166,39 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-ssh/">网络艺术:SSH使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2025-05-02
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 SSHSecure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-ssh/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
@@ -232,39 +265,6 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-aria2/">网络艺术:Aria2使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2025-04-15
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
<div class="post-content">
<p>前言 Aria2是一款开源、跨平台的命令行界面下载管理器常常被各种下载器软件使用。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-aria2/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons">

View File

@@ -103,7 +103,7 @@
<div class="post">
<h1 class="post-title"><a href="https://blog.dich.bid/network-aria2/">网络艺术:Aria2使用指南</a></h1>
<h1 class="post-title"><a href="https://blog.dich.bid/network-aria2/">下载系列(3):Aria2使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
@@ -115,7 +115,7 @@
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
@@ -317,7 +317,7 @@
<span class="button previous">
<a href="https://blog.dich.bid/network-yt-dlp/">
<span class="button__icon"></span>&nbsp;
<span class="button__text">网络艺术:Yt-dlp使用指南</span>
<span class="button__text">下载系列(2):Yt-dlp使用指南</span>
</a>
</span>

View File

@@ -103,7 +103,7 @@
<div class="post">
<h1 class="post-title"><a href="https://blog.dich.bid/network-download-1/">网络艺术:下载技术的历史</a></h1>
<h1 class="post-title"><a href="https://blog.dich.bid/network-download-1/">下载系列(1):下载技术的历史</a></h1>
<div class="post-meta-inline">
<span class="post-date">
@@ -441,7 +441,7 @@ HTTP协议是一种无状态的、应用层协议用于传输超文本数据
<span class="button next">
<a href="https://blog.dich.bid/network-yt-dlp/">
<span class="button__text">网络艺术:Yt-dlp使用指南</span>&nbsp;
<span class="button__text">下载系列(2):Yt-dlp使用指南</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>

View File

@@ -0,0 +1,303 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Dich&#x27;blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://blog.dich.bid/style.css">
<link rel="stylesheet" href="https://blog.dich.bid/color/blue.css">
<link rel="stylesheet" href="https://blog.dich.bid/color/background_dark.css">
<link rel="stylesheet" href="https://blog.dich.bid/font-hack-subset.css">
<meta name="description" content="">
<meta property="og:description" content="">
<meta property="og:title" content="Dich'blog">
<meta property="og:type" content="article">
<meta property="og:url" content="https://blog.dich.bid/network-ssh/">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:description" content="">
<meta name="twitter:title" content="Dich'blog">
<meta property="twitter:domain" content="blog.dich.bid">
<meta property="twitter:url" content="https://blog.dich.bid/network-ssh/">
<link rel="alternate" type="application/atom+xml" title="Dich&#x27;blog Atom Feed" href="https://blog.dich.bid/atom.xml" />
<link rel="icon" type="image/png" href=&#x2F;dich.webp />
<!-- ✅ Added center alignment styles -->
<style>
.footer {
text-align: center;
padding: 1rem 0;
}
.footer__inner {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}
.copyright {
text-align: center;
}
</style>
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://blog.dich.bid" style="text-decoration: none;">
<div class="logo">
Dich&#x27;blog
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li class="active"><a href="https://blog.dich.bid">blog</a></li>
<li><a href="https://blog.dich.bid/archive">archive</a></li>
<li><a href="https://blog.dich.bid/tags">tags</a></li>
<li><a href="https://blog.dich.bid/weekly">weekly</a></li>
<li><a href="https://blog.dich.bid/search">search</a></li>
<li><a href="https://blog.dich.bid/about">about me</a></li>
<li><a href="https://blog.dich.bid/links">links</a></li>
<li><a href="https://blog.dich.bid/atom.xml">rss</a></li>
<li><a href="https://github.com/Dichgrem" target="_blank" rel="noopener noreferrer">github</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title"><a href="https://blog.dich.bid/network-ssh/">网络艺术:SSH使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2025-05-02
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 SSHSecure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。</p>
<span id="continue-reading"></span><h2 id="li-shi">历史</h2>
<p>1995年芬兰赫尔辛基工业大学的研究员 Tatu Ylönen 设计了 <code>SSH 协议的第一个版本(现称为 SSH 1</code>,同时写出了第一个实现(称为 SSH1</p>
<p>当时,他所在的大学网络一直发生密码嗅探攻击,他不得不为服务器设计一个更安全的登录方式。写完以后,他就把这个工具公开了,允许其他人免费使用。</p>
<p>SSH 可以替换 rlogin、TELNET、FTP 和 rsh 这些不安全的协议所以大受欢迎用户快速增长1995年底已经发展到五十个国家的20,000个用户。SSH 1 协议也变成 IETF 的标准文档。</p>
<p>1995年12月由于客服需求越来越大<code>TatuYlönen就成立了一家公司SCS专门销售和开发SSH</code>。这个软件的后续版本,逐渐从免费软件变成了专有的商业软件。</p>
<p>SSH 1 协议存在一些安全漏洞,所以<code>1996年又提出了 SSH 2 协议(或者称为 SSH 2.0</code>。这个协议与1.0版不兼容在1997年进行了标准化1998年推出了软件实现 SSH2。但是官方的 SSH2 软件是一个专有软件,不能免费使用,而且 SSH1的有些功能也没有提供。</p>
<p>1999年OpenBSD 的开发人员决定写一个<code>SSH 2 协议的开源实现</code> ,这就是 OpenSSH 项目。该项目最初是基于 SSH 1.2.12 版本,那是当时 SSH1 最后一个开源版本。但是OpenSSH 很快就完全摆脱了原始的官方代码在许多开发者的参与下按照自己的路线发展。OpenSSH 随 OpenBSD 2.6 版本一起提供,以后又移植到其他操作系统,成为最流行的 SSH 实现。目前Linux 的所有发行版几乎都自带 OpenSSH。</p>
<h2 id="kai-shi">开始</h2>
<p>李华是一个大学生现在他买了一台服务器公网IPv4为114.514.114.514,李华打算连到上面看看:</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>ssh -p 22 root@114.514.114.514
</span></code></pre>
<p>随后命令行弹出了密码输入李华输入了初始密码114514,成功登录了进去;现在每次登录只要输入一行命令就可以,大功告成!</p>
<h2 id="an-quan">安全</h2>
<p>一段时间后李华的linux知识提高了不少他发现有不少IP在用随机密码不断尝试登录自己的服务器这太危险了</p>
<p>于是,李华查阅了资料,发现有一篇博客<a href="https://blog.dich.bid/about-server-set/">乱七八糟:服务器初始化与安全设置</a>于是他将openssh-server的端口改成了2333,并开启了fail2ban这下应该安全了</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>### 更换SSH端口
</span><span>
</span><span>使用root账户或已经有sudo权限的用户登录到系统。
</span><span>
</span><span>打开SSH配置文件`sshd_config`可以使用文本编辑器如nano或vi。以下是使用nano编辑器的示例
</span><span>
</span><span>sudo vim /etc/ssh/sshd_config
</span><span>
</span><span>在配置文件中找到以下行:
</span><span>
</span><span>Port 22
</span><span>
</span><span>这是SSH默认的端口号你可以将其更改为你想要的任何未被占用的端口号。例如将端口更改为2333
</span><span>
</span><span>Port 2333
</span><span>
</span><span>保存并关闭文本编辑器。重新启动SSH服务以应用更改
</span><span>
</span><span>sudo service ssh restart
</span><span>
</span><span>或者如果你的系统使用systemd可以使用以下命令
</span><span>
</span><span>sudo systemctl restart ssh
</span><span>
</span><span>### 安装 Fail2ban
</span><span>
</span><span>sudo apt-get install fail2ban
</span><span>
</span><span>#### Debian 12 及以上的版本需要手动安装 rsyslog
</span><span>
</span><span>sudo apt-get install rsyslog
</span><span>
</span><span>####启动 Fail2ban 服务
</span><span>
</span><span>sudo systemctl start fail2ban
</span><span>
</span><span>#### 开机自启动
</span><span>
</span><span>sudo systemctl enable fail2ban
</span><span>
</span><span>#### 查看 Fail2ban 服务状态
</span><span>
</span><span>sudo systemctl status fail2ban
</span><span>
</span></code></pre>
<p>但是服务器依然在被爆破,李华又又研究了以下教程,决定将自己的服务器由密码登录改为密钥登录,这下没有牛马来爆破了!</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>#### 执行以下命令生成.pub后缀的公钥和无后缀的密钥
</span><span>
</span><span>ssh-keygen
</span><span>
</span><span>注意不同密钥对名称不能相同;同时可以为这两个文件用密码加密;
</span><span>
</span><span>#### 随后将.pub后缀的公钥中的内容写入服务器的~/.ssh/authorized_keys中
</span><span>
</span><span>#### 使用以下命令编译服务器的SSH配置
</span><span>
</span><span>vim /etc/ssh/sshd_config
</span><span>
</span><span>将其中的该行改为PasswordAuthentication no保存退出随后使用
</span><span>
</span><span>sudo systemctl restart sshd
</span><span>
</span><span>重启SSH即可禁用密码登录
</span><span>
</span><span>#### 将PermitRootLogin一栏改为PermitRootLogin prohibit-password**即可实现仅root用户密钥登录
</span><span>
</span><span>#### 使用以下命令查看输出,
</span><span>
</span><span>sudo cat /etc/ssh/sshd_config | grep -E &#39;PasswordAuthentication|PubkeyAuthentication&#39;
</span><span>
</span><span>如有PasswordAuthentication no → 禁用密码登录以及PubkeyAuthentication yes → 允许密钥登录则成功。
</span><span>
</span><span>&gt; 注意authorized_keys**的权限为600如果不是则需要改正chmod 600 ~/.ssh/authorized_keys
</span></code></pre>
<h2 id="guan-li">管理</h2>
<p>现在服务器安全了但随着服务器数量的增加李华很快发现一个新问题如何管理这些个SSH连接呢手动输入太慢了每次都要复制粘贴也很麻烦但是又不得不用总不能回退到密码时代吧况且数量多了密码也记不住。</p>
<p>于是李华运用软件工程学的思想想着这种大众的需求应该有人解决过了吧果然李华很快在GitHub上找到了一个开源跨平台的SSH管理软件<a href="https://github.com/electerm/electerm">electerm</a>!</p>
<p><img src="/images/electerm.png" alt="electerm" /></p>
<p>通过在electerm的书签中写入服务器的地址登录用户和密钥只要打开electerm并点击书签就可以连接了太方便了</p>
<h2 id="fan-pu">返璞</h2>
<p>随着技术阅历的增长李华看electerm越来越不顺眼用它管理SSH固然方便但同时这就得在各个系统上安装一个Electron架构的软件而且用electerm的shell并不好用,并且备份electerm的配置不能给其他软件使用。终于在一次界面崩溃之后李华忍无可忍决定更换新的方案</p>
<p>通过研究李华发现原来openssh有自带的管理方法且非常便捷好用。</p>
<p>首先,李华在用户目录下创建了一个<code>.ssh</code>文件夹linux中在<code>/home/username/.ssh</code>这里windows下在<code>C:\Users\username\.ssh</code>这里。</p>
<p>随后李华安装了openssh在系统上linux中一般已经存在windows上在<code>设置-系统-可选功能-添加功能</code>中选中OpenSSH Client和openssh-server开启即可.</p>
<p>随后,李华在.ssh文件夹下创建了一个文件名为<code>config</code>,并在其中写入以下内容:</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>Host US
</span><span> HostName 114.514.114.514
</span><span> User root
</span><span> IdentityFile ~/.ssh/US
</span><span> IdentitiesOnly yes
</span></code></pre>
<p>随后李华在对应的位置<code>~/.ssh/US</code>创建了一个文件,李华将服务器的私钥放了进去,里面是以<code>-----BEGIN OPENSSH PRIVATE KEY-----</code>开头<code>-----END OPENSSH PRIVATE KEY-----</code>结尾的私钥。</p>
<p>现在,要登录<code>114.514.114.514</code>这台服务器,只需要使用<code>ssh US</code>命令就可以连上服务器了,不用再手动输入了!</p>
<h2 id="gui-zhen">归真</h2>
<p>在进一步了解SSH之后李华很快又发现了新的问题服务器的私钥放在本地是不安全的尤其是Windows这种安装源松散鱼龙混杂的系统上。究竟有没有更好的方法呢在对keepassxc进行研究后李华终于得出了一个几乎完美的方案</p>
<ul>
<li>开启keepassxc的SSH代理集成</li>
<li>本地.ssh文件夹只保留公钥</li>
<li>私钥保存在keepassxc的一个组中</li>
</ul>
<p>这样一来,当你执行<code>ssh xxx</code>ssh 不是去读私钥文件,而是通过<code>SSH_AUTH_SOCK</code>环境变量找到 KeePassXC 的 agent。KeePassXC 会提示你解锁数据库/确认使用密钥。私钥不会离开 KeePassXC只是 KeePassXC <code>用私钥做一次签名</code>,把结果返回给 ssh。这样<code>硬盘上不需要保存私钥文件</code>,安全性更高,且<code>只需要备份.ssh文件夹和keepassxc的kbdx文件</code>即可.</p>
<p>那么该怎么做呢?</p>
<p>首先,将.ssh文件夹中的config进行修改,把私钥文件改为公钥文件,同时创建对应的<code>~/.ssh/US.pub</code>公钥文件里面是以ssh-ed25519或者ssh-rsa开头的公钥.</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>Host US
</span><span> HostName 114.514.114.514
</span><span> User root
</span><span> IdentityFile ~/.ssh/US.pub
</span><span> IdentitiesOnly yes
</span></code></pre>
<p>随后在keepassxc的设置-ssh代理中开启<code>启用SSH代理集成</code>.openssh</p>
<p>接下来在keepassxc中左侧栏<code>新建一个文件夹</code>名为SSH里面<code>新建条目</code>标题为US和config中一致然后在右侧<code>高级</code><code>新建</code>附件文件名为US和config中保持一致文件内容为US的私钥.随后在左侧SSH代理中选中<code>在打开或解锁数据库的时候,向代理添加密钥</code><code>数据库锁定或关闭时从SSH代理中删除密钥</code>这两个选项,并将下面的<code>私钥</code>选择<code>附件</code>即为我们刚刚在高级中新建的US可以看到对应的公钥也出现了上一步没有公钥的可以在这里添加.按<code>确定</code>后关闭keepassxc并重新开启这时候就可以使用<code>ssh US</code>命令登录了!</p>
<blockquote>
<p>注意每次登录前先开启keepassxc并解锁</p>
</blockquote>
<hr />
<p><strong>Done.</strong></p>
</div>
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">Thanks for reading! Read other posts?</span>
<hr />
</div>
<div class="pagination__buttons">
<span class="button previous">
<a href="https://blog.dich.bid/about-baci/">
<span class="button__icon"></span>&nbsp;
<span class="button__text">乱七八糟:Baci实验笔记</span>
</a>
</span>
<span class="button next">
<a href="https://blog.dich.bid/about-gpg/">
<span class="button__text">乱七八糟:GPG使用小记</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>©
2025
Dichgrem</span>
<span class="copyright-theme">
<span class="copyright-theme-sep"> :: CC BY-SA 4.0 :: A friend comes from distant lands</span>
</a>
</span>
</div>
</div>
</footer>
</div>
</body>
</html>

View File

@@ -103,7 +103,7 @@
<div class="post">
<h1 class="post-title"><a href="https://blog.dich.bid/network-yt-dlp/">网络艺术:Yt-dlp使用指南</a></h1>
<h1 class="post-title"><a href="https://blog.dich.bid/network-yt-dlp/">下载系列(2):Yt-dlp使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
@@ -115,12 +115,14 @@
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 有时候我们想要视频保存到本地以便离线回看。yt-dlp是一款功能强大的命令行工具专注于下载视频与音频内容支持数千个平台是开源下载工具爱好者的常用选择。</p>
<span id="continue-reading"></span><h2 id="li-shi-yan-ge-cong-youtube-dl-dao-yt-dlp">历史沿革:从 youtube-dl 到 yt-dlp</h2>
<p>前言 yt-dlp是一款功能强大的命令行工具专注于下载视频与音频内容支持数千个平台是开源下载工具爱好者的常用选择。</p>
<span id="continue-reading"></span>
<p>有时候我们想要下载网络上的某些视频比如BilibiliYouTube等等但它们没有提供下载按钮这时候就可以用开源的yt-dlp来进行下载。和Aria2一样很多下载软件的核心就是yt-dlp.</p>
<h2 id="li-shi">历史</h2>
<ul>
<li>
<p><strong>起源与演进</strong>
@@ -128,21 +130,21 @@
</li>
<li>
<p><strong>停滞youtube-dlc → yt-dlp 的诞生</strong>
随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,随即在 <strong>2021 年</strong>演变为更活跃的 <code>yt-dlp</code> 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,迅速在 Linux 发行版中取代 youtube-dl (如 Ubuntu 22.04 之后).</p>
随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,<strong>2021 年</strong>演变为更活跃的 <code>yt-dlp</code> 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,成为了GitHub上star最多的项目之一.</p>
</li>
<li>
<p><strong>重构与功能拓展</strong>
<code>yt-dlp</code> 从 youtube-dlc 完全重构,新增许多 extractor解析器、改进配置与默认行为还扩展了插件系统和兼容性支持.</p>
</li>
</ul>
<h2 id="ge-ping-tai-an-zhuang-zhi-nan">各平台安装指南</h2>
<ul>
<li>通用Linux/macOS/Windows</li>
</ul>
<p>下载官方最新可执行文件:</p>
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">sudo</span><span> curl</span><span style="color:#ffb964;"> -L</span><span> https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp</span><span style="color:#ffb964;"> -o</span><span> /usr/local/bin/yt-dlp
</span><span style="color:#ffb964;">sudo</span><span> chmod a+rx /usr/local/bin/yt-dlp
</span></code></pre>
<h2 id="an-zhuang">安装</h2>
<h3 id="windows">Windows</h3>
<p>从yt-dlp官方GitHub上下载exe二进制文件</p>
<p><a href="https://github.com/yt-dlp/yt-dlp/releases/tag/2025.08.22">yt-dlp</a></p>
<p>将其放到一个目录下,比如<code>C:\Users\&lt;你的用户名&gt;\yt-dlp\yt-dlp.exe</code>,随后添加环境变量。</p>
<blockquote>
<p>添加环境变量Win键搜索“环境变量”打开“编辑系统环境变量”点击最下方的“环境变量”选择“系统变量”中的path点击“编辑”新建一个变量将上面的目录 C:\Users&lt;你的用户名&gt;\yt-dlp\ 写入,注意去掉前后引号,随后确定-确定-确定退出。</p>
</blockquote>
<p>更新版本:</p>
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">yt-dlp -U
</span></code></pre>
@@ -151,29 +153,103 @@
</ul>
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">python3 -m</span><span> pip install</span><span style="color:#ffb964;"> -U</span><span> yt-dlp
</span></code></pre>
<h3 id="linux-fa-xing-ban">Linux 发行版</h3>
<ul>
<li>Linux 发行版仓库</li>
</ul>
<p>各发行版可能提供略滞后的 yt-dlp</p>
<ul>
<li>
<p>Debian / Ubuntu<code>sudo apt install yt-dlp</code></p>
</li>
<li>
<p>Arch / Manjaro<code>sudo pacman -S yt-dlp</code></p>
</li>
<li>
<p>Fedora<code>sudo dnf install yt-dlp</code> 等。</p>
</li>
<li>
<p>AndroidTermux</p>
</li>
<li>Debian / Ubuntu<code>sudo apt install yt-dlp</code></li>
<li>Arch / Manjaro<code>sudo pacman -S yt-dlp</code></li>
<li>Fedora<code>sudo dnf install yt-dlp</code></li>
<li>Nixos:</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>{pkgs, ...}: {
</span><span> home.packages = with pkgs; [
</span><span> peazip
</span><span> ];
</span><span>}
</span></code></pre>
<h3 id="android-termux">AndroidTermux</h3>
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">pkg</span><span> update &amp;&amp; </span><span style="color:#ffb964;">pkg</span><span> upgrade
</span><span style="color:#ffb964;">pkg</span><span> install python libexpat openssl ffmpeg
</span><span style="color:#ffb964;">python3 -m</span><span> pip install</span><span style="color:#ffb964;"> -U</span><span> yt-dlp
</span></code></pre>
<h2 id="chang-yong-ming-ling">常用命令</h2>
<h2 id="xia-zai-shi-zhan">下载实战</h2>
<ul>
<li><strong>下载B站带字幕视频</strong>:</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp &quot;https://www.bilibili.com/video/BVxxxxx&quot; --write-subs --embed-subs --sub-langs all,-live_chat
</span><span>
</span><span>--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
</span><span>
</span><span>--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持)
</span><span>
</span><span>--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流
</span></code></pre>
<ul>
<li><strong>下载YouTube视频</strong></li>
</ul>
<p>先使用这个命令查看可用格式:</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp -F https://www.youtube.com/watch?v=xxxxxxxxxxxx
</span></code></pre>
<p>然后它会列举出所有可用的格式,如下:</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>[youtube] MgtOAVOXBWo: Downloading webpage
</span><span>[youtube] MgtOAVOXBWo: Downloading tv client config
</span><span>[youtube] MgtOAVOXBWo: Downloading tv player API JSON
</span><span>[youtube] MgtOAVOXBWo: Downloading ios player API JSON
</span><span>[youtube] MgtOAVOXBWo: Downloading m3u8 information
</span><span>[info] Available formats for MgtOAVOXBWo:
</span><span>ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC MORE INFO
</span><span>──────────────────────────────────────────────────────────────────────────────────────────────────────────
</span><span>sb2 mhtml 48x27 0 │ mhtml │ images storyboard
</span><span>sb1 mhtml 80x45 0 │ mhtml │ images storyboard
</span><span>sb0 mhtml 160x90 0 │ mhtml │ images storyboard
</span><span>233 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, low
</span><span>234 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, high
</span><span>602 mp4 256x144 15 │ ~ 9.23MiB 81k m3u8 │ vp09.00.10.08 81k video only Untested
</span><span>269 mp4 256x144 30 │ ~ 14.94MiB 130k m3u8 │ avc1.4D400C 130k video only Untested
</span><span>603 mp4 256x144 30 │ ~ 15.90MiB 139k m3u8 │ vp09.00.11.08 139k video only Untested
</span><span>229 mp4 426x240 30 │ ~ 33.33MiB 291k m3u8 │ avc1.4D4015 291k video only Untested
</span><span>604 mp4 426x240 30 │ ~ 25.82MiB 225k m3u8 │ vp09.00.20.08 225k video only Untested
</span><span>230 mp4 640x360 30 │ ~ 73.50MiB 642k m3u8 │ avc1.4D401E 642k video only Untested
</span><span>605 mp4 640x360 30 │ ~ 55.73MiB 487k m3u8 │ vp09.00.21.08 487k video only Untested
</span><span>231 mp4 854x480 30 │ ~104.35MiB 911k m3u8 │ avc1.4D401F 911k video only Untested
</span><span>606 mp4 854x480 30 │ ~ 94.79MiB 827k m3u8 │ vp09.00.30.08 827k video only Untested
</span><span>311 mp4 1280x720 60 │ ~330.73MiB 2887k m3u8 │ avc1.4D4020 2887k video only Untested
</span><span>612 mp4 1280x720 60 │ ~197.04MiB 1720k m3u8 │ vp09.00.40.08 1720k video only Untested
</span><span>312 mp4 1920x1080 60 │ ~486.64MiB 4248k m3u8 │ avc1.64002A 4248k video only Untested
</span><span>617 mp4 1920x1080 60 │ ~369.06MiB 3222k m3u8 │ vp09.00.41.08 3222k video only Untested
</span><span>623 mp4 2560x1440 60 │ ~ 1.00GiB 8945k m3u8 │ vp09.00.50.08 8945k video only Untested
</span></code></pre>
<p>我们下载312和233,即视频和音频,使用以下命令:</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp -f &quot;312+233&quot; -o &quot;&lt;新视频的名字,要短一点&gt;.%(ext)s&quot; https://www.youtube.com/watch?v=xxxxxxxxxxxx
</span></code></pre>
<p>这行命令会自动将下载的312的1080p/H.264的视频和233的音频合并为一个mp4视频注意新的名称不能太长否则会下载失败。</p>
<p>如果要下载带字幕的视频,则使用</p>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp -f &quot;312+233&quot; --write-subs --write-auto-subs --embed-subs --sub-langs &quot;zh.*,en.*&quot; -o &quot;&lt;新视频的名字,要短一点&gt;.%(ext)s&quot; https://www.youtube.com/watch?v=xxxxxxxxxxx
</span></code></pre>
<p>这个命令会:</p>
<ul>
<li>
<p>下载1080p视频</p>
</li>
<li>
<p>下载中文和英文字幕(包括自动生成的)</p>
</li>
<li>
<p>将字幕嵌入到视频文件中</p>
</li>
<li>
<p>同时保存单独的字幕文件</p>
</li>
<li>
<p>参数说明</p>
</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>--write-subs: 下载手动字幕
</span><span>--write-auto-subs: 下载自动生成的字幕
</span><span>--embed-subs: 将字幕嵌入到视频中
</span><span>--sub-langs &quot;zh.*&quot;: 指定下载中文字幕(所有中文变体)
</span><span>--sub-format srt: 指定字幕格式(可选)
</span></code></pre>
<h2 id="chang-yong-can-shu">常用参数</h2>
<ul>
<li>
<p><strong>下载视频</strong></p>
@@ -249,40 +325,6 @@
<p><strong>配置文件设定默认参数</strong></p>
<p><code>~/.config/yt-dlp/config</code> 文件中添加习惯参数,如下载路径、格式偏好等。</p>
</li>
<li>
<p><strong>比如下载B站带字幕视频的命令</strong>:</p>
</li>
</ul>
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp &quot;https://www.bilibili.com/video/BVxxxxx&quot; --write-subs --embed-subs --sub-langs all,-live_chat
</span><span>
</span><span>--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
</span><span>
</span><span>--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持)
</span><span>
</span><span>--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流
</span></code></pre>
<hr />
<h2 id="jin-jie-ji-qiao">进阶技巧</h2>
<ul>
<li>
<p><strong>FFmpeg 合并支持</strong>:若视频与音频分离,需安装 FFmpeg 才能完成合并。</p>
</li>
<li>
<p><strong>处理地理限制</strong>:结合 <code>--proxy</code><code>--geo-bypass</code> 等选项使用 VPN/代理绕过区域限制。</p>
</li>
<li>
<p><strong>应对下载失败(如 403</strong></p>
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">yt-dlp --rm-cache-dir
</span></code></pre>
</li>
<li>
<p><strong>设置 UA、Referer、打印请求头调试</strong></p>
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">--add-headers </span><span style="color:#556633;">&quot;</span><span style="color:#99ad6a;">User-Agent: ...</span><span style="color:#556633;">&quot;</span><span style="color:#ffb964;"> --print</span><span> http_headers
</span></code></pre>
</li>
<li>
<p><strong>Stability &amp; 更新问题</strong>:建议避免使用发行版中的旧版本,推荐使用官方可执行或 pip 方法。</p>
</li>
</ul>
<hr />
<p><strong>Done.</strong></p>
@@ -299,14 +341,14 @@
<span class="button previous">
<a href="https://blog.dich.bid/network-download-1/">
<span class="button__icon"></span>&nbsp;
<span class="button__text">网络艺术:下载技术的历史</span>
<span class="button__text">下载系列(1):下载技术的历史</span>
</a>
</span>
<span class="button next">
<a href="https://blog.dich.bid/network-aria2/">
<span class="button__text">网络艺术:Aria2使用指南</span>&nbsp;
<span class="button__text">下载系列(3):Aria2使用指南</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>

View File

@@ -104,7 +104,40 @@
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-yt-dlp/">网络艺术:Yt-dlp使用指南</a></h1>
<h1 class="post-title"><a href="https://blog.dich.bid/network-aria2/">下载系列(3):Aria2使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2025-04-15
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 Aria2是一款开源、跨平台的命令行界面下载管理器常常被各种下载器软件使用。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-aria2/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-yt-dlp/">下载系列(2):Yt-dlp使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
@@ -116,13 +149,13 @@
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 有时候我们想要视频保存到本地以便离线回看。yt-dlp是一款功能强大的命令行工具专注于下载视频与音频内容支持数千个平台是开源下载工具爱好者的常用选择。</p>
<p>前言 yt-dlp是一款功能强大的命令行工具专注于下载视频与音频内容支持数千个平台是开源下载工具爱好者的常用选择。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
@@ -137,7 +170,7 @@
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-download-1/">网络艺术:下载技术的历史</a></h1>
<h1 class="post-title"><a href="https://blog.dich.bid/network-download-1/">下载系列(1):下载技术的历史</a></h1>
<div class="post-meta-inline">
<span class="post-date">
@@ -232,39 +265,6 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-frp/">网络艺术:FRP使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2025-03-01
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 FRP (Fast Reverse Proxy) 是一个用Go语言开发的高性能反向代理应用可以帮助您轻松地进行内网穿透对外提供服务.</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-frp/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons">

View File

@@ -104,6 +104,39 @@
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-frp/">网络艺术:FRP使用指南</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2025-03-01
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 FRP (Fast Reverse Proxy) 是一个用Go语言开发的高性能反向代理应用可以帮助您轻松地进行内网穿透对外提供服务.</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-frp/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/about-ventoy/">乱七八糟:Ventoy战斗盘部署</a></h1>
<div class="post-meta-inline">
@@ -232,39 +265,6 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-nginx/">网络艺术:Docker建站与反向代理</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-07-14
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 Docker的出现极大简化了建站流程较过去的LAMP方式优雅了许多配合Nginx反向代理可以快速上线HTTPS站点。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-nginx/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons">

View File

@@ -104,6 +104,39 @@
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-nginx/">网络艺术:Docker建站与反向代理</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-07-14
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 Docker的出现极大简化了建站流程较过去的LAMP方式优雅了许多配合Nginx反向代理可以快速上线HTTPS站点。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-nginx/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/about-server-set/">乱七八糟:服务器初始化与安全设置</a></h1>
<div class="post-meta-inline">
@@ -232,39 +265,6 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/windows-4-auto/">Windows系列(4):封装与全自动安装</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-05-29
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/windows/">#Windows</a></span>
<div class="post-content">
<p>前言 由于厂商默认安装windows家庭版导致各种问题频发,这里作者封装了一个开箱即用的全自动安装激活和优化的Windows11镜像。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/windows-4-auto/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons">

View File

@@ -104,6 +104,39 @@
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/windows-4-auto/">Windows系列(4):封装与全自动安装</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-05-29
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/windows/">#Windows</a></span>
<div class="post-content">
<p>前言 由于厂商默认安装windows家庭版导致各种问题频发,这里作者封装了一个开箱即用的全自动安装激活和优化的Windows11镜像。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/windows-4-auto/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/windows-3-jh/">Windows系列(3):分类与激活</a></h1>
<div class="post-meta-inline">
@@ -232,39 +265,6 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/about-podcast-use/">乱七八糟:播客收听指北</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-03-06
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
<div class="post-content">
<p>前言 讲起播客,许多人第一反应是喜马拉雅,但其实播客的订阅和收听有许多种方式。本文带你了解订阅播客的各种方式,并告诉你市面上有哪些不错的播客客户端可供选择。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/about-podcast-use/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons">

View File

@@ -104,6 +104,39 @@
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/about-podcast-use/">乱七八糟:播客收听指北</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-03-06
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
<div class="post-content">
<p>前言 讲起播客,许多人第一反应是喜马拉雅,但其实播客的订阅和收听有许多种方式。本文带你了解订阅播客的各种方式,并告诉你市面上有哪些不错的播客客户端可供选择。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/about-podcast-use/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/about-rss-read/">乱七八糟:RSS阅读指南</a></h1>
<div class="post-meta-inline">
@@ -232,39 +265,6 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-cdn/">网络艺术:CDN技术与应用</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-02-16
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 内容分发网络CDN是一组分布在不同地理位置的服务器网络,使用户能够就近获取内容,从而降低延迟并缓解源站压力​.</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-cdn/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons">

View File

@@ -104,6 +104,39 @@
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-cdn/">网络艺术:CDN技术与应用</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2024-02-16
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
<div class="post-content">
<p>前言 内容分发网络CDN是一组分布在不同地理位置的服务器网络,使用户能够就近获取内容,从而降低延迟并缓解源站压力​.</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/network-cdn/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/network-ssl/">网络艺术:SSL&#x2F;TLS证书</a></h1>
<div class="post-meta-inline">
@@ -232,39 +265,6 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/about-blog/">乱七八糟:个人博客搭建</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-10-12
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
<div class="post-content">
<p>前言 个人博客的搭建具有许多的方案可以选择,本文介绍如何快速部署一个博客,并将其发布到公网。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/about-blog/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons">

View File

@@ -104,6 +104,39 @@
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/about-blog/">乱七八糟:个人博客搭建</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-10-12
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
<div class="post-content">
<p>前言 个人博客的搭建具有许多的方案可以选择,本文介绍如何快速部署一个博客,并将其发布到公网。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/about-blog/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/about-mechrev-keyboard/">乱七八糟:机械革命键盘失灵拯救记</a></h1>
<div class="post-meta-inline">
@@ -232,39 +265,6 @@
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/awesome-android-tv/">综合工程:Android-TV 折腾小记</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-08-14
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/zong-he-gong-cheng/">#综合工程</a></span>
<div class="post-content">
<p>前言 由于 AppleTV 的高昂的售价和普通电视盒子广告的泛滥,一台开源、多功能的原生安卓电视盒子逐渐成为智能家居的必备神器。出于对 IPTV、YouTube 和家庭影院等需求,以及对一面赏心悦目电视墙的期待,这里分享 Android TV 以下简称ATV安装的一些要点。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/awesome-android-tv/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="pagination">
<div class="pagination__buttons">

View File

@@ -104,6 +104,39 @@
<div class="posts">
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/awesome-android-tv/">综合工程:Android-TV 折腾小记</a></h1>
<div class="post-meta-inline">
<span class="post-date">
2023-08-14
</span>
</div>
<span class="post-tags-inline">
:: tags:&nbsp;
<a class="post-tag" href="https://blog.dich.bid/tags/zong-he-gong-cheng/">#综合工程</a></span>
<div class="post-content">
<p>前言 由于 AppleTV 的高昂的售价和普通电视盒子广告的泛滥,一台开源、多功能的原生安卓电视盒子逐渐成为智能家居的必备神器。出于对 IPTV、YouTube 和家庭影院等需求,以及对一面赏心悦目电视墙的期待,这里分享 Android TV 以下简称ATV安装的一些要点。</p>
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="https://blog.dich.bid/awesome-android-tv/">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
</div>
<div class="post on-list">
<h1 class="post-title"><a href="https://blog.dich.bid/awesome-android-root/">综合工程:安卓刷机与root教程</a></h1>
<div class="post-meta-inline">

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
{"version":"1.3.0","languages":{"en":{"hash":"en_a5a6d11e14","wasm":"en","page_count":93}}}
{"version":"1.3.0","languages":{"en":{"hash":"en_9e10693336","wasm":"en","page_count":93}}}

Binary file not shown.

View File

@@ -177,6 +177,10 @@
<loc>https://blog.dich.bid/network-nginx/</loc>
<lastmod>2024-07-14</lastmod>
</url>
<url>
<loc>https://blog.dich.bid/network-ssh/</loc>
<lastmod>2025-05-02</lastmod>
</url>
<url>
<loc>https://blog.dich.bid/network-ssl/</loc>
<lastmod>2024-02-15</lastmod>
@@ -224,9 +228,6 @@
<url>
<loc>https://blog.dich.bid/tags/network/</loc>
</url>
<url>
<loc>https://blog.dich.bid/tags/wang-luo-yi-shu/</loc>
</url>
<url>
<loc>https://blog.dich.bid/tags/windows/</loc>
</url>

View File

@@ -116,13 +116,7 @@
<li class="tag-list">
<a href="https://blog.dich.bid/tags/network/">
Network (10 posts)
</a>
</li>
<li class="tag-list">
<a href="https://blog.dich.bid/tags/wang-luo-yi-shu/">
网络艺术 (2 posts)
Network (13 posts)
</a>
</li>

View File

@@ -107,7 +107,7 @@ Dich&#x27;blog</title>
<div class="post">
<h1 class="post-title">
tag: #Network
(10 posts)
(13 posts)
</h1>
<a href="https://blog.dich.bid/tags">
@@ -116,9 +116,39 @@ Dich&#x27;blog</title>
<ul><li class="post-list">
<a href="https://blog.dich.bid/network-ssh/">
<span class="post-date">2025-05-02</span>
:: <span class="post-list-title">网络艺术:SSH使用指南</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
</li>
<li class="post-list">
<a href="https://blog.dich.bid/network-aria2/">
<span class="post-date">2025-04-15</span>
:: <span class="post-list-title">下载系列(3):Aria2使用指南</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
</li>
<li class="post-list">
<a href="https://blog.dich.bid/network-yt-dlp/">
<span class="post-date">2025-04-12</span>
:: <span class="post-list-title">下载系列(2):Yt-dlp使用指南</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
</li>
<li class="post-list">
<a href="https://blog.dich.bid/network-download-1/">
<span class="post-date">2025-04-11</span>
:: <span class="post-list-title">网络艺术:下载技术的历史</span></a>
:: <span class="post-list-title">下载系列(1):下载技术的历史</span></a>
<span class="post-tags-inline">
::

View File

@@ -1,162 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Dich&#x27;blog</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="https://blog.dich.bid/style.css">
<link rel="stylesheet" href="https://blog.dich.bid/color/blue.css">
<link rel="stylesheet" href="https://blog.dich.bid/color/background_dark.css">
<link rel="stylesheet" href="https://blog.dich.bid/font-hack-subset.css">
<meta name="description" content="All posts tagged 网络艺术">
<meta property="og:description" content="All posts tagged 网络艺术">
<meta property="og:title" content="Dich'blog">
<meta property="og:type" content="website">
<meta property="og:url" content="https://blog.dich.bid/tags/wang-luo-yi-shu/">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:description" content="All posts tagged 网络艺术">
<meta name="twitter:title" content="Dich'blog">
<meta property="twitter:domain" content="blog.dich.bid">
<meta property="twitter:url" content="https://blog.dich.bid/tags/wang-luo-yi-shu/">
<link rel="alternate" type="application/atom+xml" title="Dich&#x27;blog Atom Feed" href="https://blog.dich.bid/atom.xml" />
<link rel="icon" type="image/png" href=&#x2F;dich.webp />
<!-- ✅ Added center alignment styles -->
<style>
.footer {
text-align: center;
padding: 1rem 0;
}
.footer__inner {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}
.copyright {
text-align: center;
}
</style>
</head>
<body class="">
<div class="container">
<header class="header">
<div class="header__inner">
<div class="header__logo">
<a href="https://blog.dich.bid" style="text-decoration: none;">
<div class="logo">
Dich&#x27;blog
</div>
</a>
</div>
</div>
<nav class="menu">
<ul class="menu__inner">
<li><a href="https://blog.dich.bid">blog</a></li>
<li><a href="https://blog.dich.bid/archive">archive</a></li>
<li class="active"><a href="https://blog.dich.bid/tags">tags</a></li>
<li><a href="https://blog.dich.bid/weekly">weekly</a></li>
<li><a href="https://blog.dich.bid/search">search</a></li>
<li><a href="https://blog.dich.bid/about">about me</a></li>
<li><a href="https://blog.dich.bid/links">links</a></li>
<li><a href="https://blog.dich.bid/atom.xml">rss</a></li>
<li><a href="https://github.com/Dichgrem" target="_blank" rel="noopener noreferrer">github</a></li>
</ul>
</nav>
</header>
<div class="content">
<div class="post">
<h1 class="post-title">
tag: #网络艺术
(2 posts)
</h1>
<a href="https://blog.dich.bid/tags">
Show all tags
</a>
<ul><li class="post-list">
<a href="https://blog.dich.bid/network-aria2/">
<span class="post-date">2025-04-15</span>
:: <span class="post-list-title">网络艺术:Aria2使用指南</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
</li>
<li class="post-list">
<a href="https://blog.dich.bid/network-yt-dlp/">
<span class="post-date">2025-04-12</span>
:: <span class="post-list-title">网络艺术:Yt-dlp使用指南</span></a>
<span class="post-tags-inline">
::
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
</li>
</ul>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="copyright">
<span>©
2025
Dichgrem</span>
<span class="copyright-theme">
<span class="copyright-theme-sep"> :: CC BY-SA 4.0 :: A friend comes from distant lands</span>
</a>
</span>
</div>
</div>
</footer>
</div>
</body>
</html>

BIN
static/images/electerm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
static/images/s905-atv.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 KiB