浏览器抓取

这一页优先像“抓取控制台”,把主方案、账号来源和兜底方案拆开,避免一进来信息太散。

主方案:Windows 一键抓取

  • 确保 TikTok 已登录在 Chrome 或 Edge
  • 下载最新脚本到同一个文件夹
  • 双击 run_local_capture.bat
  • 抓取完成后自动回传服务器

当前抓取来源

抓取页账号列表来自当前账号/绑定结果,不是随便写死的一份名单。

强绑定账号数
148
历史数据条数
155
账号来源
绑定账号列表
自动回传
已启用

Windows 一键抓取(主方案)

默认优先使用这一条链路,其他方式都算备用。

你电脑是 Windows,就优先用这个。下载下面两个文件到你电脑同一个文件夹里,确保 TikTok 已登录在 Chrome 或 Edge,然后双击 run_local_capture.bat 即可自动抓取并回传服务器。

注意:每次我改了抓取逻辑或账号列表后,你都要重新下载最新脚本再运行,旧文件里的回传地址和账号列表不会自动更新。

下载 local_capture_runner.py

下载 run_local_capture.bat

自动回传接口

抓取完成后默认往这里回传,不需要手动导入时就别碰下面的兜底区域。

https://aitkjk666.xyz/api/browser-capture/ingest

自动回传书签(备用)

主方案不方便时再用,不建议作为第一选择。

javascript:(async()=>{const sleep=(ms)=>new Promise(r=>setTimeout(r,ms));const pick=(txt)=>{if(!txt)return null;const ps=[/"followerCount"\s*:\s*(\d+)/,/"follower_count"\s*:\s*(\d+)/,/"stats"\s*:\s*\{[^\}]*"followerCount"\s*:\s*(\d+)/];for(const p of ps){const m=txt.match(p);if(m)return Number(m[1]);}return null;};const endpoint='http://59.110.225.215/api/browser-capture/ingest';const token='tk_auto_ingest_20260326';const names=["1z1352", "aubreegorant", "anna.chan666", "whhikfh", "lin.xuma", "hakk.li8", "mattie9663", "moli.li29", "alinassaaa7", "ethanlinda86", "dava4829", "abiafven", "user3344334509", "ali.cia229", "aik.luxi", "grace.allen216", "kbojsn", "annascot49", "kian.smitham", "jen.ben46", "ainaa878", "annanade1", "fielddruat6", "pkbhon", "bella.parker895", "lily.evans848", "zoe968716", "bqhiwszu5aq", "elara.voss83", "derekhilp", "sndosje", "joannxjsuup", "carys5303", "shaynerat", "tamika.dylan", "lila.soctt", "julio.dic", "vena.haley", "londyn.brooks52", "perenathan0", "winona.kun", "kaliya.davis7", "anna.carter52", "amari.clark62", "dougcremi", "biobff", "rodrivdce7u", "peyton9837", "aria75489", "jeromy286", "fuivfd3", "lindalia0b8", "ougokg", "tess65837", "phibfd", "grayyson78", "tyrelvebwz4", "ralrh.dou", "veda4731", "hgvgajj", "jbcvce", "deonlang50", "tellyjaco", "effieerko17", "jevon.huelsacr", "nyahsan3", "raycormier1", "gfdcutch", "ovalooag4au", "sala01800", "clark.win", "aydentuy1xv", "virgildietr", "amydanie4", "boddy.hod", "mika.socct", "emely.luettg", "jimmiucnhkt", "nelsonk769", "www.tiktok.com/@zitasqygq7e", "vancepia3k1", "reytondhmuo", "lilyan2270", "randal0294", "huberflzytz", "ovamanny", "stantwqbsbe", "ilenexhhc1x", "ethelpoll", "isomkntf15r", "linnie5621", "markudew3u7", "molijack0", "delphffyyi1", "edenhkxphzz", "lonspvjpctw", "rylanpmeri2", "brielkfapsj", "nonaczfx8gg", "jalynynry2n", "magdavejuu5", "denisbauch1", "freddpziwbu", "alidarjjqhb", "coltoyyvig1", "piper0036", "adelaabbottak", "pearleszzsw", "emilytjq4vv", "immanue.105", "norvayaeq3i", "elnagdqv9pq", "wilberaztqc", "janieqzn1x4", "madlison7", "raisy617", "reidgreen53", "merlwusv8l6", "orensbyqy45", "albinlvqaob", "elzabeth93", "flolemken", "jules.kriscu", "jeraliuoeea", "revabwtnd2b", "immanryk676", "henr6520", "faysppofemt", "sheagluylee", "emile.an", "buddytkki1w", "minnialhi80", "bellabuck07", "zoe107452", "harleygisla", "heidixrzub3", "alexmwjosmi", "aria15576", "lvy3081", "jiexik", "jalentgk34s", "joeldxqxc94", "agustctxntu", "josebreupe0", "consufoa713", "celia.klein08", "angelscbqt5", "jeromrggqjx"];if(!names.length){alert('未提供账号');return;}const out={task_type:'browser_bookmarklet_capture',generated_at:new Date().toISOString(),count:names.length,results:[]};for(let i=0;i<names.length;i++){const username=names[i];try{const res=await fetch('https://www.tiktok.com/@'+username,{credentials:'include'});const text=await res.text();const followers=pick(text);out.results.push({username,followers,status:followers!=null?'ok':'follower_not_found',message:followers!=null?'success':'follower_not_found',captured_at:new Date().toISOString()});}catch(e){out.results.push({username,followers:null,status:'request_error',message:String(e),captured_at:new Date().toISOString()});}await sleep(800);}try{const resp=await fetch(endpoint,{method:'POST',headers:{'Content-Type':'application/json','X-Capture-Token':token},body:JSON.stringify(out)});const data=await resp.json().catch(()=>({ok:false,error:'invalid_json'}));if(resp.ok&&data.ok){alert('一键抓取成功:已自动回传后台。导入 '+data.imported+' 条,跳过 '+data.skipped+' 条。请回监测页面刷新查看。');return;}alert('已抓取,但自动回传失败:'+JSON.stringify(data));}catch(e){alert('已抓取,但自动回传失败:'+String(e)+'。我会保留兜底方案。');}})();

当前内置抓取账号列表

这份列表来自当前账号/绑定结果;如果手机资料里新增了用户名并成功形成绑定,这里会跟着变。

联动列表

手动兜底导入(只有自动回传失败时才用)

只有自动回传失败时再粘贴导入,平时尽量不要把这里当主流程。