F2 開源下載函式庫:抖音 TikTok 微博抓檔流程自己跑

F2 把抖音、TikTok、X、微博的抓檔流程收進本機 Python 環境,簽名演算法在地重現,Cookie 與資料不經第三方伺服器;裝之前先看清 pip 版本斷層、X 平台已故障與抖音的斷頭模式。

用 AI 摘要這篇文章:

先把結論說完:F2 值不值得裝,取決於你把它當什麼。你會寫 Python、願意在平台改版時自己進原始碼換 jsonpath,它是一份整理得很完整的多平台抓檔底盤,Apache-2.0 授權讓你商業改作都沒問題;你要的是一條天天穩定跑的下載生產線,它目前給不起,因為維護者只有一位,pip 上拿到的版本停在 2024 年底;你只是想偶爾存幾支影片,用現成的網頁型下載服務反而省事。

F2 是 GitHub 上 Johnserf-Seed 開發的 Python 函式庫,用非同步架構處理抖音、TikTok、Twitter(X)、微博四個平台的內容下載與資料蒐集,另外附了一個 Bark 推播通知模組。截至 2026 年 8 月約 2,620 顆星、397 次 fork、113 個開著的 issue。它不是圖形介面軟體,你要嘛用命令列跑,要嘛在自己的 Python 程式裡呼叫它。

F2 官方文件 f2.wiki 首頁截圖,標題為基於非同步的全平台下載工具,下方列出免安裝、多平台、可擴展等功能卡片Pin
F2 官方文件 f2.wiki 首頁(2026-08-27 截圖)

它把平台的鎖複製到你電腦上

短影音平台不會把下載 API 開放出來。想在網頁版拿資料,每個請求都得帶上一組正確的簽名參數,這些參數原本只在平台自己的瀏覽器程式碼裡產生。F2 最核心的工作,就是把這套簽名機制搬到你的電腦上重現。

原始碼裡看得到具體做法:抖音的 a_bogus 參數和 TikTok 的 X-Bogus 參數都是純 Python 實作,放在 f2/utils/abogus.pyxbogus.py;ttwid、webid、verify_fp 這些身分參數也有對應的產生器。直播彈幕是另一條路,訊息用 protobuf 解碼,簽名則靠一份 JavaScript 檔 webcast_signature.js,透過 PyExecJS 呼叫你機器上的 JavaScript 執行環境來算。這也是官方文件把 Node.js 列成必備條件的原因:只裝 Python 不夠,沒有 JS 執行環境,直播相關功能會在這一步卡住。

連國密演算法都上場了:依賴清單裡的 gmssl 提供 SM3 雜湊,直接嵌在 a_bogus 的計算裡,一般請求的簽名就做到這個深度。

msToken 有個值得注意的細節。F2 提供真、假兩種產生方式,假的在本機造,真的要向位元組跳動的 mssdk 端點請求。所以「全部在本機算」這句話要修正一下:簽名參數本機算,但 token 續期仍然會打到平台伺服器,你的機器和平台之間的連線一直存在。

這個設計換來的東西很實際:整條抓檔流程不經過任何第三方伺服器。你的 Cookie 存在自己電腦的 YAML 設定檔,抓回的資料落在本機的 SQLite 資料庫,沒有一個中間服務商能看你抓了什麼。

四個平台加一個推播,能抓的範圍比想像中細

apps 目錄下實際有五個應用:douyin、tiktok、twitter、weibo、bark。功能表不是一句「支援多平台」就帶過,README 的功能矩陣逐項標了每個介面需要哪種身分狀態:標圓紫的要用登入帳號的 Cookie,標圓黑的用遊客狀態就能抓。以抖音為例,公開作品、主頁作品、收藏夾、合集、直播資訊與彈幕都屬於遊客可見那級;只給自己看的私密作品、自己的收藏清單和收藏原聲,就得掛上帳號 Cookie;他人公開的按讚作品,遊客狀態也抓得到。

微博目前只做單篇貼文和主頁貼文兩種模式;Twitter 有單則推文、用戶推文、喜歡和書籤;TikTok 有播放清單和搜尋;抖音的模式最多,從單作品、主頁、按讚、收藏、收藏夾、音樂、合集到直播與朋友作品。資料面不只影片檔本身,作品描述、封面、原聲、歌詞(內建 JSON 轉 LRC)都在抓取範圍,檔名可以用 {create}_{desc} 這類模板自訂。存檔格式也有版本故事可看:圖集格式在 0.0.1.6 調回 webp、直播串流檔名定為 flv,這類細節平常不用管,回頭對照舊檔案時會有感。

Bark 模組和下載無關,它是把下載統計推送到 iPhone 通知的配套功能。出廠設定檔的 enable_bark 就是 true,不過 Bark 的 key 留空時推播送不出去,想用得自己填 key。

四份設定檔和一組併發旋鈕

F2 的行為由四份 YAML 設定檔控制,分工比多數同類工具細:app.yaml 放不常變動的東西,Cookie、下載路徑、檔名模板、逾時與重試次數;conf.yaml 放 F2 本身的設定,代理、抖音加密參數、msToken;defaults.yaml 是每個應用的出廠預設值;test.yaml 給測試案例。想長期使用的話,把自訂值寫在覆蓋檔而不是直接改預設,升級時才不會把設定洗掉。

併發也有一組可調參數:max_tasks 控同時任務數、max_connections 控連線數上限、page_counts 控每頁筆數、max_counts 可以設總量上限,預設 0 是不設限。這組參數直接對應前述的限流現實:抓整個主頁作品時把併發開滿,等於自己把帳號推向 403,實務上是在速度和帳號安全之間手動找平衡。

還有一個新手容易踩的坑:設定檔裡的 interval 是作品發布時間的過濾條件,沒設的話會跳出「找不到符合條件的作品」警告,加一行 interval: all 或命令列帶 -i all 就解了。

版本斷層:pip 給你的是 2024 年底的快照

F2 的版本狀態需要攤開看,因為三條線各自停在不同的時間點。

時間事件
2023-01GitHub 儲存庫建立,前身是同一作者的 TikTokDownload(約 8,800 顆星,2024 年中後凍結)
2023-12PyPI 發出第一版 0.0.1.0
2024-12-31PyPI 最新版 0.0.1.7,到今天 pip install f2 拿到的仍是它
2025-03main 分支合併 v0.0.1.8-pw3,最後一批功能開發(抖音搜尋類介面等)
2025-10main 只更新了 README 的贊助商連結
2026-01-30v0.0.1.8-pw3 分支修掉 nickname_raw 未初始化錯誤(#401、#413、#415),未合回 main、未發版
2026-08issue #443 回報抖音按讚作品下載兩頁後 403
F2 版本時間線(GitHub 與 PyPI 紀錄,截至 2026-08)

我在乾淨的 Python 3.11 虛擬環境實際裝了 pip 版:安裝順利、import f2 正常、命令列 f2 -h 面板輸出完整,版本確認是 0.0.1.7,介面是簡體中文。換句話說,pip 路線能裝能用,但你拿到的是一年半前的演算法快照。想要 2025 年 3 月之後的修復,得走原始碼安裝:git clonepip install -e .,要吃修復再 git checkout 到開發分支,文件也提醒分支上的程式碼先確認測試通過再用。問題是連 main 都沒有 2026 年 1 月那個修復,它還躺在 v0.0.1.8-pw3 分支上,這條路的代價是你同時接下了依賴管理的責任。

PyPI 上 f2 套件的版本歷史頁截圖,時間軸顯示共 8 個版本,最新版 0.0.1.7 發布於 2024 年 12 月 31 日Pin
PyPI 版本歷史:pip 拿到的最新版停在 2024-12-31(2026-08-27 截圖)

依賴清單也反映同一種時間感:httpx、pydantic、websockets、cryptography 全部釘在特定版本。好處是行為可預期,壞處是和其他專案共用環境時容易衝突,官方等於期待你為它開一個專屬虛擬環境。

哪裡會先壞:X 已經斷了,抖音會斷頭

這類工具的宿命,是平台改版就要跟著換鑰匙。F2 目前的故障分佈正好示範了三種壞法。

最徹底的是整個平台斷線。X(Twitter)在 0.0.1.7 上已經無法下載:issue #436 記錄得很清楚,X 的 API 回應結構變了,原本放推文資料的 instructions[0] 位置現在插了一個 TimelineClearCache 快取清理指令,真正的資料被推到 instructions[1],而 F2 的 jsonpath 全部寫死在舊位置。回報者連修正後的 jsonpath 都寫好了,四個多月過去沒有併入。如果你主要想抓 X 的影片,現成的 X 影片下載工具 會是更實際的選擇。

更常遇到的是跑到一半斷頭。issue #443 是 2026 年 8 月的回報:抖音按讚作品下載,抓了兩頁之後開始 403。這屬於典型的限流與風控互動,平台沒有整個擋死,官方 FAQ 對這類狀況的建議是等一下再試、重新登入換 Cookie,再不行就換網路環境。

最日常的則是 Cookie 維運。官方 FAQ 給了一個很少見的具體數字:抖音網頁版的完整 Cookie 超過 60 個鍵,TikTok 大約 30 個鍵以內。Cookie 太短、有換行、有多餘空格,回應就會是空的。F2 提供 --auto-cookie 從本機瀏覽器匯入,支援 Chrome、Firefox、Edge、Safari、Brave 等十種瀏覽器,這一步省事,但 Cookie 過期的頻率取決於平台風控,不是你能控制的。過去版本還有掃碼登入功能,開發分支在 2025 年 3 月把它拿掉了,官方 FAQ 卻還留著相關說明,文件已經落到程式碼後面。

網路邊界:對外只有三種請求

把 F2 的依賴清單和原始碼攤開數,對外連線其實只有三種:平台本身的 API(含 msToken 續期)、發布在 PyPI 的版本檢查,和可選的 Bark 推播。依賴裡沒有遙測或分析 SDK,沒有帳號註冊,下載紀錄落本機 SQLite。

版本檢查那段程式碼有個地方值得挑:check_f2_version() 向 PyPI 查最新版號時,程式碼把 TLS 憑證驗證關掉了(verify=False)。功能上無傷,查的只是版號字串,但這種寫法出現在要你貼上登入 Cookie 的工具裡,你對它的程式碼品質會有個底:好處都給你了,細節要自己看。

直播彈幕轉發是另一個看得出工程取捨的地方:它在本地起一個 WSS 服務,抖音走 8765 埠、TikTok 走 8766 埠,連線逾時 10 秒,而現版本不支援 SSL 憑證驗證,官方文件直接要求 verify 一律填 false。Bark 推播若擔心通知內容經過第三方,設定檔提供 AES128 CBC 加密選項,金鑰自己填,這算是把選擇權留給使用者。

真正的風險不在 F2 對你的機器做什麼,在你對平台做什麼。用它等於拿你的帳號 Cookie 對平台發自動化請求,這通常不在平台的服務條款許可範圍內,帳號被限流、被風控下線都是官方 FAQ 自己承認會發生的事。抖音生態裡另一種拿帳號做自動互動的 推薦流調校工具 也面對同一條線:省的是你的時間,扛的是你的帳號。用遊客狀態抓公開內容風險低一截,但要掛帳號抓私密清單前,先想想那個帳號對你的價值。

Node.js、Python 版本、授權範圍:安裝前的五個問答

一定要裝 Node.js 嗎? 只抓影片和圖片可以不裝,但直播彈幕的簽名靠 JavaScript 檔計算,沒有 JS 執行環境,直播相關功能會失敗。官方文件直接把 Node 版本管理器列進必備條件,建議一開始就裝好。我在裝好的環境裡用 PyExecJS 跑了一段簡單的 JavaScript,它有正確找到系統上的 Node,這一步通了,直播功能的前提就齊了。

Python 版本有差嗎? 官方要求 3.10 以上、推薦 3.11.1。我在 3.11 上安裝和執行都正常,更舊或更新的版本沒有驗證過。

抖音和 TikTok 現在都還能下載嗎? 抖音沒有整個停擺,2026 年仍有人在回報使用狀況,失效點則包含合集、直播禮物訊息與按讚下載兩頁後 403;TikTok 的已知地雷是 device_id 被封會 403,官方 FAQ 提供了重新產生 device_id 的做法。X 平台在 0.0.1.7 已故障。實際成功率取決於你的 Cookie 品質和請求頻率,這也是它需要人盯著的原因。

跟 yt-dlp 什麼關係? 完全不同的專案,也沒有依賴關係。yt-dlp 覆蓋的網站廣、社群大;F2 只做這四個平台,但對抖音生態挖得深,直播彈幕、圖集、原聲、歌詞這些它當成一級功能。兩者可以並存,各裝各的虛擬環境就好。

可以拿它做生意嗎? 授權是 Apache-2.0,改作、商用、再發布的空間都很大。但要記得授權管的是程式碼,不管平台條款:軟體你可以合法修改,拿它對平台發請求是另一個層面的問題。

改得了原始碼的人裝,只想存影片的人繞開

回到開頭的判斷。想把抖音資料做成結構化素材庫、願意讀原始碼的人,F2 的價值密度很高:四個平台應用的爬取、過濾、模型、下載、資料庫五層拆得乾淨,客製過濾器和檔名模板都有文件,壞了你知道去哪修。想要穩定每天跑的人,現實是單人維護加平台對抗,斷線是常態不是例外,你等於要把自己變成第二個維護者。只想存影片的人,網頁型的下載服務 或瀏覽器工具更省事,抓 Telegram 頻道媒體 也有專門的批次工具可選。

專案狀態整理:Apache-2.0 授權,2,620 顆星(截至 2026-08-27),前身專案 TikTokDownload 已凍結,F2 的 main 分支最後一批功能開發停在 2025 年 3 月,之後的修復還在分支上等發佈。入場前先認清這個時間線,比看任何功能列表都重要;真要長期用,把它當成一份要自己讀、自己修的程式碼資產,期待就會對得起體驗。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1023

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...