據(jù)采集實(shí)戰(zhàn)指南)
DouK-Downloader 抖音 TikTok 作品批量下載與數(shù)據(jù)采集實(shí)戰(zhàn)指南【免費(fèi)下載鏈接】TikTokDownloader抖音 / TikTok 平臺(tái)作品下載/數(shù)據(jù)采集工具項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader想把抖音賬號(hào)的作品、評(píng)論、賬號(hào)數(shù)據(jù)批量拉下來(lái)存盤DouK-Downloader 基于 Python 異步請(qǐng)求實(shí)現(xiàn)抖音 / TikTok 雙平臺(tái)作品下載與數(shù)據(jù)采集另帶直播錄制和 Web API 服務(wù)化。本文給出最短跑通路徑、參數(shù)速查與源碼入口適合批量下載與長(zhǎng)期采集的用戶。能力矩陣能采什么哪些功能已下線維度能力作品下載抖音視頻 / 圖集 / 實(shí)況 / 動(dòng)圖最高畫(huà)質(zhì)TikTok 視頻原畫(huà) / 圖集音樂(lè)與動(dòng)態(tài) / 靜態(tài)封面賬號(hào)維度抖音發(fā)布 / 喜歡 / 收藏 / 收藏夾作品TikTok發(fā)布 / 喜歡作品多賬號(hào)批量鏈接維度批量下載鏈接作品后臺(tái)監(jiān)聽(tīng)剪貼板鏈接自動(dòng)下載直播獲取抖音 / TikTok 直播拉流地址調(diào)用 ffmpeg 錄制數(shù)據(jù)采集作品評(píng)論、合集 / 合輯、賬號(hào)詳細(xì)數(shù)據(jù)、綜合 / 視頻 / 用戶 / 直播四類搜索、抖音熱榜工程能力增量下載、斷點(diǎn)續(xù)傳、并發(fā) 4、自動(dòng)跳過(guò)已下載、CSV/XLSX/SQLite 持久化、代理請(qǐng)求、局域網(wǎng)遠(yuǎn)程訪問(wèn)?? 邊界清單以下功能在當(dāng)前版本不可用或受限使用別依賴Web UI 交互模式重構(gòu)中選中只會(huì)提示該功能正在重構(gòu)見(jiàn) 主調(diào)度類 的disable_function內(nèi)置加密參數(shù)算法xBogus / aBogus 等README 明確已過(guò)期失效、不再維護(hù)需自行準(zhǔn)備生成代碼從瀏覽器讀取 Cookie、掃碼登錄獲取 Cookie主菜單對(duì)應(yīng)代碼已整段注釋TikTokDownloader.py 第 114-118 行批量下載收藏作品(抖音)僅支持當(dāng)前已登錄 Cookie 對(duì)應(yīng)賬號(hào)暫不支持多賬號(hào)付費(fèi)作品README 明確不支持多開(kāi)實(shí)例未做優(yōu)化需復(fù)制整個(gè)項(xiàng)目文件夾獨(dú)立運(yùn)行首次下載環(huán)境準(zhǔn)備到文件落地Python 3.12 與兩條安裝路徑唯一硬性要求是 Python 版本pyproject.toml 聲明requires-python 3.12低于 3.12 無(wú)法運(yùn)行。拿到源碼后二選一git clone https://gitcode.com/GitHub_Trending/ti/TikTokDownloader cd TikTokDownloader pip install -r requirements.txt python main.pycd TikTokDownloader uv sync --no-dev uv run main.py依賴清單就是技術(shù)棧本身httpx[socks]異步請(qǐng)求、rich終端渲染、fastapi/uvicorn服務(wù)化、pydantic數(shù)據(jù)校驗(yàn)、aiosqlite/openpyxl持久化。Cookie 獲取F12 復(fù)制 odin_ttCookie 決定接口權(quán)限和視頻畫(huà)質(zhì)僅在失效后需要重新寫(xiě)入不是每次運(yùn)行都寫(xiě)。步驟參照 Cookie 獲取教程瀏覽器打開(kāi)https://www.douyin.com/可無(wú)痕登錄賬號(hào)按 F12 打開(kāi)開(kāi)發(fā)人員工具選「網(wǎng)絡(luò)」選項(xiàng)卡勾選「保留日志」篩選器輸入cookie-name:odin_tt點(diǎn)擊加載任意作品評(píng)論區(qū)選中一個(gè)請(qǐng)求復(fù)制Cookie完整值寫(xiě)入方式兩種主菜單選手動(dòng)輸入 Cookie (抖音)粘貼回車或從剪貼板讀取 Cookie (抖音)直接回車。首次下載編號(hào)步驟運(yùn)行python main.py首次啟動(dòng)顯示免責(zé)聲明輸入YES該選擇持久化僅首次出現(xiàn)按上文寫(xiě)入抖音 Cookie返回主菜單選終端交互模式選批量下載鏈接作品(抖音)→手動(dòng)輸入待采集的作品鏈接粘貼一條抖音作品鏈接回車進(jìn)度條走完后文件落在儲(chǔ)存根路徑root下的folder_name目錄默認(rèn)Download任意菜單直接回車返回上級(jí)輸入Q或q結(jié)束程序 文件名由name_format決定默認(rèn)create_time type nickname desc即創(chuàng)建時(shí)間_作品類型_賬號(hào)昵稱_作品描述。settings.json 按用途分組速查首次啟動(dòng)時(shí) settings.py 的__create在項(xiàng)目根目錄自動(dòng)生成settings.json默認(rèn)值集中在Settings.default第 21-121 行。改完配置文件必須重啟程序才生效不支持熱加載。身份憑證參數(shù)默認(rèn)值一句話作用修改建議cookie抖音身份憑證字符串或字典均可登錄后寫(xiě)入失效再更新cookie_tiktokTikTok 憑證額外需browser_info_tiktok里的device_id等初始設(shè)置douyin_platform/tiktok_platformtrue是否啟用對(duì)應(yīng)平臺(tái)不用哪個(gè)關(guān)哪個(gè)存儲(chǔ)路徑參數(shù)默認(rèn)值一句話作用修改建議root儲(chǔ)存根路徑填已存在目錄空值代表項(xiàng)目根目錄folder_nameDownload頂層下載目錄名避免非法字符name_formatcreate_time type nickname desc文件命名模板從id/desc/create_time/nickname/uid/mark/type七鍵組合desc_length/name_length64/128描述 / 文件名最大字符數(shù)文件名過(guò)長(zhǎng)再調(diào)max_size0文件大小上限字節(jié)0 為不限制超大文件想跳過(guò)時(shí)設(shè)置并發(fā)與限制參數(shù)默認(rèn)值一句話作用修改建議timeout10請(qǐng)求超時(shí)秒有效范圍 2-10max_retry5請(qǐng)求失敗重試次數(shù)有效范圍 0-5chunk2MB每次從服務(wù)器接收的數(shù)據(jù)塊大小有效范圍 128KB-2MBmax_pages0分頁(yè)請(qǐng)求次數(shù)上限0 等價(jià) 99999控制賬號(hào)拉取量downloadtrue是否下載文件只采數(shù)據(jù)設(shè)falserun_command啟動(dòng)時(shí)預(yù)執(zhí)行的功能指令免去重復(fù)選菜單見(jiàn)下文持久化參數(shù)默認(rèn)值一句話作用修改建議storage_format數(shù)據(jù)持久化格式取csv/xlsx/sql三值空值不落任何數(shù)據(jù)文件網(wǎng)絡(luò)參數(shù)默認(rèn)值一句話作用修改建議proxy/proxy_tiktok平臺(tái)代理地址啟動(dòng)時(shí)實(shí)測(cè)連通性ffmpegffmpeg 可執(zhí)行文件路徑錄制直播必填五個(gè)參數(shù)的校驗(yàn)邏輯與回退行為校驗(yàn)集中在 parameter.py共同特點(diǎn)非法值不會(huì)報(bào)錯(cuò)退出而是靜默回退并寫(xiě)警告日志。cookie__check_cookie第 280-287 行接受字典或字符串其他類型記警告并返回空值。未登錄時(shí)賬號(hào)頁(yè)、私密賬號(hào)作品接口直接失敗畫(huà)質(zhì)偏低第一懷疑它。root__check_root第 368-382 行先判目錄存在不存在則嘗試在父目錄下創(chuàng)建都不行才回退項(xiàng)目根路徑并寫(xiě)root 參數(shù)…不是有效的文件夾路徑警告。name_format__check_name_format第 404-415 行要求空格分隔的每個(gè)鍵都在七鍵內(nèi)任一非法整體回退默認(rèn)組合create_time type nickname desc不逐鍵過(guò)濾。max_pages__check_max_pages第 525-535 行把 0 與非正整數(shù)統(tǒng)一按 99999 處理。喜歡 / 收藏接口只返回發(fā)布日期不返回操作日期程序必須拉全量再按日期篩選此參數(shù)是唯一量級(jí)閥門。proxy__check_proxy第 453-502 行啟動(dòng)時(shí)實(shí)際請(qǐng)求平臺(tái)頁(yè)面測(cè)連超時(shí)或報(bào)錯(cuò)直接返回None代理靜默失效在日志里搜代理測(cè)試成功 / 失敗確認(rèn)狀態(tài)。舊版本字段有自動(dòng)映射rename_paramssettings.py 第 122-143 行default_mode→run_command、update_cookie→douyin_platform、update_cookie_tiktok→tiktok_platform、original_cover→static_cover。把 DouK-Downloader 接進(jìn)你的工作流終端交互模式python main.py # 終端交互模式 - 批量下載鏈接作品(抖音) - 手動(dòng)輸入待采集的作品鏈接15 個(gè)功能入口定義在 main_terminal.py 的__function第 141-209 行抖音 11 項(xiàng)賬號(hào)作品 / 鏈接作品 / 直播 / 評(píng)論 / 合集 / 賬號(hào)詳細(xì) / 搜索 / 熱榜 / 收藏 / 收藏音樂(lè) / 收藏夾 TikTok 4 項(xiàng)賬號(hào)作品 / 鏈接作品 / 合集 / 直播。已知限制批量下載收藏作品(抖音)僅支持當(dāng)前登錄賬號(hào)。配置驅(qū)動(dòng)run_command在settings.json把菜單選擇順序用空格連寫(xiě)進(jìn)run_command啟動(dòng)后程序自動(dòng)走完菜單鏈路適合定時(shí)任務(wù)run_command: 終端交互模式 批量下載賬號(hào)作品(抖音) 使用 accounts_urls 參數(shù)的賬號(hào)鏈接(推薦)__check_run_command將其按空格拆分并倒序成棧菜單每進(jìn)一層彈一個(gè)賬號(hào)鏈接可預(yù)先寫(xiě)在accounts_urls每項(xiàng)含url、tab、earliest、latest、enable字段。已知限制run_command跳過(guò)菜單不跳過(guò)前置條件Cookie 未寫(xiě)入時(shí)平臺(tái)功能照樣不可用。Web API 服務(wù)化主菜單選Web API 模式服務(wù)監(jiān)聽(tīng)0.0.0.0:5555SERVER_HOST/SERVER_PORTstatic.py 第 9-13 行實(shí)現(xiàn)為 main_server.py 的APIServer.run_server第 82-101 行。訪問(wèn)http://127.0.0.1:5555/docs或/redoc查看自動(dòng)生成的交互文檔。鑒權(quán)每個(gè)接口經(jīng)token_dependency第 46-51 行讀取請(qǐng)求頭token交 function.py 第 73 行的is_valid_token()校驗(yàn)失敗返回HTTP 403。該函數(shù)當(dāng)前默認(rèn)return True無(wú)需令牌公開(kāi)部署前把它改成固定令牌校驗(yàn)并可用/token接口測(cè)試。from httpx import post data {detail_id: 0123456789, pages: 2} headers {token: } resp post(http://127.0.0.1:5555/douyin/comment, jsondata, headersheaders) print(resp.json())已知限制默認(rèn)綁定 0.0.0.0對(duì)外暴露前必須先設(shè)令牌并掛反向代理終結(jié) TLS。Docker 容器docker pull joeanamier/tiktok-downloader docker run --name tk -p 5555:5555 \ -v tiktok_downloader_volume:/app/Volume -it joeanamier/tiktok-downloader docker start -i tk也可用倉(cāng)庫(kù)根目錄 Dockerfile 本地構(gòu)建雙階段構(gòu)建器python:3.12-bullseye最終鏡像python:3.12-slimEXPOSE 5555、數(shù)據(jù)卷/app/Volume。已知限制容器無(wú)法訪問(wèn)宿主機(jī)文件系統(tǒng)與本地瀏覽器依賴宿主環(huán)境的功能不可用。源碼閱讀路徑一次請(qǐng)求經(jīng)過(guò)哪些模塊以粘貼抖音作品鏈接并下載為例link/extractor.py 用正則把短鏈解析成完整鏈接、抽出 19 位作品 IDinterface/ 下的接口類基類模板 template.py按游標(biāo)分頁(yè)請(qǐng)求extract/extractor.py 從響應(yīng)提取字段并寫(xiě)入記錄downloader/ 先落臨時(shí)文件夾再移入儲(chǔ)存文件夾storage/ 按storage_format持久化。調(diào)度中樞是 TikTokDownloader.py 的TikTokDownloader類負(fù)責(zé)菜單分發(fā)與run_command直達(dá)。三個(gè)核心模塊調(diào)度層TikTokDownloader菜單分發(fā)、Cookie 寫(xiě)入、版本檢查另開(kāi)守護(hù)線程periodic_update_params第 439-447 行每900 秒COOKIE_UPDATE_INTERVAL 15 * 60static.py 第 16 行刷新 msToken、tt_wid 并回寫(xiě) Cookie。接口層API模板src/interface/template.pygenerate_params/request_data/check_response三段式run_batch循環(huán)直到has_more為 falsedeal_url_params里抖音追加a_bogusTikTok 追加X(jué)-BogusX-Gnarly子類只需關(guān)心 URL 與游標(biāo)規(guī)則。下載層Downloadersrc/downloader/download.pySemaphore(MAX_WORKERS)限制并發(fā)MAX_WORKERS 4static.py 第 2 行注釋注明對(duì)直播無(wú)效request_file流式寫(xiě)臨時(shí)文件。兩個(gè)值得讀的工程細(xì)節(jié)重試與退避retry.py 第 10-23 行Retry.retry按max_retry上限循環(huán)每次失敗后await wait()智能延時(shí)——延時(shí)而為對(duì)數(shù)正態(tài)分布均值6 秒、下限 0.5 秒function.pyget_wait_time達(dá)到上限才終止任務(wù)。文件完整性與續(xù)傳FILE_SIGNATURESstatic.py 第 29-54 行內(nèi)置 jpg/png/mp4/mov/mkv/flv 等文件頭魔數(shù)用于校驗(yàn)真實(shí)類型并糾正后綴下載器在__update_headers_rangedownload.py 第 938-949 行按臨時(shí)文件當(dāng)前大小設(shè)置Range: bytes{position}-配合save_file的先臨時(shí)后移動(dòng)實(shí)現(xiàn)斷點(diǎn)續(xù)傳。故障排查先看這 6 種現(xiàn)象現(xiàn)象原因解法數(shù)據(jù)獲取失敗、視頻清晰度偏低Cookie 失效或未登錄按教程重寫(xiě) Cookie私密賬號(hào)需已登錄且已關(guān)注該賬號(hào)的 Cookie文件沒(méi)出現(xiàn)在預(yù)期目錄root非法已回退項(xiàng)目根目錄日志搜root 參數(shù)警告改為已存在目錄后重啟代理配置了卻沒(méi)生效啟動(dòng)時(shí)代理測(cè)連失敗程序自動(dòng)忽略先手動(dòng)驗(yàn)證代理可用再確認(rèn)日志出現(xiàn)代理測(cè)試成功喜歡 / 收藏作品采集很慢接口只返回發(fā)布日期需拉全量再按日期篩選用max_pages限制請(qǐng)求頁(yè)數(shù)縮小earliest/latest區(qū)間升級(jí)后舊作品丟失舊版數(shù)據(jù)在_internal/Volume新版未繼承按 README 更新方案一將舊版_internal/Volume復(fù)制到新版_internal多開(kāi)實(shí)例行為異常項(xiàng)目未針對(duì)多開(kāi)優(yōu)化復(fù)制整個(gè)項(xiàng)目文件夾各開(kāi)獨(dú)立實(shí)例?? 終止程序或 ffmpeg 一律按Ctrl C不要點(diǎn)終端關(guān)閉按鈕粘貼的鏈接含換行符會(huì)導(dǎo)致 ID 提取失敗。適用場(chǎng)景與合規(guī)提醒DouK-Downloader 適合個(gè)人作品歸檔、中小規(guī)模賬號(hào)數(shù)據(jù)采集、Web API 服務(wù)化集成三類場(chǎng)景雙平臺(tái)能力完整全部邏輯可讀可改。?? 本項(xiàng)目涉及數(shù)據(jù)采集與下載使用前請(qǐng)完整閱讀 README 末尾免責(zé)聲明因采集與下載行為產(chǎn)生的一切法律責(zé)任由使用者自行承擔(dān)作者概不負(fù)責(zé)?!久赓M(fèi)下載鏈接】TikTokDownloader抖音 / TikTok 平臺(tái)作品下載/數(shù)據(jù)采集工具項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考