微博

微博內容聚合:按頻道(分類)取內容 —— 正文、圖片、視頻直鏈、轉發原微博、作者與互動數,長文自動展開全文;頻道分類(我的頻道 / 頻道推薦)單獨給一個接口。

/api/weibo/

服務說明

微博內容聚合接口:先調 /api/weibo/channels 拿到頻道分類,再用 /api/weibo/feed 按頻道取內容 —— 每條微博給出正文、圖片、視頻直鏈、被轉發的原微博、作者與轉發 / 評論 / 點讚數。

頻道(分類):微博熱門頁 https://weibo.com/hot/weibo/102803 裡的 102803 就是頻道 ID(= 熱門)。分類接口返回「我的頻道」(當前登錄賬號的頻道)與「頻道推薦」兩組,每組都給出頻道名、ID 與 containerid —— 取內容時兩個 ID 都要帶上(微博要求它們分別傳,且取值不同)。

長文自動展開:正文被截斷的長微博會自動回源取全文,content 就是完整正文,不需要調用方再點一次「展開全文」。

登錄憑據兩種用法:一是在請求裡帶上 cookie(你自己的微博登錄 Cookie,僅本次生效、我們不存儲);不帶則回落到平臺統一託管的賬號 —— 平臺在後臺「賬號管理」維護微博賬號與登錄 Cookie,接口自動取一份可用憑據去訪問。在文檔頁右側欄「本機憑據」粘貼並「保存到本機瀏覽器」,在線調試會自動帶上。若平臺託管的憑據失效,接口會明確提示需要重新登錄,並把該賬號標記為「已過期」。

/api/weibo/check 用於校驗一份微博憑據是否仍然有效:帶上 cookie 就校驗你自己那份(完全不碰平臺賬號),不帶則校驗平臺託管的賬號並把結果回寫到賬號狀態。

響應格式

所有接口返回同一個 JSON 信封,業務數據都在 data 裡:

{
  "code": 10000,
  "msg": "成功",
  "data": { ... }
}
  • code:業務狀態碼,10000 表示成功;其餘為各類錯誤,完整清單見「錯誤碼」頁。
  • msg:給人看的提示文案,可直接展示給終端用戶,但不要用它做邏輯判斷。
  • data:業務數據;出錯時通常為 null。各接口 data 的具體字段見該接口的「響應說明」。

判斷成功與否請看 code,不要依賴 HTTP 狀態碼。 查看完整錯誤碼

微博

微博(weibo.com) 需簽名

數據來自微博官方 web 接口;調用方可自帶登錄 Cookie,不傳則用平臺託管的賬號。

POST /api/weibo/channels 累計調用 1 次

頻道分類

微博頻道分類:「我的頻道」與「頻道推薦」兩組,含頻道名 / ID / containerid。

  • 頻道 ID 就是網頁裡的數字:https://weibo.com/hot/weibo/102803 的 102803 即頻道 ID(熱門);換別的頻道就是換這個數字。
  • 兩組都返回,用 section 區分:「我的頻道」隨登錄賬號而變,「頻道推薦」是微博推薦的通用頻道。
  • containerid 要一起帶上:取內容時微博要求 group_id 傳頻道 ID、containerid 傳它自己的值,兩者對多數頻道並不相同(如 明星 1028034288 / 102803_ctg1_4288_-_ctg1_4288)。
  • 該接口本身不校驗登錄態(不帶 Cookie 也能返回遊客默認頻道),但「我的頻道」會隨賬號不同而變化。
  • 也接受 GET(此時參數走 query 串);因微博 Cookie 較長,推薦用 POST 放表單體。
響應說明 外層統一格式
字段 類型 說明
count int 兩組加起來的頻道總數
groups[].section string 分組名:我的頻道 / 頻道推薦
groups[].count int 該分組下的頻道數
groups[].channels[].id string 頻道 ID(= 網頁 /hot/weibo/{id} 裡的數字)
groups[].channels[].name string 頻道名
groups[].channels[].containerid string 頻道 containerid(取內容時與 id 一起傳)
groups[].channels[].url string 頻道網頁地址
POST /api/weibo/feed 累計調用 0 次

按頻道取內容

按頻道取內容:正文、圖片、視頻直鏈、轉發原微博、作者與互動數。

可選,默認 102803(熱門)。取值 = /api/weibo/channels 返回的頻道 ID。

可選。取值 = /api/weibo/channels 返回的 containerid;留空時服務端會按 channel 自動解析(多一次請求)。

可選,1~50,默認 20。

可選,默認 0。翻頁時把上一次返回的 next_since_id 填進來。

  • 長文自動展開:is_long_text 為 true 的長微博,服務端會回源取全文(取到的更長才替換),content 即完整正文(不是摘要、無需再點「展開全文」)。
  • 圖片:content_html 是 HTML 原文(可直接渲染),images 是抽好的圖片地址數組(大圖優先、已去重)。
  • 視頻:video.url 是 mp4 直鏈(高清優先,已統一升級為 https),另有封面 / 標題 / 時長 / 視頻頁地址;沒有視頻時 video 為 null。
  • 視頻直鏈有防盜鏈:video.url 是微博 CDN 的 mp4 直鏈,請求時必須帶 Referer: https://weibo.com/ 才能取到(無 Referer 或第三方域名一律返回 403),且地址帶 Expires 簽名、限時有效。要在網頁裡直接播放,請用 video.stream_url(本站代理,見「視頻代理播放」端點);video.url 更適合你服務端下載後再自行處理。
  • 轉發:被轉發的原微博在 retweeted(裁剪版,不再向下展開它的轉發與長文);沒有轉發時為 null。
  • 翻頁:把返回的 next_since_id 作為下一次的 since_id;next_since_id 為 null(has_more 為 false)表示上遊沒有給出下一頁遊標。
  • containerid 留空時服務端會先查一次頻道分類來解析它;想省這次請求,就把 /api/weibo/channels 返回的 containerid 一起帶上。
  • 也接受 GET(此時參數走 query 串);因微博 Cookie 較長,推薦用 POST 放表單體。
響應說明 外層統一格式
字段 類型 說明
channel string 頻道 ID(原樣回傳)
containerid string 頻道 containerid(原樣回傳)
count int 本次返回的條數
total int 上遊給出的該頻道總條數(翻頁參考)
since_id string 本次請求使用的翻頁遊標
next_since_id string 下一頁遊標(null 表示沒有下一頁)
has_more bool 是否還有下一頁
list[].id string 微博 ID
list[].mid string 微博 mid
list[].mblogid string 微博短 ID(網頁地址用它拼)
list[].url string 微博網頁地址(可直接打開)
list[].content string 正文純文本(長文已展開為全文)
list[].content_html string 正文 HTML 原文(含 @ / 話題 / 鏈接標籤)
list[].is_long_text bool 是否為長文
list[].images array 圖片地址(大圖優先)
list[].video object 視頻信息(無視頻為 null)
list[].video.url string 微博 CDN 的 mp4 直鏈(https、高清優先;有 Referer 防盜鏈)
list[].video.stream_url string 本站代理播放地址(<video> 直接可用、長期有效)
list[].video.cover string 視頻封面地址
list[].video.title string 視頻標題
list[].video.duration int 視頻時長(秒)
list[].video.page_url string 視頻頁地址
list[].retweeted object 被轉發的原微博(無轉發為 null)
list[].retweeted.content string 原微博正文
list[].retweeted.author.name string 原作者暱稱
list[].retweeted.url string 原微博網頁地址
list[].author.id string 作者 ID
list[].author.name string 作者暱稱
list[].author.url string 作者主頁地址
list[].author.avatar string 作者頭像地址
list[].author.verified bool 作者是否認證
list[].reposts_count int 轉發數
list[].comments_count int 評論數
list[].attitudes_count int 點讚數
list[].created_at int 發布時間(Unix 秒)
list[].source string 來源(如 iPhone客戶端)
list[].region string 地區(可能為空)
list[].is_ad bool 是否廣告
GET /api/weibo/video 累計調用 3 次

視頻代理播放

微博視頻代理播放:本站取流後轉發,普通 <video> 標籤直接播放。

必填:由 /api/weibo/feed 下發的時效令牌,無需項目簽名(瀏覽器加不了簽名)。

  • 為什麼需要代理:微博視頻 CDN 有 Referer 防盜鏈,只認微博系域名 —— 第三方頁面的 &lt;video&gt; 帶的是自己的域名,一律 403;直鏈又是 http://,https 頁面還會被瀏覽器按混合內容直接攔掉。本端點帶 Referer 取流後原樣轉發。
  • 地址由 /api/weibo/feed 的 video.stream_url 給出、長期有效:令牌裡只有微博 id,播放時按 id 現場解析新鮮直鏈(微博直鏈帶 Expires 會過期)。
  • 本端點不帶項目簽名:瀏覽器加不了簽名,且拖動進度條產生的多次 Range 請求會撞上「nonce 一次性」的重放攔截,故鑑權由 URL 裡的時效令牌承擔。
  • 支持 HTTP Range(200 整段 / 206 分片):可拖動進度條、可斷點續傳。
  • 令牌無效或過期返回 403(重新調用 feed 拿新地址即可);上遊取流失敗走統一錯誤碼(40001 / 50002)。
響應說明 外層統一格式

成功返回視頻二進制流(video/mp4,支持 Range),**不是統一 JSON 信封**;令牌無效或過期返回 403。

POST /api/weibo/check 累計調用 0 次

校驗登錄憑據

校驗微博登錄憑據是否有效(自帶 cookie 校驗你自己那份,否則校驗平臺託管的賬號)。

  • 憑據無效不算接口調用失敗:仍返回成功碼,把 valid=false 與原因放在 data 裡,由調用方自行決定是否提示用戶重新登錄。
  • 微博接口在未登錄時仍返回 HTTP 200(body 是 ok: -100 的登錄跳轉),本接口按此判定憑據是否有效,因此比只看狀態碼可靠。
  • 校驗平臺託管的賬號時會更新其「憑據狀態」與「最近校驗結果」,在後臺「賬號管理」頁可直接看到;自帶 Cookie 校驗不涉及平臺賬號。
  • 也接受 GET(此時參數走 query 串);因微博 Cookie 較長,推薦用 POST 放表單體。
響應說明 外層統一格式
字段 類型 說明
valid bool 憑據是否有效
account string 被校驗的賬號標識(自帶 Cookie 校驗時為空)
message string 校驗說明
小影API · 通用 API 聚合服務