当前位置: 首页 > news >正文

TikTok Scraper:无需登录,批量抓取 TikTok 数据的命令行工具

文章目录

  • TikTok Scraper:无需登录,批量抓取 TikTok 数据的命令行工具

TikTok Scraper:无需登录,批量抓取 TikTok 数据的命令行工具

TikTok Scraper 是一个开源的 Node.js 工具,在 GitHub 上获得了 5000 多个 Star。它的功能很明确:从 TikTok 抓取视频、用户信息、话题数据等内容,支持批量下载,而且不需要登录账号。

这个工具通过 TikTok 的 Web API 来获取数据,不是官方接口,但覆盖了日常数据采集的大部分场景。

它能做什么

抓取单个用户的全部视频、某个话题下的视频、当前热门趋势、指定音乐 ID 关联的视频。除了视频本身,还能提取作者信息、音乐信息、点赞数、播放量、评论数等元数据。

数据导出方面,支持保存为 JSON 或 CSV 文件。视频下载支持带水印和无水印两种模式,无水印模式下还提供 HD 画质选项。

一个实用的功能是下载历史记录:开启后,工具会记住之前下载过哪些视频,再次运行时只抓取新内容,避免重复下载。

命令行用法

安装只需要 Node.js v10 以上版本,通过 npm 全局安装:

npm i -g tiktok-scraper

基本命令格式:

tiktok-scraper <command> [options]

几个常见用法:

下载某个用户的最新 100 个视频:

tiktok-scraper user USERNAME -d -n 100

抓取某个话题下的视频:

tiktok-scraper hashtag HASHTAG_NAME -d -n 100

下载当前热门视频:

tiktok-scraper trend -d -n 100

下载单个视频(无水印):

tiktok-scraper video VIDEO_URL -d

查看之前的下载历史:

tiktok-scraper history

还可以通过--proxy参数设置代理,通过--session传入会话 Cookie,应对 IP 被限制的情况。批量模式下,把多个目标写进文件,用from-file命令一次性处理。

作为模块调用

除了命令行,TikTok Scraper 也可以作为 Node.js 模块在代码中使用。它同时提供 Promise 和 Event 两种调用方式。

Promise 方式:

constTikTokScraper=require('tiktok-scraper');(async()=>{constposts=awaitTikTokScraper.user('USERNAME',{number:100,sessionList:['sid_tt=your_session_value;']});console.log(posts);})();

Event 方式适合处理大量数据,边抓取边处理:

constusers=TikTokScraper.userEvent("tiktok",{number:30});users.on('data',json=>{// 每条数据到达时触发});users.on('done',()=>{// 抓取完成});users.scrape();

还有一个独立方法getVideoMeta,传入视频链接就能获取包括无水印地址在内的完整元数据。

Docker 支持

不想本地安装 Node.js 环境的话,可以用 Docker 运行:

docker build . -t tiktok-scraper docker run -v $(pwd):/usr/app/files tiktok-scraper user tiktok -d -n 5

通过-v指定宿主机目录,下载的文件和历史记录都会保存在那里。

需要注意的几点

目前无法下载无水印视频(指的是通过 CLI 批量下载 Hashtag Feed 时的默认行为,单个视频和用户 Feed 可以获取无水印链接)。抓取频率过高可能导致 IP 被 TikTok 限制,建议配合代理和 session 使用。这个工具依赖 TikTok 的 Web API,如果 TikTok 调整接口,可能需要等待项目更新适配。

Feed 可以获取无水印链接)。抓取频率过高可能导致 IP 被 TikTok 限制,建议配合代理和 session 使用。这个工具依赖 TikTok 的 Web API,如果 TikTok 调整接口,可能需要等待项目更新适配。

http://www.jsqmd.com/news/1132727/

相关文章:

  • 3分钟解决Cursor试用限制:告别“You‘ve reached your trial request limit“错误
  • Python核心语法——面向对象基础
  • 终极指南:foo2zjs如何解决Linux下多品牌打印机兼容性难题
  • APKMirror终极指南:轻松获取安全安卓应用的完整教程 [特殊字符]
  • mRemoteNG终极指南:5步掌握开源远程连接管理神器
  • x64dbg插件xAnalyzer:逆向分析中的智能API识别与注释利器
  • C语言实现后量子加密Kyber算法:原理、性能与嵌入式集成实战
  • WhatsApp 多账号消息路由的设计与实现
  • Eigen 3.4 与 NumPy 1.24 坐标变换性能对比:旋转矩阵/四元数 10万次运算耗时分析
  • GameAssist:基于计算机视觉的AI游戏辅助系统技术架构与应用实践
  • 推荐七个冷门但超实用的神器!
  • 2026年AI Agent终于不吹了:82%企业开始真金白银地部署,但落地坑比你想的多
  • 移动芯片代号 SM8650/MT6985 解析:3分钟看懂厂商内部命名逻辑与定位
  • Linux服务器安全加固实战:从用户权限到入侵检测的完整配置指南
  • 从 FER2013 到 AffectNet:情绪识别数据集 10 年演进与模型训练策略调整
  • 用Upscayl解锁AI图像放大:让每一张照片都清晰如新
  • 告别乱码困扰:ConvertToUTF8插件让你的Sublime Text完美支持中文编码
  • 强化学习从入门到实践:MDP、DQN与PPO算法详解与代码实现
  • 3分钟自动化学习解决方案:解放职业教育重复性任务的智能助手
  • NetApp FAS存储加密实战:从硬件SED到KMIP密钥管理的企业级方案
  • 变量的注意细节
  • Synology硬盘兼容性终极指南:3分钟解锁第三方硬盘支持
  • LEXI-R10801D LTE模块与PIC18F86J16嵌入式开发实战
  • 2026年健康趋势:探寻最专业的苦荞早餐片制造商
  • 3步实现媒体库自动刮削:ANI-RSS让你的动漫收藏焕然一新
  • SEO 的十个核心优化要点,落实之后稳步提升自然流量
  • 新手也能上手!2026年首选推荐的专业AI论文平台
  • Python 面向对象编程
  • 基于Windows Precision Touchpad协议的Apple触控板驱动深度技术解析
  • socket服务端接收模块设计