快轉到主要內容

Mikuinvidious:第三方Bilibili網頁端 + 下載影片,讓陳睿叔叔無法追蹤你的隱私

· 民國115年丙午年
·
切換繁體/簡體
分類 Linux系統 Self-hosting自架
標籤 Invidious Bilibili RSS Feed
目錄

叔叔我啊,最討厭不登入帳號看視頻的孩子了。

Mikuinvidious是模仿 Invidious Youtube 的網頁前端,專為Bilibili設計。

主打保護隱私的觀看體驗。

1. Mikuinvidious功能
#

Mikuinvidious是由趙喜娜 (Bing Chilling) 開發的開源專案,去掉了Bilibili主站的臃腫界面與追蹤器,只保留影片播放功能,不需要JavaScript就能用。

用意在於讓用戶可以免登入觀看Bilibili影片,不會播放到一半被「登入享高清」的訊息干擾。還可以下載現正播放的影片。

Mikuinvidious也可以用來追番(需要輸入av號),只要不是大會員的公開番劇都能播放。依照Mikuinvidious伺服器部署的地理位置IP不同,能看的番劇也會不同。

可以用RSS訂閱UP主更新。不過看不到動態和文字專欄,只有影片。

Bilibili對外開放的影片畫質有限制。而且搜尋影片很容易被限流。

支援登入Bilibili帳號觀看更多內容。

2. 打包Mikuinvidious專案
#

參考Gitlab,這個專案似乎已經一年以上沒更新了(悲)作者的README是空白的。我實測當下還是勉強可以用,一些頁面會報錯。彈幕無法顯示。

沒有現成的Docker映像檔,需要自己打包。Mikuinvidious目前似乎沒有公共站臺,需要自架。

  1. 在Linux安裝Docker

  2. 複製儲存庫

git clone https://0xacab.org/johnxina/mikuinvidious.git

cd mikuinvidious
  1. 原作者寫的有問題,Docker容器會無法連線資料庫,這裡小改一下,修改shared.py讓它能連其他位址的資料庫。
# Connect to our nice redis database.
redis_conf = appconf.get('redis', {})
redis_host = os.environ.get('REDIS_HOST') or redis_conf.get('host', 'localhost')
redis_port = int(os.environ.get('REDIS_PORT') or redis_conf.get('port', 6379))
redis_db = int(os.environ.get('REDIS_DB') or redis_conf.get('db', 0))
appredis = redis.Redis(host=redis_host, port=redis_port, db=redis_db)
  1. 新增Dockerfile
vim Dockerfile
  1. 填入以下內容,使用uv安裝Python 3.12,填入以下內容,使用uv安裝Python 3.12
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder

ENV UV_COMPILE_BYTECODE=1 \
    UV_LINK_MODE=copy

WORKDIR /app

COPY requirements.txt .
RUN uv venv /opt/venv \
    && uv pip install --python /opt/venv/bin/python -r requirements.txt

FROM python:3.12-slim-bookworm

ENV PATH="/opt/venv/bin:${PATH}" \
    PYTHONUNBUFFERED=1

WORKDIR /app

COPY --from=builder /opt/venv /opt/venv
COPY . .

EXPOSE 8888

CMD ["sh", "-c", "test -f config.toml || cp config.toml.sample config.toml; exec python main.py"]
  1. 打包為Docker image
docker build -t mikuinvidious:local .

3. 部署MikuInvidious
#

  1. 新增設定檔
cp config.toml.sample config.toml

vim config.toml
  1. 修改config.toml,設定網域。沒網域就填寫http://IP:8888。然後設定Redis連線網址。
[site]
site_name = 'MikuInvidious'
site_url = 'http://網域'

[redis]
host = 'redis'
port = 6379
db = 0
  1. (選擇性)登入Bilibili帳號以解鎖更多內容,參考bilibili-api。可能被ban,風險自負。
[credential]
use_cred   = true
sessdata   = ''
bili_jct   = ''
buvid3     = ''
dedeuserid = ''
  1. 撰寫docker-compose
vim docker-compose.yaml
  1. 內容如下,使用自己建置的Docker映像檔,還需要跑一個Redis當作資料庫
services:
  mikuinvidious:
    image: mikuinvidious:local
    container_name: mikuinvidious
    restart: unless-stopped
    depends_on:
      redis:
        condition: service_healthy
    environment:
      REDIS_HOST: redis
      REDIS_PORT: "6379"
      REDIS_DB: "0"
    ports:
      - "8888:8888"
    volumes:
      - ./config.toml:/app/config.toml:ro

  redis:
    image: redis:7-alpine
    container_name: mikuinvidious-redis
    restart: unless-stopped
    command: ["redis-server", "--appendonly", "yes"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 3s
      retries: 5
    volumes:
      - ./redis-data:/data
  1. 啟動Docker服務
docker compose up -d
  1. 啟動服務後,使用http://IP:8888打開。

4. 將Bilibili網址重新導向到Mikuinvidious
#

安裝LibRedirect

MikuInvidious對Bilibili鏈接的處理不是很智慧,一些網址重新導向後會404。建議使用av號才能精準打開。

相關文章


感謝您的閱讀。我寫作是為了誠實表達想法,而不是追逐社群互動與流量。我很樂意傾聽你在仔細閱讀我文章之後的心得。若有內容勘誤 or 技術問題 or 回饋想法,歡迎透過本站「關於」頁面的Email與我聯絡。