微博实时热搜原始数据需调用隐藏API接口https://weibo.com/ajax/side/hotSearch,返回含realtime等三类数据的JSON,无需登录但需带合法移动端UA;直接访问weibo.com/hot会跳转或空白因其为前端路由且依赖JS加载。

微博 HTML5 版本没有官方公开的“热搜榜单独立入口”,所有实时热搜数据都嵌套在网页结构中,且受登录态、地域、设备 UA 和反爬策略影响——直接访问 weibo.com 的 H5 页面(如 https://weibo.com/hot)通常会跳转或返回空内容,真实可用的入口其实是隐藏的 API 接口。
怎么拿到微博实时热搜的原始数据?
微博 H5 热搜页实际依赖前端调用一个动态接口拉取 JSON 数据,地址为:https://weibo.com/ajax/side/hotSearch。该接口返回纯 JSON,含 hotgov(政务热搜)、realtime(普通热搜)、hotword(话题榜)三类数据,无需登录即可请求(但有频率限制)。
实操建议:
- 用浏览器开发者工具(F12 → Network → XHR),刷新
https://weibo.com/hot,筛选出hotSearch请求,复制其完整 URL(注意带__rnd=时间戳参数) - 该接口返回字段中,
data.realtime是主热搜列表,每条含word(关键词)、num(热度值)、url(跳转链接,需补全为https://s.weibo.com/weibo?q=%23{word}%23) - 直接 curl 或 Python
requests.get()调用时,必须加User-Agent头,否则返回 418 或空数据;推荐用移动端 UA,例如:Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Weibo (iPhone14,2)
为什么访问 weibo.com/hot 总是跳转或空白?
微博对 H5 热搜页做了强客户端识别和路由控制:weibo.com/hot 实际是前端路由,服务端只返回骨架 HTML,后续靠 JS 加载数据;未登录用户、非主流 UA、或触发风控时,JS 会主动跳转至首页或返回空容器。
立即学习“前端免费学习笔记(深入)”;
常见错误现象:
- curl
https://weibo.com/hot返回的是约 2KB 的 HTML,里面没有热搜词,只有 - 用 Puppeteer / Selenium 渲染后能看见热搜,但速度慢、易被拦截,且每次需模拟点击“刷新”按钮才能更新数据
- 部分地区(如海外 IP)访问直接 302 跳转到
https://weibo.cn,而微博 WAP 版(weibo.cn)已下线热搜功能
有没有稳定、免登录的替代方案?
没有官方替代,但可退而求其次用「间接方式」获取近似数据:
- 抓取
https://s.weibo.com/top/summary?Refer=top_hot页面的 HTML,其中下的 a标签包含热搜词(此页面仍可用,但数据延迟约 5–10 分钟)- 用微博开放平台的
public_timeline接口 + 关键词过滤,但需要申请 AppKey 且配额极低,不适合批量查热搜- 第三方聚合接口(如
https://api.vvhan.com/api/wbhot)本质也是定时轮询微博 API,稳定性取决于维护者,且随时可能失效import requests headers = { "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Weibo (iPhone14,2)" } res = requests.get("https://weibo.com/ajax/side/hotSearch", headers=headers) data = res.json() for item in data["data"]["realtime"][:10]: print(f"{item['rank']}. {item['word']} ({item['num']})")真正难的不是找到那个接口,而是维持它长期可用:微博会不定期改接口路径、加签名参数、升级 UA 检查逻辑。如果做自动化监控,必须预留参数解析和 UA 轮换机制,而不是硬编码一个 URL。
- 用微博开放平台的










