更新 README.md
This commit is contained in:
78
README.md
78
README.md
@@ -1,2 +1,80 @@
|
|||||||
# eeclass-video-downloader
|
# 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)"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
掌握這三點,這套系統內的所有影片你應該都能順利下載!
|
||||||
Reference in New Issue
Block a user