Files
eeclass-video-downloader/README.md
2026-04-23 02:43:26 +08:00

80 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# eeclass-video-downloader
ee-class video dl script fixed
## 1. 介紹 (Introduction)
這是一個用來下載 ee-class 資訊系課程影片的 Python 腳本。這套系統的防禦機制相對簡單,只要掌握以下幾點,你就能夠輕鬆下載影片。
參考來源https://github.com/lebr0nli/eeclass-video-dl
使用前請先確認是否有python環境或是可將download.py貼到Google colab上也可以但需要留意檔案會儲存在colab內的工作階段資料夾中務必記得在工作階段內將其下載下來。
本專案僅供技術研究與學術使用,切勿用於不法
---
## 2. 使用方式 (Usage)
1. 打開F12開發人員工具
2.`GetEnv.js`的內容貼到瀏覽器F12開發人員工具的Console主控台中執行會得到類似下面格式的東西。
```python
url = "https://eeclass.yourschool.edu.tw/sysdata/doc/X/XXXXXXXXXXXXXXXXXX/video/video_hd.mp4"
headers = {
"Referer": "https://eeclass.yourschool.edu.tw/media/doc/*",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0",
"Cookie": "PHPSESSID=; accesstoken=; account="
}
filename = "filename.mp4"
```
3. 將上述內容貼到`download.py`中的配置區域。(請參考「硬核說明」)
4. 開啟命令提示字元或終端機,執行 `python download.py`。
5. 等待下載完成,影片會存到當前目錄。
---
## 硬核說明by gemini
### 1. 核心要領 (Key Points)
這類系統最主要的防禦手段是 **「驗證身分」** 與 **「檢查來源」**。
* **來源檢查 (Referer)**伺服器會看你是不是從「播放頁面」連過來的。如果直接開啟連結Referer 會是空的,伺服器就會擋掉。
* **身分權限 (Cookie)**`accesstoken` 是這套系統最關鍵的身分證。如果沒有這串 Cookie伺服器會認為你沒登入回傳 404 或 403。
* **流式寫入 (Stream)**:影片檔案通常很大,使用 `stream=True` 可以讓 Python 一邊下載一邊存檔,不會因為記憶體不足而當機。
---
### 2. 需要替換的地方 (Replaceable Parts)
當你要下載另一部影片時,請修改 `download.py` 中的這三個部分:
#### A. `url` (影片真實位址)
* **尋找方式**
* **方法一**:在原始網頁原始碼中搜尋 `media = JSON.parse( atob('...'))`,將那串字串拿去 Base64 解碼。
* **方法二**:打開 F12在 **Network** 面板過濾 `mp4`,找到那個狀態碼是 `206` 的請求,複製它的 URL。
* **注意**:有時 JSON 裡會有 `video_1920.mp4`,但如果下載失敗,請嘗試換成 `video_hd.mp4` 或 `video.mp4`。
#### B. `Referer` (來源網址)
* **修改為**:該影片的播放頁面網址。
* **格式**:通常是 `https://tms.utaipei.edu.tw/media/XXXX`XXXX 是影片 ID
#### C. `Cookie` (身分憑證)
* **注意**Cookie 會過期(例如關掉瀏覽器或一段時間沒操作)。如果下次下載失敗,請更新它。
* **尋找方式**:在 F12 的 **Network** 面板隨便點一個請求,看右邊的 **Request Headers** 裡的 `Cookie:` 欄位,整串複製貼過來即可。
* **關鍵欄位**:通常只要 `PHPSESSID` 和 `accesstoken` 這兩個就夠了。
---
### 3. 進階小技巧:如何快速獲取所有資訊?
下次如果你想省下解碼 Base64 的時間,可以:
1. 打開影片播放頁面。
2. 按下 `F12` -> `Console`。
3. 輸入 `fs.video.media.src[0].src` (通常是最高畫質) 或 `fs.video.media.src[1].src`。
4. 這就會直接印出影片網址,你只要把這個網址填進 Python 腳本即可。
**總結變動清單:**
```python
url = "新的影片連結"
headers = {
"Referer": "新的播放頁面網址",
"Cookie": "新的 Cookie 字串 (包含最新的 accesstoken)"
}
```
掌握這三點,這套系統內的所有影片你應該都能順利下載!