如何用C#打开Chrome指定配置文件访问网页并自动点击页面按钮
C# 多实例Chrome自动点赞TikTok视频实现方案
你原有代码存在3个直接影响运行的问题:
- 拼写错误:
deafult应为default,启动参数拼接时网址和参数之间缺空格,会导致启动失败 - 仅靠
Process.Start启动Chrome无法操作页面DOM,没法实现自动识别点击点赞按钮的逻辑 - 多实例启动如果共用同一个用户配置目录,Chrome会触发进程锁报错,无法同时打开多个窗口
实现思路
- 用Selenium做Chrome自动化控制,不需要自己手写Process启动逻辑,自动适配Chrome启动参数
- 每个浏览器实例分配独立的用户配置缓存目录,避免多开冲突
- 页面加载完成后通过XPath定位TikTok点赞按钮,触发点击动作
- 支持自定义启动实例数、目标视频链接、用户配置路径
完整可运行代码
首先给控制台项目安装两个必需的NuGet包,在包管理控制台执行以下命令:
Install-Package Selenium.WebDriver Install-Package Selenium.WebDriver.ChromeDriver
注意:安装的ChromeDriver版本要和你本地安装的Chrome浏览器大版本完全一致,否则会启动失败
将原有控制台代码替换为以下内容:
using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Threading; namespace TikTokAutoLike { internal class Program { static void Main(string[] args) { // 读取用户输入配置 Console.WriteLine("请输入要打开的浏览器实例数量:"); if (!int.TryParse(Console.ReadLine(), out int instanceCount) || instanceCount < 1) { Console.WriteLine("实例数输入不合法,将默认启动1个实例"); instanceCount = 1; } Console.WriteLine("请输入目标TikTok视频链接,直接回车将使用默认测试链接:"); string targetUrl = Console.ReadLine()?.Trim(); if (string.IsNullOrEmpty(targetUrl)) { targetUrl = "https://vm.tiktok.com/ZMN2jb2GQ/?k=1"; } Console.WriteLine("请输入Chrome用户配置文件根目录,直接回车将使用系统默认路径:"); string profileRoot = Console.ReadLine()?.Trim(); if (string.IsNullOrEmpty(profileRoot)) { profileRoot = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data"; } List<IWebDriver> drivers = new List<IWebDriver>(); try { for (int i = 0; i < instanceCount; i++) { ChromeOptions options = new ChromeOptions(); // 每个实例分配独立配置目录,避免Chrome进程锁冲突 string instanceProfilePath = $@"{profileRoot}\AutoLikeInstance_{i}"; options.AddArgument($"--user-data-dir={instanceProfilePath}"); // 隐藏自动化标识,降低被平台检测概率 options.AddExcludedArgument("enable-automation"); options.AddAdditionalOption("useAutomationExtension", false); ChromeDriver driver = new ChromeDriver(options); drivers.Add(driver); int currentIndex = i + 1; // 异步执行单实例点赞逻辑,避免阻塞多实例启动 ThreadPool.QueueUserWorkItem(_ => { try { driver.Navigate().GoToUrl(targetUrl); // 设置元素查找最长等待时间10秒,适配页面加载速度 driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); // 定位TikTok点赞按钮,适配官方页面通用结构 IWebElement likeBtn = driver.FindElement(By.XPath("//span[@data-e2e='like-icon']/..")); // 随机等待1-3秒再点击,模拟人工操作节奏 Thread.Sleep(new Random(Guid.NewGuid().GetHashCode()).Next(1000, 3000)); likeBtn.Click(); Console.WriteLine($"实例[{currentIndex}] 点赞执行完成"); } catch (Exception ex) { Console.WriteLine($"实例[{currentIndex}] 执行出错:{ex.Message}"); } }); } Console.WriteLine("所有实例已派发任务,执行完成后按任意键关闭所有窗口并退出..."); Console.ReadKey(); } finally { // 释放所有浏览器进程资源 foreach (var driver in drivers) { driver.Quit(); driver.Dispose(); } } } } }
运行注意事项
- 启动程序前要关闭所有已经打开的Chrome进程,否则会因为配置目录被占用导致启动失败
- 如果默认的点赞按钮定位规则失效,可以手动打开TikTok页面按F12调出开发者工具,检查点赞按钮的元素属性,替换代码中
By.XPath对应的定位规则即可 - 不要短时间内启动超过3个实例,操作间隔不要过短,否则容易触发TikTok反爬风控,导致账号功能被限制
- 第一次运行每个实例时如果弹出登录提示,手动登录一次TikTok账号即可,登录状态会保存在对应实例的独立配置目录中,后续运行不需要重复登录
本代码仅用于个人学习浏览器自动化技术使用,请严格遵守TikTok平台用户协议,不要用于批量刷量等违规操作。
内容的提问来源于stack exchange,提问作者albin brahimi
相关产品推荐
相关产品推荐

