Skip to content

Bug: -t (指定用戶) 功能無法正確抓取特定用戶的影片 #4

@LayorX

Description

@LayorX

問題描述 (Problem Description)

目前,當使用 -t <username>--target <username> 參數試圖抓取特定用戶的影片時,程式雖然能夠成功導航至目標用戶的個人頁面(例如 https://www.threads.net/@zuck),但後續攔截到的 GraphQL API 回應中,並未正確地只包含該用戶的貼文數據。

這導致最終抓取到的內容與預期不符,可能是首頁的推薦內容,或是空的結果,而不是目標用戶的影片。

重現步驟 (Steps to Reproduce)

  1. 執行程式並帶上 -t 參數,例如:
    uv run python main.py -t zuck -s <your_session_id>
  2. 觀察程式執行過程與最終下載的影片。
  3. 檢查 downloads 資料夾與 threads_dlp.db 資料庫。

預期行為 (Expected Behavior)

程式應該只抓取並下載指定用戶(此例中為 zuck)的影片。

目前行為 (Actual Behavior)

程式抓取到的內容並非來自指定用戶,下載了非預期的影片或沒有下載任何影片。

初步分析 (Preliminary Analysis)

根據 GEMINI.md 中的紀錄,可能的原因如下:

  1. 前端路由與數據載入機制變更:

    • Threads 網站可能更新了其前端應用。即使瀏覽器的 URL 正確指向用戶頁面,但觸發載入該用戶專屬數據的內部 API 呼叫,可能需要額外的用戶操作(如特定的點擊)或是在 JavaScript state 中傳遞特定參數。
  2. GraphQL API 查詢邏輯變更:

    • 後端 GraphQL API 可能不再單純依賴頁面 URL 來決定回傳哪個用戶的數據。
    • 現在的 API 呼叫極有可能需要一個明確的 userID 作為查詢參數。我們需要分析在瀏覽器中手動導航至用戶頁面時,是哪個 graphql/query 請求包含了目標的 userID,以及這個 userID 是如何從用戶名稱 (username) 解析或轉換而來的。

後續步驟 (Next Steps)

  • 深入分析瀏覽器在訪問特定用戶頁面時的網路請求,特別是 graphql/query 的 payload。
  • 找出 usernameuserID 之間的轉換關係。
  • 修改 scraper.py 中的邏輯,以模擬正確的 API 請求來獲取特定用戶的數據。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions