據(jù)采集完整實(shí)戰(zhàn)教程:10 分鐘跑通首次下載)
DouK-Downloader 抖音/TikTok 作品下載與數(shù)據(jù)采集完整實(shí)戰(zhàn)教程10 分鐘跑通首次下載【免費(fèi)下載鏈接】TikTokDownloader抖音 / TikTok 平臺(tái)作品下載/數(shù)據(jù)采集工具項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloaderDouK-Downloader歷史名稱 TikTokDownloader是一款完全開源、基于 HTTPX 異步請(qǐng)求實(shí)現(xiàn)的抖音 / TikTok 作品下載與數(shù)據(jù)采集工具。它解決的核心問(wèn)題是不用抓包、不用寫腳本就能把視頻、圖集、音樂(lè)、封面文件下載下來(lái)并把作品、賬號(hào)、評(píng)論、搜索等結(jié)構(gòu)化數(shù)據(jù)持久化保存。典型用途有三類個(gè)人作品歸檔、中小規(guī)模賬號(hào)數(shù)據(jù)采集、把采集能力以 Web API 形式集成進(jìn)你自己的系統(tǒng)。能力一覽按你的使用場(chǎng)景對(duì)號(hào)入座場(chǎng)景能做什么單個(gè)作品下載粘貼一個(gè)抖音或 TikTok 鏈接即可下載支持最高畫質(zhì)視頻、圖集、實(shí)況/動(dòng)圖、音樂(lè)、動(dòng)態(tài)/靜態(tài)封面賬號(hào)批量處理抖音賬號(hào)發(fā)布、喜歡、收藏、收藏夾作品TikTok 賬號(hào)發(fā)布、喜歡作品支持多賬號(hào)批量、增量下載、按發(fā)布時(shí)間篩選鏈接批量與監(jiān)聽手動(dòng)/文本文件批量輸入作品鏈接后臺(tái)監(jiān)聽剪貼板復(fù)制鏈接自動(dòng)觸發(fā)下載直播錄制獲取抖音 / TikTok 直播拉流地址調(diào)用 ffmpeg 錄制直播數(shù)據(jù)采集作品評(píng)論、合集/合輯、賬號(hào)詳細(xì)數(shù)據(jù)、綜合/視頻/用戶/直播四類搜索、抖音熱榜工程化特性斷點(diǎn)續(xù)傳、多線程默認(rèn) 4 并發(fā)、自動(dòng)跳過(guò)已下載、代理請(qǐng)求、CSV/XLSX/SQLite 數(shù)據(jù)落盤、容器化與 API 服務(wù)化?? 使用當(dāng)前版本前先認(rèn)清四個(gè)不可依賴的功能Web UI 交互模式正在重構(gòu)代碼尚未更新菜單僅有提示內(nèi)置 xBogus/aBogus 等加密參數(shù)算法已過(guò)期失效、為合規(guī)不再維護(hù)依賴它的功能可能不正常需自行準(zhǔn)備生成代碼「從瀏覽器讀取 Cookie」與「掃碼登錄獲取 Cookie」均已棄用或失效主菜單對(duì)應(yīng)代碼已注釋。準(zhǔn)備工作Python 3.12、依賴與 Cookie 一次配齊環(huán)境與依賴唯一的硬指標(biāo)是 Python 不低于3.12Windows 10、macOS、Linux 均可運(yùn)行README 推薦 Windows 11 自帶終端。獲取源碼后pip 與 uv 兩條路徑任選其一git clone https://gitcode.com/GitHub_Trending/ti/TikTokDownloader cd TikTokDownloader python -m venv venv # 可選 pip install -r requirements.txtuv sync --no-dev # README 推薦路徑 uv run main.pyrequirements.txt 本身就是一張技術(shù)棧清單httpx異步請(qǐng)求、rich彩色終端、fastapiuvicorn服務(wù)化、pydantic數(shù)據(jù)校驗(yàn)、aiosqlite與openpyxl持久化。Cookie 獲取步驟 Cookie 是瀏覽器端身份憑證決定接口權(quán)限與視頻畫質(zhì)只在失效后需要重寫不是每次運(yùn)行都要寫。完整圖文見 Cookie獲取教程.md核心步驟是瀏覽器訪問(wèn)抖音網(wǎng)頁(yè)版并登錄賬號(hào)按F12打開開發(fā)人員工具選「網(wǎng)絡(luò)」選項(xiàng)卡并勾選「保留日志」篩選框輸入cookie-name:odin_tt點(diǎn)擊任意作品評(píng)論區(qū)觸發(fā)請(qǐng)求選中一個(gè)數(shù)據(jù)包全選復(fù)制Cookie的完整值。10 分鐘首次使用從啟動(dòng)到第一個(gè)文件落地程序入口是 main.py它創(chuàng)建TikTokDownloader實(shí)例并調(diào)用run()。按下面步驟原樣操作python main.py首次啟動(dòng)生成settings.json并展示項(xiàng)目標(biāo)題與免責(zé)聲明輸入YES確認(rèn)該選擇已持久化以后不再出現(xiàn)主菜單選手動(dòng)輸入 Cookie (抖音)粘貼剛才復(fù)制的 Cookie 后回車嫌麻煩可以選從剪貼板讀取 Cookie (抖音)復(fù)制好直接回車即可返回主菜單選終端交互模式選批量下載鏈接作品(抖音)再選手動(dòng)輸入待采集的作品鏈接粘貼一個(gè)抖音作品鏈接回車等進(jìn)度條走完文件出現(xiàn)在root根目錄下的folder_name文件夾中默認(rèn)就是項(xiàng)目根目錄下的Download/文件名由創(chuàng)建時(shí)間、賬號(hào)昵稱、作品描述拼成。菜單交互規(guī)則只需記住兩條任意輸入框直接回車是返回上一級(jí)輸入Q或q是結(jié)束程序。關(guān)鍵配置影響行為最大的六個(gè)參數(shù)settings.json首次啟動(dòng)自動(dòng)生成生成邏輯在 settings.py 的Settings.__create默認(rèn)值全部定義在Settings.default。修改后必須重啟程序才生效不支持熱加載。舊版字段有自動(dòng)映射default_mode→run_command、original_cover→static_cover等。只挑最影響行為的六個(gè)講cookie/cookie_tiktok默認(rèn)兩個(gè)平臺(tái)的身份憑證字符串或字典均可。未登錄時(shí)賬號(hào)頁(yè)、私密賬號(hào)作品會(huì)直接失敗畫質(zhì)偏低時(shí)優(yōu)先懷疑它。建議從已登錄瀏覽器寫入失效再更新。root默認(rèn)儲(chǔ)存根路徑。程序先檢查目錄是否存在再嘗試在父目錄下創(chuàng)建都不行才回退到項(xiàng)目根目錄并寫警告日志。建議填一個(gè)確定存在的目錄。name_format默認(rèn)create_time type nickname desc文件命名模板鍵只能從id/desc/create_time/nickname/uid/mark/type七鍵里選任一非法整體回退默認(rèn)。建議批量多賬號(hào)下載時(shí)加上uid或mark避免重名。storage_format默認(rèn)數(shù)據(jù)持久化格式CSV/XLSX/SQLite。純采集不下載的場(chǎng)景必須配置否則數(shù)據(jù)不落盤相關(guān)功能會(huì)直接警告退出。max_pages默認(rèn)0等價(jià) 99999分頁(yè)請(qǐng)求次數(shù)上限。喜歡/收藏接口只返回發(fā)布日期不返回操作日期程序必須拉全量再篩選這個(gè)參數(shù)是唯一的量級(jí)閥門。建議賬號(hào)作品多時(shí)顯式設(shè)小并配合日期區(qū)間縮小范圍。proxy默認(rèn)代理地址。程序啟動(dòng)時(shí)會(huì)真實(shí)請(qǐng)求平臺(tái)頁(yè)面測(cè)連失敗就靜默忽略代理日志里搜「代理測(cè)試成功/失敗」確認(rèn)狀態(tài)。部署與服務(wù)化容器一行起API 接進(jìn)你的系統(tǒng)Docker 一行啟動(dòng)命令鏡像可用倉(cāng)庫(kù)根目錄 Dockerfile 本地構(gòu)建雙階段構(gòu)建最終鏡像基于python:3.12-slim也可直接拉取joeanamier/tiktok-downloader或ghcr.io/joeanamier/tiktok-downloaderdocker run --name tiktok-downloader -p 5555:5555 -v tiktok_downloader_volume:/app/Volume -it joeanamier/tiktok-downloader docker start -i tiktok-downloader注意容器內(nèi)無(wú)法訪問(wèn)宿主機(jī)文件系統(tǒng)與本地瀏覽器依賴宿主環(huán)境的功能不可用其余功能如有異常需向作者反饋。Web API 服務(wù)化調(diào)用示例主菜單選Web API 模式程序在0.0.0.0:5555啟動(dòng) FastAPI 服務(wù)常量定義在 static.pySERVER_HOST/SERVER_PORT服務(wù)實(shí)現(xiàn)在 main_server.py 的APIServer.run_server。瀏覽器訪問(wèn)http://127.0.0.1:5555/docs或/redoc就是自動(dòng)生成的交互文檔。每個(gè)接口經(jīng)token_dependency讀取請(qǐng)求頭里的token交由 function.py 的is_valid_token()校驗(yàn)失敗返回 HTTP 403。該函數(shù)當(dāng)前恒返回True即默認(rèn)無(wú)需令牌對(duì)外部署前建議在這里改成校驗(yàn)固定令牌并可用/token接口測(cè)試有效性。調(diào)用示例from httpx import post data {detail_id: 0123456789, pages: 2} headers {token: } response post(http://127.0.0.1:5555/douyin/comment, jsondata, headersheaders) print(response.json()) 生產(chǎn)化三句話需要多實(shí)例就復(fù)制整個(gè)項(xiàng)目文件夾隔離運(yùn)行對(duì)外暴露前掛一層反向代理終結(jié) TLS 并限流長(zhǎng)期運(yùn)行把 uvicorn 日志重定向到文件。源碼導(dǎo)讀一條請(qǐng)求鏈路三個(gè)核心模塊全鏈路一句話串起來(lái)用戶輸入經(jīng) link/extractor.py 把短鏈解析成完整鏈接interface/ 下的接口類發(fā)起分頁(yè)請(qǐng)求extract/extractor.py 統(tǒng)一提取字段downloader/ 先把文件寫入臨時(shí)文件夾、完成后再移動(dòng)到儲(chǔ)存目錄storage/ 按storage_format持久化數(shù)據(jù)調(diào)度中樞是 TikTokDownloader.py 的主菜單分發(fā)與run_command直達(dá)。調(diào)度層TikTokDownloadersrc/application/TikTokDownloader.py菜單分發(fā)、Cookie 寫入、版本檢查另開守護(hù)線程按 15 分鐘周期COOKIE_UPDATE_INTERVAL自動(dòng)刷新 msToken、tt_wid 并回寫 Cookie。接口層API模板src/interface/template.py統(tǒng)一generate_params→request_data→check_response三段式account.py、detail.py、live.py 等子類只關(guān)心各自的 URL 與游標(biāo)規(guī)則終端菜單的 15 個(gè)功能入口定義在 main_terminal.py 的__function。下載層Downloadersrc/downloader/download.py信號(hào)量限制并發(fā)MAX_WORKERS 4__update_headers_range支持 Range 斷點(diǎn)續(xù)傳先落臨時(shí)目錄再save_file移入目標(biāo)目錄。兩個(gè)值得讀的工程細(xì)節(jié)retry.py 的重試裝飾器按max_retry上限循環(huán)、失敗后智能延時(shí)static.py 的FILE_SIGNATURES內(nèi)置 jpg/png/mp4/mov 等文件頭魔數(shù)下載后據(jù)此校驗(yàn)真實(shí)類型并糾正后綴。常見問(wèn)題先對(duì)現(xiàn)象再找解法Q數(shù)據(jù)獲取失敗或視頻清晰度偏低Cookie 失效或未登錄導(dǎo)致。重新寫入 Cookie私密賬號(hào)的發(fā)布作品要求登錄且該賬號(hào)已關(guān)注目標(biāo)私密賬號(hào)。Q文件沒(méi)出現(xiàn)在預(yù)期目錄root是非法路徑程序已靜默回退到項(xiàng)目根目錄。查運(yùn)行日志中的 root 警告改成存在的目錄后重啟。Q配置了代理卻沒(méi)生效啟動(dòng)時(shí)代理測(cè)連失敗程序自動(dòng)忽略。先手動(dòng)驗(yàn)證代理可用再確認(rèn)日志出現(xiàn)「代理測(cè)試成功」。Q批量喜歡/收藏作品特別慢接口只返回作品發(fā)布日期程序必須拉全量再按日期篩選。用max_pages控制頁(yè)數(shù)并盡量縮小日期區(qū)間。Q升級(jí)后舊作品好像丟了舊版本數(shù)據(jù)存在_internal/Volume新版不會(huì)自動(dòng)繼承。按 README 更新方案一把舊版_internal/Volume復(fù)制到新版_internal。Q多開多個(gè)實(shí)例行為異常項(xiàng)目未針對(duì)多開優(yōu)化。復(fù)制整個(gè)項(xiàng)目文件夾每個(gè)實(shí)例獨(dú)立運(yùn)行。另外兩點(diǎn)操作紀(jì)律終止程序或 ffmpeg 一律按Ctrl C不要直接點(diǎn)終端關(guān)閉按鈕本項(xiàng)目不支持付費(fèi)作品下載。適用場(chǎng)景與合規(guī)聲明DouK-Downloader 適合三類場(chǎng)景個(gè)人作品歸檔、中小規(guī)模賬號(hào)數(shù)據(jù)采集、Web API 服務(wù)化集成。雙平臺(tái)能力完整全部邏輯可讀可改。?? 使用前請(qǐng)完整閱讀 README.md 末尾的免責(zé)聲明并理解接受全部條款。本項(xiàng)目使用必須自行遵守相關(guān)法律法規(guī)與平臺(tái)規(guī)則不得用于侵犯知識(shí)產(chǎn)權(quán)的行為因數(shù)據(jù)采集與下載行為產(chǎn)生的一切法律責(zé)任由使用者自行承擔(dān)?!久赓M(fèi)下載鏈接】TikTokDownloader抖音 / TikTok 平臺(tái)作品下載/數(shù)據(jù)采集工具項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考