🎁 惊喜折扣:订阅享受 1折优惠!

  • 价钱
  • 文档
ZH
联系

© 2025 NST LABS TECH LTD. ALL RIGHTS RESERVED

产品

指纹浏览器
Nstbrowser RPA
绕过Cloudflare
Browserless
网页解锁器

解决方案

云端指纹浏览器
多账户管理
网页抓取&自动化
反机器人检测

资源

价格
下载
RPA 市场
联盟计划
合作伙伴
博客
版本更新

支持

联系

文档

法规

条款
隐私政策
Cookie 政策

产品解决方案资源支持法规

产品解决方案资源

支持法规

© 2025 NST LABS TECH LTD. ALL RIGHTS RESERVED

返回博客
使用 Nstbrowser docker 进行 TikTok 自动点赞
Headless Browser

如何使用Nstbrowser docker进行抖音自动点赞?

本教程演示如何使用 Nstbrowser docker 进行 TikTok 自动点赞
Jan 08, 2025Robin Brown

我们为您提供令人难以置信的90%订阅优惠!现在,您可以享受以下无与伦比的价格:

  • 专业版: 仅需 **29.9** /月(原价299)
  • 企业版: 仅需 **59.9** /月(原价599)

更重要的是,您将通过自动续订继续享受这些折扣!无需额外步骤——您的折扣将在续订时自动应用。

立即获取您的专属折扣!

前提条件

在开始教程之前,让我们首先了解Nstbrowser和Nstbrowser docker是什么。

Nstbrowser是一款强大的指纹浏览器,它为每个用户的帐户提供真实的浏览器环境。每个浏览器彼此隔离,可以实现跨平台环境模拟。基于指纹浏览器技术,它可以轻松绕过各种网站的帐户追踪和检测。

Nstbrowser docker是基于Nstbrowser构建的docker镜像。由于本地资源有限,我们可以通过docker轻松地将Nstbrowser部署到云服务。基于云同步功能,我们可以直接在Nstbrowser docker中使用Nstbrowser创建成熟的浏览器环境。

接下来,我们将演示如何使用Nstbrowser docker自动点赞TikTok(注意:TikTok有严格的账户风险控制预防措施,请尽量不要使用新创建的账户)

步骤1. 构建配置文件环境

  1. 创建一个新的配置文件,并在组设置中打开云同步和Cookie同步。在创建配置文件期间根据您的需求配置代理和指纹参数:
构建配置文件环境
构建配置文件环境
  1. 启动配置文件并登录您需要使用的TikTok帐户。您也可以使用Puppeteer脚本登录帐户:
登录TikTok帐户
  1. 关闭已登录的配置文件,您可以看到上传状态,Nstbrowser已将您的配置文件数据同步到云端。
关闭已登录的配置文件

步骤2. 准备Nstbrowser Docker环境

  1. 拉取Nstbrowser docker镜像
Bash Copy
docker pull docker.io/nstbrowser/browserless:latest
  1. 运行容器
Bash Copy
docker run -d -it \
  -e TOKEN="YOUR API KEY" \
  -p 8848:8848 \
  --name nstbrowserless \
  nstbrowser/browserless:latest

步骤3. 构建“点赞”点击脚本

这里我们使用puppeteer-core + axios进行演示

  1. 安装puppeteer-core和axios:
Bash Copy
# pnpm
pnpm i puppeteer-core axios
# yarn
yarn add puppeteer-core axios
# npm
npm i --save puppeteer-core axios
  1. 在docker中启动Nstbrowser

在使用puppeteer连接到Nstbrowser之前,我们需要先启动Nstbrowser,启动界面:http://localhost:8848/start/{profileId}。您可以在官方网站上查看具体的接口细节和参数:

javaScript Copy
const baseUrl = 'localhost:8848'
const profileId = 'YOUR_PROFILEID'

async function startBrowser() {
  const config = {
    "name": "tiktok_star",
    "platform": "windows",
    "kernel": "chrome",
    "kernelMilestone": "130",
    // "proxy": "http://127.0.0.1:8000",   // 你可以自定义代理
    // "fingerprint": {                    // 配置自定义指纹参数
    //     "flags": {
    //         "timezone": "BasedOnIp",
    //         "screen": "Custom"
    //     },
    // },
    // "args": {
    //     "--proxy-bypass-list": "*.nstbrowser.io"  // 配置自定义启动参数
    // }
  };

  return axios.post(`http://${baseUrl}/start/${profileId}`, JSON.stringify((config)), { headers: { 'Content-Type': 'application/json' } })
    .then((response) => {
      if (response.data.code === 200) {
        return true
      }
    })
    .catch((error) => {
      console.error(error);
    });
}
  1. 编写Puppeteer脚本

我们导航到TikTok网站。并通过开发者工具(F12)获取网页中的输入框元素和确定按钮:

编写Puppeteer脚本
编写Puppeteer脚本

输入您要查看的用户内容:

JavaScript Copy
const page = await browser.newPage();
await page.goto('https://www.tiktok.com/');

await page.waitForSelector('input[type=search]') 

await page.type('input[type=search]', 'WillSmith', { delay: '100' })
  1. 获取第一个视频的元素并点击它:
获取第一个视频的元素并点击它
JavaScript Copy
await page.waitForSelector('div.css-1fxbsrz-DivVideoListScrollBar.e10wilco12 > div > div:nth-child(1) a')

await page.click('div.css-1fxbsrz-DivVideoListScrollBar.e10wilco12 > div > div:nth-child(1) a')
  1. 进入视频播放页面

有时,进入播放页面时会默认使用小窗口模式。我们需要恢复窗口:

JavaScript Copy
try {
   await page.waitForSelector('button.e12q9uh55.css-1xiq6b1-Button-ButtonReturn.e1v8cfre0', { timeout: 3000 });
   // close PictureInPicture
   await page.click('button.e12q9uh55.css-1xiq6b1-Button-ButtonReturn.e1v8cfre0')

 } catch (e) {
   console.log("cant find close button")
 }

等待视频播放一段时间后再点赞

等待视频播放
JavaScript Copy
// wait for the video to play for a while
await new Promise(resolve => setTimeout(resolve, 10000));

// give a like
await page.click('button.css-1mizk9b-ButtonActionItem.e1hk3hf90')

然后滑动视频到下一个并重复此操作:

JavaScript Copy
const boundingBox = await page.$('body video').then(el => el.boundingBox());

for (let i = 0; i < 3; i++) {

     // wait for the video to play for a while
     await new Promise(resolve => setTimeout(resolve, 10000));

     // give a like
     await page.click('button.css-1mizk9b-ButtonActionItem.e1hk3hf90')

     // move the mouse to the center of the video
     await page.mouse.move(
       boundingBox.x + boundingBox.width / 2,
       boundingBox.y + boundingBox.height / 2
     );

     // scroll the video down
     await page.mouse.wheel({ deltaY: 100 });
}
  1. 完整的代码如下:
JavaScript Copy
import puppeteer from 'puppeteer-core';
import axios from 'axios';

const baseUrl = 'localhost:8848'
const profileId = 'YOUR_PROFILEID'

async function startBrowser() {
  const config = {
    "name": "tiktok_star",
    "platform": "windows",
    "kernel": "chrome",
    "kernelMilestone": "130",
    // "proxy": "http://127.0.0.1:8000", 
    // "doProxyChecking": false,
    // "fingerprint": {
    //     "flags": {
    //         "timezone": "BasedOnIp",
    //         "screen": "Custom"
    //     },
    // },
    // "args": {
    //     "--proxy-bypass-list": "*.nstbrowser.io"
    // }
  };

  return axios.post(`http://${baseUrl}/start/${profileId}`, JSON.stringify((config)), { headers: { 'Content-Type': 'application/json' } })
    .then((response) => {
      if (response.data.code === 200) {
        return true
      }
    })
    .catch((error) => {
      console.error(error);
    });
}

async function execPuppeteer() {
  try {

    const browser = await puppeteer.connect({
      browserWSEndpoint: `ws://${baseUrl}/connect/${profileId}`
    });

    const page = await browser.newPage();
    await page.goto('https://www.tiktok.com/');

    await page.waitForSelector('input[type=search]')

    await page.type('input[type=search]', 'WillSmith', { delay: '100' })

    await page.click('button[data-e2e=search-box-button]')

    await page.waitForSelector('div.css-1fxbsrz-DivVideoListScrollBar.e10wilco12 > div > div:nth-child(1) a')
    //   div.css-1fxbsrz-DivVideoListScrollBar.e10wilco12
    await page.click('div.css-1fxbsrz-DivVideoListScrollBar.e10wilco12 > div > div:nth-child(1) a')

    try {
      await page.waitForSelector('button.e12q9uh55.css-1xiq6b1-Button-ButtonReturn.e1v8cfre0', { timeout: 3000 });
      // close PictureInPicture
      await page.click('button.e12q9uh55.css-1xiq6b1-Button-ButtonReturn.e1v8cfre0')

    } catch (e) {
      console.log("cant find close button")
    }

    await page.waitForSelector('button[data-e2e=arrow-right]')

    await page.click('button[data-e2e=arrow-right]')

    // get the video bounding box
    const boundingBox = await page.$('body video').then(el => el.boundingBox());

    for (let i = 0; i < 3; i++) {

      // wait for the video to play for a while
      await new Promise(resolve => setTimeout(resolve, 10000));

      // give a like
      await page.click('button.css-1mizk9b-ButtonActionItem.e1hk3hf90')

      // move the mouse to the center of the video
      await page.mouse.move(
        boundingBox.x + boundingBox.width / 2,
        boundingBox.y + boundingBox.height / 2
      );

      // scroll the video down
      await page.mouse.wheel({ deltaY: 100 });
    }
    
    await browser.close()
  } catch (e) {
    console.error(e)
  }
}

(async () => {
  const ok = await startBrowser()
  if (ok) {
    await execPuppeteer()
  }
})();

总结

Nstbrowser的云同步功能可以在任何设备上创建配置文件,并将配置文件同步到其他设备和docker环境。

云同步可以保留您上次访问页面的内容和历史记录,大大简化操作成本。并且在任何设备上相同的配置文件环境都是一样的,可以防止网站的设备检测。云同步Cookie可以将用户的Cookie数据同步在一起,基于Cookie的登录状态也可以同步到相同的配置文件环境。

更多
如何使用Nstbrowser的无头浏览器自动解决Cloudflare Turnstile (2025)
BrowserlessCloudflare BypassHeadless Browser
如何使用 Nstbrowser 的 Browserless 自动解决 Cloudflare Turnstile (2025)
学习如何使用Nstbrowser的无头浏览器服务和Puppeteer绕过Cloudflare Turnstile。本指南将引导您完成设置、实现以及在确保合规性和效率的同时自动化网页抓取任务的优势。
Mar 07, 2025Robin Brown
使用 Nstbrowser docker 进行 TikTok 自动点赞
Headless Browser
如何使用Nstbrowser docker进行抖音自动点赞?
本教程演示如何使用 Nstbrowser docker 进行 TikTok 自动点赞
Jan 08, 2025Robin Brown
docker-抓取-youtube
Headless Browser
如何使用Nstbrowser docker爬取YouTube视频?
本教程使用 Nstbrowser Docker 镜像演示爬取 YouTube 视频链接
Jan 08, 2025Carlos Rivera
无头浏览器,无浏览器环境
Headless Browser
无头浏览器测试:什么是无头浏览器测试以及如何进行?
无头浏览器测试是测试浏览器中 Web 应用程序更快、更可靠、更高效的方式。阅读这篇博文,找到关于无头浏览器测试的详细指南。
Sep 12, 2024Robin Brown
无头浏览器
Headless Browser
如何在 Puppeteer 中运行无头浏览器?
使用无头浏览器可以轻松进行网页抓取!什么是无头浏览器?为什么 Puppeteer 适合网页抓取?从本教程中了解具体信息。
Jul 18, 2024Carlos Rivera
无头浏览器
Headless Browser
如何在 Playwright 中运行无头浏览器?
什么是无头浏览器?它的优缺点如何?在本博客中,我们可以找到关于它的所有信息,并学习如何使用 Nstbrowserless 进行网络抓取。
Jul 16, 2024Carlos Rivera
目录