Files
coursera-copy/README.md
ChenKaiLiuG e25629ed6d Update
2025-12-16 15:07:28 +08:00

8.9 KiB
Raw Permalink Blame History

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/
    │   └── ...
    └── ...

重要注意事項

⚠️ 法律與道德考量

  1. 僅供個人學習使用:下載的課程內容僅供你個人學習和備份使用
  2. 尊重版權:請勿分享、轉售或公開傳播下載的內容
  3. 遵守服務條款:使用本工具前請確認你已閱讀並同意 Coursera 的服務條款
  4. 帳號安全config.json 包含你的密碼,請勿分享此檔案

⚠️ 帳號安全與異常活動

  1. 不影響課程資料:此工具僅讀取和下載內容,不會影響你的測驗成績、作業記錄或課程進度
  2. 異常活動風險:頻繁的自動化操作可能被 Coursera 偵測為異常活動,建議:
    • 使用適當延遲:保持 3-5 秒的請求間隔
    • 啟用隨機延遲:讓操作更像人類行為
    • 避免過度使用:不要在短時間內下載大量課程
    • 離峰時段使用:避開平台高峰時段
    • 分批下載:一次下載一個課程,間隔一段時間再下載下一個
  3. 帳號風險:雖然工具已加入反偵測機制,但仍有可能觸發 Coursera 的安全警報,請自行評估風險

⚠️ 技術限制

  1. 需要有效的課程註冊:你必須已經註冊了該課程才能下載內容
  2. 網路連線:下載過程需要穩定的網路連線
  3. Coursera 網站變更:如果 Coursera 更改網站結構,程式可能需要更新
  4. 下載速度:視課程大小和網路速度而定,可能需要較長時間
  5. 異常活動偵測:為避免觸發 Coursera 的安全機制,程式已加入延遲和隨機化,建議:
    • 不要在短時間內下載過多課程
    • 使用建議的延遲設定3-5 秒)
    • 避免頻繁重複執行
    • 選擇離峰時段使用

進階使用

自訂下載選項

你可以根據需求修改 config.json 中的設定:

  • 只下載字幕:設定 "download_videos": false
  • 背景執行:設定 "headless": true
  • 批次下載:在 course_urls 陣列中加入多個課程網址
  • 調整安全性:
    • "delay_between_requests": 5 - 增加延遲時間(更安全但更慢)
    • "random_delay": true - 啟用隨機延遲(強烈建議)
    • "headless": false - 顯示瀏覽器視窗(便於監控和除錯)

安全使用建議

為了降低帳號風險和避免被偵測:

  1. 首次使用:建議先用 headless: false 觀察程式行為
  2. 測試運行:先測試下載單一課程的少量內容
  3. 分散下載:每天最多下載 1-2 個課程
  4. 避免重複:不要對同一課程重複執行下載
  5. 監控日誌:注意程式輸出的錯誤訊息
  6. 帳號狀態:定期檢查 Coursera 帳號是否正常
  7. 使用預設設定:不要修改延遲時間至過低(< 2 秒)
  8. 離峰時段:建議在晚上或週末使用
  9. 分批處理:如果要下載多個課程,每個課程間隔 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 等)
    • 模擬人類滑鼠移動軌跡
    • 模擬真實打字速度(含停頓與節奏變化)
    • 隨機化滾動行為
    • 隨機延遲與等待時間
    • 完整的瀏覽器 HeadersUser-Agent, Accept, Referer 等)
    • Chrome DevTools Protocol (CDP) 設定
    • 禁用自動化標記和擴充功能

授權

請參考 LICENSE 檔案。

免責聲明

本工具僅供學習和研究使用。使用者應自行承擔使用本工具的所有風險和責任。開發者不對使用本工具導致的任何問題負責,包括但不限於:

  • 違反 Coursera 服務條款
  • 帳號被封鎖或停用
  • 觸發異常活動警報
  • 版權糾紛
  • 資料遺失
  • 課程存取權限被撤銷

重要提醒

  • 本工具使用自動化技術存取 Coursera可能違反其服務條款
  • 雖然已加入安全機制,但無法保證完全不被偵測
  • 建議僅用於已購買或正式註冊的課程進行個人備份
  • 不建議頻繁或大量使用

使用本工具即表示你理解並接受上述所有風險和限制。

技術細節

反機器人偵測技術

本工具實現了多層級的反偵測機制:

  1. 瀏覽器指紋偽裝

    • 移除 navigator.webdriver 屬性
    • 偽裝 navigator.pluginsnavigator.languages
    • 添加 window.chrome 物件
    • 使用 Chrome DevTools Protocol 覆寫 User-Agent
  2. 人類行為模擬

    • 滑鼠移動軌跡:使用 ActionChains 模擬真實移動
    • 打字節奏:隨機按鍵間隔和偶爾停頓
    • 滾動行為:隨機滾動距離和速度
    • 點擊前移動:模擬滑鼠移動到元素再點擊
  3. 網路請求偽裝

    • 完整的 HTTP HeadersAccept, Accept-Language, Accept-Encoding
    • Referer 設定
    • 請求間隨機延遲
    • Keep-alive 連線
  4. Selenium 特徵隱藏

    • 禁用自動化控制標記
    • 移除 enable-automation 開關
    • 禁用自動化擴充功能
    • 使用新版 headless 模式

為什麼還是可能被偵測?

儘管已做了充分的偽裝,但以下情況仍可能被偵測:

  • 行為模式分析:大量下載、無人類交互
  • Canvas/WebGL 指紋:更進階的瀏覽器指紋識別
  • 時間分析:過於精確的時間間隔
  • IP 與地理位置:異常的登入地點
  • 系統資源使用模式的差異

貢獻

歡迎提出 Issue 或 Pull Request 來改進這個工具!


最後更新: 2025-12-16