如何从含多页面的HAR文件提取原始JSON以获取TikTok标签
从HAR文件提取TikTok视频标签的解决方案
核心思路
HAR文件本质就是JSON格式文本,无需依赖第三方转换工具,直接用Python标准库解析即可。关键是筛选出包含TikTok视频数据的请求,再从响应内容中提取标签。
实用Python脚本
import json def extract_tiktok_tags_from_har(har_file_path): # 读取HAR文件 with open(har_file_path, 'r', encoding='utf-8') as f: har_data = json.load(f) all_tags = [] # 遍历HAR中所有请求条目 for entry in har_data['log']['entries']: request_url = entry['request']['url'] # 筛选TikTok视频数据接口(可根据实际抓包结果调整URL特征) if '/api/v1/item/detail/' in request_url or '/aweme/v1/feed/' in request_url: try: # 获取响应的原始JSON内容 response_content = entry['response']['content']['text'] if not response_content: continue # 解析响应JSON response_json = json.loads(response_content) # 提取标签(适配TikTok不同接口的返回结构) tags = [] # 处理单视频详情接口 if 'item_info' in response_json: item = response_json['item_info']['item_struct'] if 'text_extra' in item: tags = [extra['hashtag_name'] for extra in item['text_extra'] if 'hashtag_name' in extra] # 处理feed流接口 elif 'aweme_list' in response_json: for aweme in response_json['aweme_list']: if 'text_extra' in aweme: tags.extend([extra['hashtag_name'] for extra in aweme['text_extra'] if 'hashtag_name' in extra]) if tags: all_tags.extend(tags) # 可选:打印视频ID和对应标签 video_id = item.get('aweme_id') if 'item_info' in response_json else aweme.get('aweme_id', '未知') print(f"视频ID {video_id}: {tags}") except Exception as e: print(f"处理请求 {request_url} 时出错: {str(e)}") continue # 去重并输出结果 unique_tags = list(set(all_tags)) print("\n提取到的所有唯一标签:") print(unique_tags) # 保存标签到JSON文件 with open('tiktok_tags.json', 'w', encoding='utf-8') as f: json.dump(unique_tags, f, ensure_ascii=False, indent=2) print("标签已保存到 tiktok_tags.json") # 替换为你的HAR文件路径后运行 extract_tiktok_tags_from_har('your_tiktok_har_file.har')
关键注意事项
- 无需第三方模块:直接用Python自带的
json库,避免了第三方工具的兼容性问题 - 调整URL筛选规则:打开你的HAR文件,查看TikTok视频请求的URL特征,修改脚本中的URL判断条件,确保能匹配到目标请求
- 适配响应结构:TikTok的接口返回结构可能会更新,可通过Chrome开发者工具查看响应内容,调整标签提取的字段路径(通常标签在
text_extra数组的hashtag_name字段中) - 大数据处理友好:本地脚本运行,不会像浏览器扩展那样因内存不足崩溃,适合处理大量HAR数据
内容的提问来源于stack exchange,提问作者ThisPotatoGuy
相关产品推荐
相关产品推荐

