8.9 KiB
8.9 KiB
Coursera 課程備份工具
這個工具可以幫助你備份 Coursera 課程內容到本地裝置,包括影片、文字內容和字幕。
功能特色
- ✅ 自動登入 Coursera 帳號
- ✅ 下載課程影片
- ✅ 下載影片字幕/逐字稿
- ✅ 下載課程文字資料
- ✅ 支援批次下載多個課程
- ✅ 自動整理課程檔案結構
- 🔒 多層級反機器人偵測機制
安裝步驟
1. 安裝 Python
確保你的電腦已安裝 Python 3.8 或更高版本。可以到 Python 官網 下載。
2. 安裝相依套件
在專案目錄下執行:
pip install -r requirements.txt
3. 設定 Chrome 瀏覽器
這個工具使用 Selenium 和 Chrome 瀏覽器來模擬登入和下載。請確保:
- 已安裝 Google Chrome 瀏覽器
- 程式會自動下載對應的 ChromeDriver
使用方法
1. 建立配置檔案
複製 config.example.json 並重新命名為 config.json:
copy config.example.json config.json
2. 編輯配置檔案
在 config.json 中填入你的資訊:
{
"email": "your-email@example.com",
"password": "your-password",
"output_dir": "downloads",
"download_videos": true,
"download_subtitles": true,
"download_resources": true,
"headless": false,
"course_urls": [
"https://www.coursera.org/learn/your-course-name"
]
}
配置說明:
email: 你的 Coursera 帳號password: 你的 Coursera 密碼output_dir: 下載檔案的儲存目錄download_videos: 是否下載影片(true/false)download_subtitles: 是否下載字幕(true/false)download_resources: 是否下載其他資源(true/false)headless: 是否使用無頭模式(true 為背景執行,false 會顯示瀏覽器視窗)delay_between_requests: 請求間隔秒數(建議 3-5 秒,避免被偵測)random_delay: 是否使用隨機延遲(true 更安全)max_retries: 失敗重試次數course_urls: 要下載的課程網址列表
3. 執行程式
python coursera_downloader.py
檔案結構
下載完成後,檔案會按照以下結構組織:
downloads/
└── 課程名稱/
├── course_info.json # 課程資訊
├── Week_1/ # 第一週內容
│ ├── video1.mp4
│ ├── subtitle1.vtt
│ └── reading1.txt
├── Week_2/
│ └── ...
└── ...
重要注意事項
⚠️ 法律與道德考量
- 僅供個人學習使用:下載的課程內容僅供你個人學習和備份使用
- 尊重版權:請勿分享、轉售或公開傳播下載的內容
- 遵守服務條款:使用本工具前請確認你已閱讀並同意 Coursera 的服務條款
- 帳號安全:
config.json包含你的密碼,請勿分享此檔案
⚠️ 帳號安全與異常活動
- 不影響課程資料:此工具僅讀取和下載內容,不會影響你的測驗成績、作業記錄或課程進度
- 異常活動風險:頻繁的自動化操作可能被 Coursera 偵測為異常活動,建議:
- 使用適當延遲:保持 3-5 秒的請求間隔
- 啟用隨機延遲:讓操作更像人類行為
- 避免過度使用:不要在短時間內下載大量課程
- 離峰時段使用:避開平台高峰時段
- 分批下載:一次下載一個課程,間隔一段時間再下載下一個
- 帳號風險:雖然工具已加入反偵測機制,但仍有可能觸發 Coursera 的安全警報,請自行評估風險
⚠️ 技術限制
- 需要有效的課程註冊:你必須已經註冊了該課程才能下載內容
- 網路連線:下載過程需要穩定的網路連線
- Coursera 網站變更:如果 Coursera 更改網站結構,程式可能需要更新
- 下載速度:視課程大小和網路速度而定,可能需要較長時間
- 異常活動偵測:為避免觸發 Coursera 的安全機制,程式已加入延遲和隨機化,建議:
- 不要在短時間內下載過多課程
- 使用建議的延遲設定(3-5 秒)
- 避免頻繁重複執行
- 選擇離峰時段使用
進階使用
自訂下載選項
你可以根據需求修改 config.json 中的設定:
- 只下載字幕:設定
"download_videos": false - 背景執行:設定
"headless": true - 批次下載:在
course_urls陣列中加入多個課程網址 - 調整安全性:
"delay_between_requests": 5- 增加延遲時間(更安全但更慢)"random_delay": true- 啟用隨機延遲(強烈建議)"headless": false- 顯示瀏覽器視窗(便於監控和除錯)
安全使用建議
為了降低帳號風險和避免被偵測:
- 首次使用:建議先用
headless: false觀察程式行為 - 測試運行:先測試下載單一課程的少量內容
- 分散下載:每天最多下載 1-2 個課程
- 避免重複:不要對同一課程重複執行下載
- 監控日誌:注意程式輸出的錯誤訊息
- 帳號狀態:定期檢查 Coursera 帳號是否正常
- 使用預設設定:不要修改延遲時間至過低(< 2 秒)
- 離峰時段:建議在晚上或週末使用
- 分批處理:如果要下載多個課程,每個課程間隔 12-24 小時
疑難排解
問題:無法登入
- 檢查帳號密碼是否正確
- 確認 Coursera 帳號狀態正常
- 嘗試關閉 headless 模式查看錯誤
- 檢查是否有雙重驗證(2FA)啟用
問題:被標記為異常活動
- 增加
delay_between_requests到 5-10 秒 - 確保
random_delay設為true - 設定
headless: false以模擬真實瀏覽器行為 - 暫停使用一段時間(24-48 小時)
- 嘗試在不同時段使用
- 清除瀏覽器 cookies 並重新登入
- 檢查是否使用 VPN,嘗試關閉或更換 IP
問題:找不到影片
- Coursera 網站結構複雜且經常變更
- 可能需要手動調整程式碼來適應特定課程
- 建議使用瀏覽器開發者工具分析頁面結構
問題:下載速度慢
- 這是正常現象,延遲設定越高越慢但越安全
- 影片檔案較大需要時間
- 可以在離峰時段下載
開發資訊
- 語言: Python 3.8+
- 主要套件:
selenium- 網頁自動化yt-dlp- 影片下載requests- HTTP 請求beautifulsoup4- HTML 解析
- 多層級反機器人偵測機制:
- ✅ 隱藏 Selenium webdriver 特徵
- ✅ 偽裝 navigator 屬性(plugins, languages 等)
- ✅ 模擬人類滑鼠移動軌跡
- ✅ 模擬真實打字速度(含停頓與節奏變化)
- ✅ 隨機化滾動行為
- ✅ 隨機延遲與等待時間
- ✅ 完整的瀏覽器 Headers(User-Agent, Accept, Referer 等)
- ✅ Chrome DevTools Protocol (CDP) 設定
- ✅ 禁用自動化標記和擴充功能
授權
請參考 LICENSE 檔案。
免責聲明
本工具僅供學習和研究使用。使用者應自行承擔使用本工具的所有風險和責任。開發者不對使用本工具導致的任何問題負責,包括但不限於:
- 違反 Coursera 服務條款
- 帳號被封鎖或停用
- 觸發異常活動警報
- 版權糾紛
- 資料遺失
- 課程存取權限被撤銷
重要提醒:
- 本工具使用自動化技術存取 Coursera,可能違反其服務條款
- 雖然已加入安全機制,但無法保證完全不被偵測
- 建議僅用於已購買或正式註冊的課程進行個人備份
- 不建議頻繁或大量使用
使用本工具即表示你理解並接受上述所有風險和限制。
技術細節
反機器人偵測技術
本工具實現了多層級的反偵測機制:
-
瀏覽器指紋偽裝
- 移除
navigator.webdriver屬性 - 偽裝
navigator.plugins和navigator.languages - 添加
window.chrome物件 - 使用 Chrome DevTools Protocol 覆寫 User-Agent
- 移除
-
人類行為模擬
- 滑鼠移動軌跡:使用 ActionChains 模擬真實移動
- 打字節奏:隨機按鍵間隔和偶爾停頓
- 滾動行為:隨機滾動距離和速度
- 點擊前移動:模擬滑鼠移動到元素再點擊
-
網路請求偽裝
- 完整的 HTTP Headers(Accept, Accept-Language, Accept-Encoding)
- Referer 設定
- 請求間隨機延遲
- Keep-alive 連線
-
Selenium 特徵隱藏
- 禁用自動化控制標記
- 移除
enable-automation開關 - 禁用自動化擴充功能
- 使用新版 headless 模式
為什麼還是可能被偵測?
儘管已做了充分的偽裝,但以下情況仍可能被偵測:
- 行為模式分析:大量下載、無人類交互
- Canvas/WebGL 指紋:更進階的瀏覽器指紋識別
- 時間分析:過於精確的時間間隔
- IP 與地理位置:異常的登入地點
- 系統資源使用模式的差異
貢獻
歡迎提出 Issue 或 Pull Request 來改進這個工具!
最後更新: 2025-12-16