uppifyagency/instaghost

GitHub: uppifyagency/instaghost

Instagram爬虫Chrome插件,构建Markdown知识库。

Stars: 2 | Forks: 0

# 👻 InstaGhost ### 免费开源的 **Instagram 爬虫** Chrome 扩展 — 将任何 Instagram 个人资料转化为适配 LLM 的知识库。 **无需 API 密钥。无需付费套餐。无需外部服务器。** 你的浏览器,你的会话,你的数据。 [![License: MIT](https://img.shields.io/badge/License-MIT-E4405F.svg?style=flat-square)](LICENSE) [![Manifest V3](https://img.shields.io/badge/Manifest-V3-7d54f0.svg?style=flat-square)](manifest.json) [![Chrome Extension](https://img.shields.io/badge/Chrome-Extension-ff8f5e.svg?style=flat-square&logo=googlechrome&logoColor=white)](#-installation) [![Zero dependencies](https://img.shields.io/badge/dependencies-0-brightgrey.svg?style=flat-square)](#-how-it-works) [![PRs welcome](https://img.shields.io/badge/PRs-welcome-7d54f0.svg?style=flat-square)](#-contributing) ![GitHub stars](https://img.shields.io/github/stars/uppifyagency/instaghost?style=flat-square&color=E4405F) [**功能简介**](#-what-it-does) · [**核心特性**](#-features) · [**安装说明**](#-installation) · [**工作原理**](#-how-it-works) · [**与 Apify 对比**](#-instaghost-vs-apify-vs-the-official-api) · [**常见问题**](#-faq)
## 🧭 什么是 InstaGhost? **InstaGhost 是一款完全作为 Chrome 扩展运行的免费 Instagram 爬虫。** 只需提供一个 Instagram 用户名和帖子数量,它就能生成一份简洁的、**适配 LLM 的 Markdown 知识库**(以及结构化的 JSON 数据集,可选包含原始照片和视频)。 它是**可自制的、零成本的付费 Instagram 爬虫替代方案**(例如 Apify Instagram Scraper)。与租用云端 actor 并按次付费不同,InstaGhost 运行在**你已经登录的 Instagram 会话**中,并向 Instagram 请求与网站自身请求完全相同的数据(内部 Web API)。任何数据都不会离开你的浏览器。 ## ✨ 它能做什么 给定一个用户名(例如 `@nasa`)和帖子数量 **N**(从最新开始),InstaGhost 会生成: | 输出 | 包含内容 | |---|---| | 📝 **`-.md`** | **针对 LLM 优化的知识库**。**第一部分 — 索引:** 带有地理位置的信息、文案中提及的地点 (📌)、被提及的账号/地点、高频 hashtag、按主题分组的帖子。**第二部分 — 帖子:** 按时间顺序排列的每一条帖子,包含文案、互动数据、位置、音频、共同作者、付费合作标记和热门评论。 | | 🗂️ **`-.json`** | 完整的**标准化数据集** (schema-03),包含一个带有直链照片/视频 URL 的 `media[]` 数组。 | | 🖼️ **`@/…`** *(可选)* | 实际的**媒体文件** — 每一张照片和视频,包括所有轮播滑动图片 — 当你开启“照片和视频”开关时下载。 | ## 🚀 核心特性 ## 📸 输出示例 ``` # Instagram 知识库 — @testcafe (Test Cafe) > 12,500 followers · 340 total posts · 60 extracted (chronological, newest first) · Cafe > Bio: Coffee & books > Extracted: 2026-06-02T10:00:00.000Z · Source: Instagram (public data) # PART 1 — 索引 ## 🗺️ 带标签的地点(已地理定位) - **Downtown Roastery** (44.49, 11.34) — 8 posts: #1, #4, #9 … ## 🧭 按主题分类的帖子 - **🍽️ Food & drink** (41): #1, #2, #3 … - **🎭 Events** (12): #5, #11 … # PART 2 — 帖子(按时间顺序) ## #1 · 2026-05-30 · 图像 🧭 🍽️ Food & drink 📍 **Downtown Roastery** 📊 230 likes · 12 comments **Caption:** Best single-origin in town ☕ … ``` 将其粘贴到你最喜欢的 LLM 中并提问:*“根据这份个人资料,为我制作一份周边美食指南。”* ## 📦 安装说明 ## 🖱️ 使用方法 1. 打开 **instagram.com** 并登录(必须处于登录会话状态)。 2. 进入你想抓取的个人主页 — 用户名会被**自动检测** — 或者手动将其输入到面板中。 3. 选择**帖子数量**(从最新开始)并设置开关: - **热门评论**(默认开启) — 为每条帖子添加前 5 条热门评论。 - **照片和视频**(默认关闭) — 同时下载媒体文件。 4. 点击 **✨ 提取**。面板会显示逐步进度(个人资料 → 帖子 → 评论)。 5. 完成后:**复制 Markdown**(粘贴到你的 LLM 中)或下载 `.md` / `.json`。如果启用了媒体下载,文件会存放在 `Downloads/@/` 中。 ## 🧱 工作原理 InstaGhost 采用“Driver A”架构:content script 使用你的第一方 cookie(同源,来自隔离的 content-script 环境),向 Instagram 的**内部 Web API** 请求获取数据。不进行 DOM 抓取,不使用无头浏览器,不使用第三方代理。 ``` ┌──────────────────────────────────────────────────────────────────┐ │ 🪟 SIDE PANEL (ui/sidepanel.html + .js) │ │ drives the flow · renders every state │ └──────────────┬─────────────────────────────────────▲──────────────┘ ig_detect / │ │ ig_progress / ig_extract / │ │ ig_result / ig_abort ▼ │ ig_media_* ┌──────────────────────────────────────────────────────────────────┐ │ CONTENT SCRIPT (runs on instagram.com · logged-in session) │ │ │ │ 🧭 ig-driver.js orchestrator │ │ ├─ 🔌 ig-api-client.js fetch /api/v1/… (credentials: include) │ │ │ └── uses ──▶ 🛡️ rate-limiter.js (anti-detection) │ │ ├─ 🧩 ig-normalizer.js raw IG JSON → schema-03 (+ media[]) │ │ └─ 📝 ig-render.js schema → Markdown knowledge base │ └──────────────┬─────────────────────────────────────────────────────┘ ig_download /│ ig_download_media ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 💾 SERVICE WORKER (background/service-worker.js) │ │ saves .md / .json · downloads photos & videos │ └──────────────────────────────────────────────────────────────────┘ ``` **使用的 Endpoints**(内部 Web API,来自你已登录的会话): | Endpoint | 返回内容 | |---|---| | `GET /api/v1/users/web_profile_info/?username=X` | 个人资料 + `userId` | | `GET /api/v1/feed/user/{userId}/?count=N&max_id=…` | 分页帖子 | | `GET /api/v1/media/{mediaId}/comments/` | 评论 | **运行时文件结构:** ``` manifest.json # MV3, v2.0.0 background/service-worker.js # opens the panel + downloads (.md/.json + media) content/ ig-driver.js # content-side orchestrator ig-api-client.js # internal API client + RateLimiter ig-normalizer.js # raw IG → schema (profile/post/comment/media) ig-render.js # schema → Markdown knowledge base libs/ rate-limiter.js # anti-detection engine ui/ sidepanel.html / .js # single-purpose UI + state controller icons/ # 16 / 48 / 128 ``` ## 🛡️ 防检测 由于封号风险主要在于**发起请求的已登录账号**,因此 [`libs/rate-limiter.js`](libs/rate-limiter.js) 会让流量看起来更像人类操作: - **高斯分布延迟**(Box-Muller 算法)由 CSPRNG 生成种子,因此其时间特征不是那种容易被检测到的均匀随机指纹。 - 随机的**“分心暂停”**和**“快速反应”**,模拟真实的注意力转移。 - **渐进式疲劳** — 扩展程序随着会话运行时间的增加而逐渐变慢。 - 针对收到 `429` / `503` 响应时启用**指数退避 + 安全模式**。状态会持久化保存到 `chrome.storage.local` 中。 即便如此:请温和使用。请参阅下方的[负责任地使用](#-privacy--responsible-use)。 ## ⚖️ InstaGhost 与 Apify 及官方 API 对比 | | 👻 **InstaGhost** | 💰 Apify Instagram Scraper | 🏢 Official Graph API | |---|---|---|---| | **费用** | 免费且开源 | 按次付费 / 包月额度 | 免费层级,随后是配额限制 | | **设置** | 加载已解压的扩展程序 | 账号 + actor 配置 | 应用审核 + tokens | | **API key** | ❌ 不需要 | ✅ Apify token | ✅ 应用 + access token | | **运行环境** | 你的浏览器,本地运行 | Apify 云端 | Meta 服务器 | | **数据存储位置** | 保留在你的机器上 | Apify 云端存储 | Meta | | **公开主页** | ✅ | ✅ | ⚠️ 受限 / 仅限商业账户 | | **适配 LLM 的 Markdown** | ✅ 内置支持 | ❌ 仅原始 JSON | ❌ 仅原始 JSON | | **最适用于** | 个人研究,LLM 数据准备 | 大规模自动化 | 已获批的商业应用 | 如果你正在寻找一款**免费的 Apify Instagram 爬虫替代品**,或者一个**无需 API 的 Instagram 爬虫**,InstaGhost 正是为此类用例量身打造的。 ## ❓ 常见问题 **什么是 InstaGhost?** 一款免费开源的 Chrome 扩展程序,它可以抓取公开的 Instagram 个人主页 — 包括其帖子、文案、评论、hashtag、位置和互动数据 — 并将所有内容导出为适配 LLM 的 Markdown 和 JSON,且完全在你的浏览器中运行。 **InstaGhost 是免费的吗?** 是的。它采用 MIT 许可证,没有付费层级,没有点数消耗,也不需要创建账号。你可以直接将其作为已解压的 Chrome 扩展程序加载。 **我需要 Instagram API 密钥或开发者账号吗?** 不需要。InstaGhost 不使用官方的 Instagram/Graph API。它复用你正常的浏览器登录会话,因此无需管理任何 tokens。 **它可以抓取私密 Instagram 主页吗?** 不可以。它只能读取你的账号本身能看到的内容。对于你未关注的私密主页,根据设计它不会返回任何帖子。 **它支持抓取 Instagram reels、评论和 hashtag 吗?** 支持 — 它可以抓取帖子和 reels(包含音频元数据)、每条帖子的热门评论、所有 hashtag 和 @提及,以及带有地理位置标记的地点。 **抓取 Instagram 会导致我的账号被封禁吗?** 任何自动化操作都存在风险。InstaGhost 内置了拟人化的速率限制和退避机制以尽量降低风险,但你仍应适度使用 — 一次抓取一个主页,设置合理的 N 值 — 最好避免使用你的主要账号。 **我的数据存储在哪里?** 仅存储在你的浏览器和“下载”文件夹中。没有外部服务器,没有遥测数据,也没有跟踪。 **支持哪些浏览器?** 任何基于 Chromium 内核的浏览器:Google Chrome、Microsoft Edge、Brave、Arc 和 Opera。 **它与 Apify Instagram Scraper 有什么不同?** Apify 在云端运行并按次收费;而 InstaGhost 在你的浏览器中本地免费运行,并输出专为 LLM 设计的 Markdown。请参阅[对比表格](#-instaghost-vs-apify-vs-the-official-api)。 ## 🔐 权限说明 每一项权限都对应一个实际需求:下载文件、打开侧边栏、与当前活跃的 Instagram 标签页通信,以及在本地持久化存储防检测状态。没有宽泛的主机访问权限,没有分析追踪。 ## ⚠️ 隐私与负责任地使用 - **仅供个人使用。** 提取的数据虽然是公开的,但它们属于你 — 请勿将其重新分发,并尊重 Instagram 的服务条款及适用法律(包括适用情况下的 GDPR)。 - **你的账号就是“保险丝”。** 请求源于你的会话;过度使用可能导致**你的账号**被频率限制或被封禁。请适度使用,并避免使用你最重要的账号。 - **不稳定的 Endpoints。** 这些是未公开文档记录的内部 API:Instagram 可能会在不加通知的情况下更改它们,届时扩展程序可能需要更新。 - **一切皆为本地处理。** 无服务器,无遥测。`.md` / `.json` / 媒体文件仅保存在你的“下载”文件夹中。 InstaGhost 仅出于教育和个人研究目的按“原样”提供,不提供任何担保。你需要对自己的使用方式负责。 ## 👤 作者 由 **[Vlad Vrinceanu](https://www.linkedin.com/in/vladvrinceanu/)** 创建和维护。 如果 InstaGhost 为你节省了时间或金钱,欢迎在仓库点个 ⭐ 并在 [LinkedIn](https://www.linkedin.com/in/vladvrinceanu/) 上建立联系,我们将不胜感激。 ## 📄 许可证 [MIT](LICENSE) © 2026 [Vlad Vrinceanu](https://www.linkedin.com/in/vladvrinceanu/)。可自由使用、修改和分享。
关键词: instagram 爬虫 · instagram 个人主页爬虫 · instagram 帖子爬虫 · instagram 评论爬虫 · instagram reels 爬虫 · instagram hashtag 爬虫 · 免费 instagram 爬虫 · instagram 爬虫 chrome 扩展 · 无需 API 的 instagram 爬虫 · instagram 数据爬虫 · apify instagram 爬虫替代品 · instagram 转 markdown · 导出 instagram 到 LLM

献给所有想要一款**免费、私密且真正属于你自己的** Instagram 爬虫的人。👻
由 [**Vlad Vrinceanu**](https://www.linkedin.com/in/vladvrinceanu/) 开发 · 采用 MIT 许可证
标签:自定义脚本