如何使用计算机视觉自动化Instagram互动(并因此被封禁)

Hacker News Top 工具

摘要

一份技术指南,介绍如何利用计算机视觉通过视觉查找UI元素来自动化Instagram的点赞和评论,绕过DOM选择器。讨论了模板匹配以及通过使用地标来减少误报。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/12 14:54

# 如何用计算机视觉自动化 Instagram 互动(并因此被封号) 来源:https://blog.florianherrengt.com/how-to-automate-instagram-engagements.html 显然,Instagram 不想让你自动化互动。他们的 HTML 是一堆随机生成的类名和深度嵌套的 div。每次部署结构都会变化。任何依赖 DOM 选择器的脚本都会在几周内失效,因为类名已经不存在了。 但这其实无所谓。Instagram 可以随意混淆他们的代码,因为代码是给机器看的。但**UI**……UI 是给人看的。心形图标必须看起来像个心形。评论按钮必须在用户期望的位置。布局必须足够一致,让人能轻松浏览。 所以,与其跟 DOM 较劲,不如直接绕过它。截个屏,根据视觉特征找到心形,获取坐标,移动光标到那里,点击,完成。 这对任何渲染成像素的东西都有效:网页应用、原生应用、游戏、终端。只要人能看见并点击,电脑也能做到。不需要选择器、API 或平台特定的钩子。只需要计算机视觉和光标自动化。 不幸的是,你不能硬编码位置。东西总在移动。长评论会把操作栏往下推。位置标签会多出一行。轮播图会占用更多垂直空间。每篇帖子的布局压缩或展开方式都不同。 在两篇帖子之间导航,看看心形的位置发生了什么变化: 心形在帖子之间移动,位置从不相同。计算机视觉解决了这个问题。不用猜测心形*应该*在哪里,而是看着屏幕,找到它们*实际*在哪里。 ## 屏幕太大,误检太多 天真的方法很简单:把心形图标作为模板,在屏幕上找到它。匹配的地方就是心形。这是你能做的最基本的计算机视觉操作。 但效果不太好。 全屏截图非常大。典型屏幕上有超过 700 万像素。而心形很小,大约 70x60 像素。要搜索的表面积太大了。在那片像素海洋里,有很多东西隐约像心形。你会得到太多误检。 检测技术没问题。**搜索空间**才是问题。屏幕上充满了噪声。搜索的区域越大,找到的噪声就越多。 ## 缩小搜索空间 解决方法是停止搜索整个屏幕。相反,**找到屏幕上容易检测的东西**,并用它们来确定心形必须在什么地方。 在 Instagram 上,有两样东西始终容易找到: - 每篇帖子右上角的**三点菜单**(⋯)。它很小,对比度高,视觉上独特。始终存在。 - 每篇帖子底部的**操作栏**(点赞/评论/分享)。它是一个宽而可预测的图标模式。 两者都可以用基本的模板匹配在毫秒内找到。但我们关心的不是它们本身。我们关心它们告诉我们什么:三点菜单直接位于心形列的上方。操作栏直接位于心形列的下方。如果我们知道这两个地标的位置,我们就确切知道心形在哪里。它们就在两者之间的垂直条带中。 `` crop.x = triple_dots.x crop.y = triple_dots.y + triple_dots.height crop.width = triple_dots.width crop.height = action_bar.y - crop.y - action_bar.height x 0.2 `` 搜索区域中剩下的只有真正的心形和恰好出现在那列中的东西。 由于裁剪区域是从地标在屏幕上的实际位置推导出来的,而不是硬编码的,它会自动适应每篇帖子。地标可能根据帖子内容上下移动,但它们与心形之间的几何关系始终不变。 ## 滑动窗口 现在搜索空间又小又干净,你可以运行滑动窗口。将心形模板按像素滑动扫过搜索区域。对每个位置评分。匹配越好,越可能是心形。 滑动窗口故意设置得宽松,以捕捉每一个可能的心形。但这也意味着它会捕捉到不是心形的东西。 Instagram 上的心形都在一个垂直列中。每一个都是。大多数检测结果都在那条线上。不在线上的都是离群值: `` · · · · · · · · · · · · · ♡ · · ← 大多数检测结果在这里 · · · · · · · · · · · · · ♡ · · ← 同一列 · ✕ · · · · · · ← 离群值(偏左) · · · · · ♡ · · ← 同一列 · · · · · · · · · · · · · ♡ · · ← 同一列 · · · · · · · · · · · · · · ✕ · ← 离群值(偏右) · · · · · ♡ · · ← 同一列 · · · · · · · · `` 心形(♡)聚集在一个 X 坐标上。误检(✕)分散在各处。滑动窗口认为它们看起来像心形,但它们不在那一列。 所以我们找出所有检测结果中最常见的 X,即共识线,并丢弃任何偏离超过 10 像素的结果。这其实就是找 X 值的众数,然后把其余的都当作噪声。几行代码就能消除几乎所有误检。滑动窗口故意设得宽松以捕捉每个可能的心形,而这个过滤器则很严格,以移除所有不是心形的东西。 ## 完整检测流程 `` 截图 → 通过模板匹配找到三点菜单和操作栏 → 根据它们的位置计算裁剪区域 → 裁剪成 60 像素宽的条带 → 以多尺度运行滑动窗口模板匹配 → 垂直对齐过滤 → 去重,从上到下排序 → 返回 [{x, y}, ...] `` 演示视频展示了整个过程: 每个检测到的心形变成一个点击坐标。服务器以 JSON 形式返回它们。客户端将光标移动到每个位置并点击。 ## 封号 账户在几天内就被封了。 我尝试了一些让它不那么明显的方法:贝塞尔曲线实现自然光标移动、随机化点击时机、在操作之间闲逛、在关注按钮上添加随机偏移。所有常见的技巧。 当然,这没用。Instagram 在机器人检测上花了很多钱,他们的团队全职在搞这个。 但这次实验仍然有趣。你能把摄像头对准任何屏幕,仅用计算机视觉和光标自动化来与之交互吗?答案是肯定的。 ## 备注 阅读代码 (https://github.com/florianherrengt/instabot) 如果你只想让某个东西工作起来,看看 Oculix (https://github.com/oculix-org) 吧。

相似文章

@sairahul1: https://x.com/sairahul1/status/2066809666592718879

X AI KOLs Timeline

一份关于构建AI驱动内容机器的详细指南,该机器从TikTok和Instagram等平台抓取热门内容,使用AI生成平台原生帖子,并利用ScrapeCreators、Kie.ai和Postiz等工具自动安排发布计划。

AI在现实世界中的部署

Reddit r/ArtificialInteligence

Reddit已部署AI/LLM实时分析所有帖子和评论中的仇恨言论与有害内容,能在几秒内自动封禁用户,这与Instagram和Facebook形成对比,后两者并未如此严格地应用此类分析。