You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests.get获取TikTok视频页HTML返回b''的问题求助

解决TikTok视频页requests返回空内容的问题

问题原因

TikTok视频页的反爬机制比首页更严格,仅靠User-Agent无法通过验证——即使请求返回200状态码,也会返回空内容。这是因为平台识别出了非浏览器的爬虫请求,或者页面内容需要JavaScript动态渲染,而requests只能获取静态HTML。

解决方案

1. 补充完整请求头

除了User-Agent,还需要添加Cookie、Referer、Accept-Language等浏览器真实请求头信息(这些信息可以从你自己浏览器访问TikTok视频页时的请求头里复制)。示例代码:

import requests

headers = {
    'user-agent': '你的浏览器User-Agent',
    'cookie': '从浏览器复制的TikTok Cookie',
    'referer': 'https://www.tiktok.com/',
    'accept-language': 'zh-CN,zh;q=0.9'
}

page = requests.get("https://www.tiktok.com/@thatlittlepuff/video/7160116843611475246", headers=headers)
print(page.content.decode('utf-8'))

2. 使用Session维持会话

先请求TikTok首页获取有效会话Cookie,再请求视频页,模拟真实用户的访问流程:

import requests

headers = {
    'user-agent': '你的浏览器User-Agent'
}

session = requests.Session()
# 先访问首页获取会话Cookie
session.get("https://www.tiktok.com/", headers=headers)
# 再请求目标视频页
page = session.get("https://www.tiktok.com/@thatlittlepuff/video/7160116843611475246", headers=headers)
print(page.content.decode('utf-8'))

3. 用浏览器渲染工具获取动态内容

TikTok视频页是单页应用,核心内容靠JavaScript动态加载,requests无法获取这类内容。可以用Playwright或Selenium模拟浏览器渲染:
以Playwright为例,先安装依赖:pip install playwright,再运行playwright install chrome,然后执行代码:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("https://www.tiktok.com/@thatlittlepuff/video/7160116843611475246")
    html = page.content()
    print(html)
    browser.close()

内容的提问来源于stack exchange,提问作者Centrals

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:01:13