misiektoja/instagram_monitor

GitHub: misiektoja/instagram_monitor

一个基于Python的Instagram实时监控工具,提供仪表板与告警,用于追踪账户变更与媒体采集。

Stars: 847 | Forks: 67

# instagram_monitor

GitHub Release PyPI Version GitHub Stars Python Versions Docker Pulls License Last Commit Maintenance

功能强大、实时的OSINT套件,用于追踪Instagram上的所有活动——从故事更新、个人资料变更到粉丝变动,提供惊艳的仪表板和即时提醒,让你随时掌握最新动态。 ### 🚀 快速安装 Python ``` pip install instagram_monitor ``` Docker ``` docker pull misiektoja/instagram-monitor:latest ```

instagram_monitor_web_dashboard_screenshot

## 功能 ### 🔍 实时追踪 - **个人资料活动**:实时监控**新帖子、Reels 和故事**。 - **受众洞察**:追踪**关注**和**粉丝**的变化。 - **视觉变更**:检测**个人资料图片**和**可见性**(公开/私密)的更新。 - **个人简介更新**:及时了解**用户个人简介**的变更。 ### 📥 媒体下载 - **匿名故事**:下载故事图片和视频**不留痕迹**。 - **高质量媒体**:保存帖子图片、Reels 视频和个人资料图片。 - **批量支持**:同时监控并下载**多个用户**的媒体内容。 ### 📱 交互式仪表板 - **终端仪表板**:美观的实时更新 CLI 界面,带实时统计。 - **Web 仪表板**:现代化的本地 Web UI,包含活动订阅和远程控制。 - **图片支持**:通过 `imgcat` 在终端中直接查看个人资料图片和媒体。 ### 🔔 智能通知 - **多通道**:通过 **Email** 和 **Webhooks**(如 **Discord** 等)即时提醒。 - **丰富提醒**:通知中附带媒体(个人资料图片、故事、帖子)。 - **错误报告**:当监控流程遇到问题时及时通知。 ### 🛡️ 隐私与规避检测 - **模拟人类模式**:模拟随机用户行为以融入正常流量。 - **抖动模式**:在 HTTP 请求中增加类人延迟。 - **小时范围检查**:限制活动在一天中的特定时段。 - **账号灵活性**:支持登录或未登录 Instagram 账号运行。 ### ⚙️ 高级功能 - **CSV 日志**:记录所有活动和账号变更,并附时间戳。 - **灵活配置**:支持文件、dotenv 和环境变量。 - **粉丝流失追踪**:精确记录谁关注或取消关注。 - **远程控制**:通过信号或 Web UI 管理追踪功能。 - **Docker 就绪**:可通过 Docker Hub 镜像或本地构建运行,配置、dotenv 和会话持久化。

instagram_monitor_terminal_dashboard

instagram_monitor_log_screenshot

## 目录 1. [需求](#requirements) 2. [安装](#installation) * [从 PyPI 安装](#install-from-pypi) * [从 Docker Hub 安装](#install-from-docker-hub) * [手动安装](#manual-installation) * [升级](#upgrading) 3. [快速开始](#quick-start) 4. [配置](#configuration) * [配置文件](#configuration-file) * [会话模式 1:未登录 Instagram 账号(无需登录)](#session-mode-1-without-logged-in-instagram-account-no-session-login) * [会话模式 2:已登录 Instagram 账号(会话登录)](#session-mode-2-with-logged-in-instagram-account-session-login) * [时区](#time-zone) * [SMTP 设置](#smtp-settings) * [存储密钥](#storing-secrets) 5. [视图模式](#view-modes) * [传统文本模式](#traditional-text-mode) * [终端仪表板](#terminal-dashboard-mode) * [Web 仪表板](#web-dashboard-mode) * [仪表板视图模式](#dashboard-view-modes) 6. [用法](#usage) * [Docker 用法(推荐)](#docker-usage-recommended) * [Docker Hub 镜像](#docker-hub-image-recommended) * [本地构建镜像](#build-image-locally) * [常见运行场景](#common-run-scenarios) * [监控模式](#monitoring-mode) * [邮件通知](#email-notifications) * [Webhook 通知](#webhook-notifications) * [粉丝流失检测](#follower-churn-detection) * [跳过关注变更](#skipping-follow-changes) * [CSV 导出](#csv-export) * [输出目录](#output-directory) * [已更改个人图片检测](#detection-of-changed-profile-pictures) * [在终端显示图片](#displaying-images-in-your-terminal) * [检查间隔](#check-intervals) * [信号控制(macOS/Linux/Unix)](#signal-controls-macoslinuxunix) * [使用 GRC 给日志输出上色](#coloring-log-output-with-grc) 7. [如何防止被挑战和账号封禁](#how-to-prevent-getting-challenged-and-account-suspension) 8. [故障排除](#troubleshooting) 9. [更新日志](#change-log) 10. [维护者](#maintainers) 11. [许可证](#license) ## 需求 选择一种运行时路径: * **Python 路径**: * [Python](https://www.python.org/downloads/) 3.9 或更高 * 库:[instaloader](https://github.com/instaloader/instaloader)、`requests`、`python-dateutil`、`pytz`、`tzlocal`、`python-dotenv`、`tqdm`、`rich`(用于终端仪表板)、`flask`(用于 Web 仪表板) * **容器路径**(主机无需 Python): * 任何兼容 Docker 的运行时,例如: * [Docker Desktop](https://docs.docker.com/get-started/get-docker/)(macOS、Windows、Linux) * [Docker Engine](https://docs.docker.com/engine/install/)(Linux) * [Colima](https://colima.run/docs/installation/)(macOS,配合 Docker CLI) * [OrbStack](https://docs.orbstack.dev/quick-start)(macOS) * [Rancher Desktop](https://docs.rancherdesktop.io/getting-started/installation/)(macOS、Windows、Linux,启用 Moby 或 Docker CLI) 测试平台: * **macOS**:Ventura、Sonoma、Sequoia、Tahoe * **Linux**:Raspberry Pi OS(Bullseye、Bookworm、Trixie)、Ubuntu 24/25、Rocky Linux 8.x/9.x、Kali Linux 2024/2025 * **Windows**:10、11 在其他 macOS、Linux、Unix 和 Windows 版本上也应能正常运行。 ## 安装 ### 从 PyPI 安装 ``` pip install instagram_monitor ``` ### 从 Docker Hub 安装 ``` docker pull misiektoja/instagram-monitor:latest ``` 有关运行示例和关键场景,请参阅 🐳 [Docker 用法(推荐)](#docker-usage-recommended)。 ### 手动安装 下载 *[instagram_monitor.py](https://raw.githubusercontent.com/misiektoja/instagram_monitor/refs/heads/main/instagram_monitor.py)* 文件到目标位置。 通过 pip 安装依赖: ``` pip install instaloader requests python-dateutil pytz tzlocal python-dotenv tqdm rich flask ``` **注意**:`rich` 用于终端仪表板,`flask` 用于 Web 仪表板。如果未安装 Rich 或 Flask,对应仪表板将自动禁用。 或者,从下载的 *[requirements.txt](https://raw.githubusercontent.com/misiektoja/instagram_monitor/refs/heads/main/requirements.txt)* 安装: ``` pip install -r requirements.txt ``` ### 升级 通过 PyPI 升级到最新版本: ``` pip install instagram_monitor -U ``` 如果手动安装,下载最新的 *[instagram_monitor.py](https://raw.githubusercontent.com/misiektoja/instagram_monitor/refs/heads/main/instagram_monitor.py)* 替换现有安装 如果使用 Docker Hub,拉取更新的镜像标签: ``` docker pull misiektoja/instagram-monitor:latest ``` 如果偏好固定版本而非 `latest`,拉取特定版本标签: ``` docker pull misiektoja/instagram-monitor: ``` 如果运行本地构建的镜像,重新构建以获取新更改: ``` docker build --pull -t instagram_monitor:local . ``` ## 快速开始 如果倾向于在容器中运行,请跳至 🐳 [Docker 用法(推荐)](#docker-usage-recommended)。 - 监控 `target_insta_user`(会话模式 1): ``` instagram_monitor ``` 或手动安装后: ``` python3 instagram_monitor.py ``` - 监控 `target_insta_user`(会话模式 2): ``` # 通过 Firefox 网络浏览器登录 Instagram 账户(your_insta_user) instagram_monitor --import-firefox-session instagram_monitor -u ``` - 也可同时启动 **[Web 仪表板](#web-dashboard-mode)**: ``` instagram_monitor --web-dashboard ``` 查看所有支持的命令行参数/标志: ``` instagram_monitor --help ``` ## 配置 ### 配置文件 大多数设置可通过命令行参数配置。 如需持久化存储,生成默认配置模板并保存为 `instagram_monitor.conf`: ``` # 在 macOS、Linux 或 Windows 命令提示符(cmd.exe)上 instagram_monitor --generate-config > instagram_monitor.conf # 在 Windows PowerShell 中(建议避免编码问题) instagram_monitor --generate-config instagram_monitor.conf ``` 编辑 `instagram_monitor.conf` 并按需修改配置选项(每个选项均有详细注释)。 **注意**:从 **v3.0** 开始,几乎所有配置设置均可通过 **[Web 仪表板](#web-dashboard-mode)** 修改并生成配置文件。 ### 会话模式 1:未登录 Instagram 账号(无需登录) 在此模式下,工具以匿名方式运行,无需登录 Instagram 账号。 仍可监控基本的用户活动,例如新或已删除的帖子(**不包括 Reels 和故事**,受 Instagram API 限制)、个人简介变更及关注/粉丝数量变化。但无法看到具体是哪些关注者或关注发生了变动。 此模式无需设置,易于使用,且能规避 Instagram 的反机器人机制和 CAPTCHA 挑战。 ### 会话模式 2:已登录 Instagram 账号(会话登录) 在此模式下,工具使用 Instagram 会话登录以访问更多数据。这包括新帖子、Reels 和故事的详细洞察,以及关注/粉丝的增加或减少。 **重要**:强烈建议使用专用的 Instagram 账号。风险总体较低(实践中账号通常长期活跃),但 Instagram 可能将其标记为自动化工具,从而触发需手动处理的验证挑战。为最大限度降低检测风险,请务必遵循 [此处](#how-to-prevent-getting-challenged-and-account-suspension) 的最佳实践。 #### 选项 1:基础会话登录(不推荐) 可在 `instagram_monitor.conf` 中直接提供 Instagram 用户名(`your_insta_user`)和密码,或通过 [环境变量](#storing-secrets) 或 `-u`、`-p` 参数设置。 但此方式会在每次运行时完整登录,增加被检测和账号锁定的概率。 若将 `SESSION_PASSWORD` 存入 dotenv 文件,可更新其值并向进程发送 `SIGHUP` 信号以重载配置(无需重启)。更多细节请参见 [存储密钥](#storing-secrets) 和 [信号控制(macOS/Linux/Unix)](#signal-controls-macoslinuxunix)。 #### 选项 2:通过 Instaloader 会话登录(较好但可能被检测) 更推荐的做法是使用 `Instaloader` 执行一次性登录并保存会话: ``` instaloader -l ``` 这会在本地保存会话。但频繁的粉丝/关注/故事变更仍可能导致检测,因为 Instagram 可能将其识别为自动化行为。 #### 选项 3:使用 Firefox Cookie 会话登录(推荐) 最可靠的方法是复用现有 Firefox 浏览器的 Instagram 会话,并手动指定用户代理。 在 Firefox 中登录账号(`your_insta_user`),然后运行: ``` instagram_monitor --import-firefox-session ``` 从 **v3.0** 开始,也可通过 **[Web 仪表板](#web-dashboard-mode)** 轻松完成此导入(无需命令行)。打开仪表板,进入 **Session** 页面并点击 **Detect Firefox Profiles**。 工具将检测可用的 Firefox 配置文件(含 `cookies.sqlite`)。如找到多个配置文件,系统会提示选择一个,导入会话并保存(通过 Instaloader)。 若需指定特定配置文件路径: ``` instagram_monitor --import-firefox-session --cookie-file "/path/cookies.sqlite" ``` 可通过 `FIREFOX_*_COOKIE` 配置选项永久调整默认的 Firefox Cookie 目录。 使用 Firefox Cookie 的会话登录方式让工具行为更接近真实用户。定期通过 Firefox 访问 Instagram(浏览、点赞、滚动等)有助于维持会话可信度。但应避免浏览器与工具操作重叠,以免触发可疑行为标记。 ##### 用户代理 建议使用与 Firefox 浏览器完全一致的 **用户代理字符串**: - 打开 Firefox,在地址栏输入 `about:support` - 在 **Application Basics** 部分复制 `User Agent` 值 - 通过 `USER_AGENT` 配置或 `--user-agent` 参数设置(v3.0 起也可通过 **[Web 仪表板](#web-dashboard-mode)** 设置) ### 时区 默认使用 `tzlocal` 自动检测时区,也可在 `instagram_monitor.conf` 中手动设置: ``` LOCAL_TIMEZONE='Europe/Warsaw' ``` 可通过以下命令列出 pytz 支持的所有时区: ``` python3 -c "import pytz; print('\n'.join(pytz.all_timezones))" ``` 从 **v3.0** 开始,也支持将时间格式从 24 小时制切换为 12 小时制(通过 `TIME_FORMAT_12H` 配置)。 ### SMTP 设置 如需使用邮件通知功能,请在 `instagram_monitor.conf` 中配置 SMTP 设置。 可通过 `--send-test-email` 参数验证配置: ``` instagram_monitor --send-test-email ``` ### 存储密钥 建议将 `SESSION_PASSWORD`、`SMTP_PASSWORD` 或 `WEBHOOK_URL` 等密钥存储为环境变量或使用 dotenv 文件。 在 **Linux/Unix/macOS/WSL** 上使用 `export` 设置: ``` export SESSION_PASSWORD="your_instagram_session_password" export SMTP_PASSWORD="your_smtp_password" export WEBHOOK_URL="https://discord.com/api/webhooks/..." ``` 在 **Windows 命令提示符** 使用 `set`,在 **PowerShell** 使用 `$env`。 或持久化存储在 dotenv 文件(推荐): ``` SESSION_PASSWORD="your_instagram_session_password" SMTP_PASSWORD="your_smtp_password" WEBHOOK_URL="https://discord.com/api/webhooks/..." ``` 默认工具会自动搜索名为 `.env` 的文件(优先当前目录,其次上级目录)。 可通过 `DOTENV_FILE` 或 `--env-file` 参数指定自定义文件: ``` instagram_monitor --env-file /path/.env-instagram_monitor ``` 也可通过 `DOTENV_FILE = "none"` 或 `--env-file none` 禁用自动搜索。 作为后备,也可将密钥存储在配置文件或源代码中。 ## 视图模式 工具提供三种可视化方式: 1. **传统文本模式**:标准 CLI 输出,适合日志记录和后台运行。 2. **终端仪表板**:丰富的实时终端界面,需 `rich` 库。 3. **Web 仪表板**:通过浏览器访问的现代化界面(默认 `http://127.0.0.1:8000/`)。 ### 传统文本模式 这是经典的命令行输出方式,特点如下: - **清晰顺序日志**:事件按发生顺序打印并带时间戳。 - **持久性**:适合后台运行(如通过 `nohup` 或 `tmux`),便于在终端滚动或日志文件中保留完整记录。 - **低开销**:资源占用少,兼容任意终端。 这是默认运行模式。 ### 终端仪表板 终端仪表板提供美观的实时更新界面,需要 `rich` 库。 通过 `--dashboard` 参数(或设置 `DASHBOARD_ENABLED = True`)启用。 主要特性**: - **可视化分析**:实时展示监控目标的粉丝数、关注数、帖子数、可见性及故事状态。 - **活动日志**:滚动显示最近几条事件。 - **交互式切换**:按 **'m'** 在「用户」与「配置」视图间切换。 - **远程控制**:在终端中直接启动、停止或重新检查所有目标。 - **运行状态**:标题栏显示工具版本、状态和总运行时长。 **快捷键**: - **'m'**:切换仪表板视图(用户/配置) - **'s'**:**启动全部**监控 - **'x'**:**停止全部**监控 - **'r'**:**重新检查全部**目标 - **'q'**:**退出**工具 - **'h'**:显示帮助(列出活动日志中的命令) ``` instagram_monitor target1 target2 --dashboard ```

instagram_monitor_terminal_dashboard_screenshot

### Web 仪表板 运行在本地的现代 Web 界面(默认地址:`http://127.0.0.1:8000/`)。 **主要特性**: - **完整控制面板**:通过浏览器直接添加或移除监控目标。 - **可视化分析**:实时展示监控目标的粉丝数、关注数、帖子数、可见性及故事状态。 - **活动日志**:滚动显示最近几条事件。 - **手动触发**:提供「重新检查」按钮,可立即更新特定或全部用户。 - **远程管理**:一键启动或停止特定或全部目标的监控。 - **同步**:终端与 Web 仪表板的设置变更可实时同步。 - **动态配置**:无需修改终端或配置文件即可配置会话和设置。 启用方式:使用 `--web-dashboard` 参数(或设置 `WEB_DASHBOARD_ENABLED = True`)。 **灵活用法**: - **标准监控**:提供命令行目标,仪表板作为实时镜像和远程控制界面。 - **仅控制面板模式**:仅启动 `--web-dashboard`(不传入初始目标),随后通过浏览器添加用户。 ``` # 从初始目标开始 instagram_monitor target1 target2 --web-dashboard # 作为纯控制面板开始 instagram_monitor --web-dashboard ``` Web 仪表板依赖 `flask`。若未安装,将被禁用,但控制台输出仍保持活跃。

instagram_monitor_web_dashboard_screenshot

instagram_monitor_web_dashboard_settings_screenshot

### 仪表板视图模式 终端与 Web 仪表板均支持两种信息密度: 1. **用户模式**(`user`): - 简洁界面,聚焦核心统计与最新活动。 - 适合“常驻”监控。 2. **配置模式**(`config`): - 展示全部内部设置。 - 显示用户代理字符串、小时范围、抖动状态等。 - 适用于审计配置与验证设置。 可通过 **'m'** 键或 Web 仪表板的切换按钮在两者间无缝切换。 ## 用法 ### Docker 用法(推荐) 使用 [Docker](https://www.docker.com) 是最简便的部署方式,可避免本地 Python 依赖管理。 #### Docker Hub 镜像 多架构预构建镜像位于 Docker Hub:`misiektoja/instagram-monitor` 运行并查看帮助: ``` docker run --rm -it misiektoja/instagram-monitor --help ``` #### 本地构建镜像 如需从源码构建: ``` docker build -t instagram_monitor:local . docker run --rm -it instagram_monitor:local --help ``` 若使用本地镜像,请将 `misiektoja/instagram-monitor` 替换为 `instagram_monitor:local`。 #### 常见运行场景 **Shell 说明**:以下示例使用 Bash/Zsh 变量(`$PWD`、`$HOME`)。在 PowerShell 中请使用 `${PWD}` 和 `${HOME}` 或替换为绝对路径。 1. **基础监控(持久化数据与会话存储)**: ``` docker run --rm -it --init -v "$PWD:/data" -v instagram_monitor_session:/home/instagram/.config/instaloader misiektoja/instagram-monitor ``` 此方式将生成的文件保存在当前目录,并在 Docker 卷 `instagram_monitor_session` 中保留 Instaloader 会话。 2. **使用配置文件与 dotenv**: ``` docker run --rm -it --init -v "$PWD:/data" -v instagram_monitor_session:/home/instagram/.config/instaloader misiektoja/instagram-monitor --config-file /data/instagram_monitor.conf --env-file /data/.env ``` 3. **运行 Web 仪表板并从主机浏览器访问**: 设置 `WEB_DASHBOARD_HOST = "0.0.0.0"` 在 `instagram_monitor.conf` 中,然后运行: ``` docker run --rm -it --init -v "$PWD:/data" -v instagram_monitor_session:/home/instagram/.config/instaloader -p 8000:8000 misiektoja/instagram-monitor --web-dashboard ``` 在主机浏览器中打开 [http://127.0.0.1:8000/](http://127.0.0.1:8000/)。 4. **在 Linux 主机上导入 Firefox 会话 Cookie**: ``` docker run --rm -it --init -v "$PWD:/data" -v instagram_monitor_session:/home/instagram/.config/instaloader -v "$HOME/.mozilla/firefox:/home/instagram/.mozilla/firefox:ro" misiektoja/instagram-monitor --import-firefox-session ``` 5. **在 macOS 主机上从明确的 Cookie 文件导入**: ``` docker run --rm -it --init -v "$PWD:/data" -v instagram_monitor_session:/home/instagram/.config/instaloader -v "$HOME/Library/Application Support/Firefox/Profiles//cookies.sqlite:/cookies/cookies.sqlite:ro" misiektoja/instagram-monitor --import-firefox-session --cookie-file /cookies/cookies.sqlite ``` 导入后,可像往常一样使用 `-u ` 运行,并将使用持久化卷中的会话文件。 ### 监控模式 在 [会话模式 1](#session-mode-1-without-logged-in-instagram-account-no-session-login)(未登录 Instagram 账号)下,只需将 Instagram 用户名作为命令行参数传入(示例中的 `target_insta_user`): ``` instagram_monitor ``` 在 [会话模式 2](#session-mode-2-with-logged-in-instagram-account-session-login)(使用会话登录)下,还需通过 `SESSION_USERNAME` 配置或 `-u` 参数指定你的账号名: ``` instagram_monitor -u ``` 从 **v3.0** 开始,也可直接启动 **[Web 仪表板](#web-dashboard-mode)** 并同时进行追踪: ``` instagram_monitor -u --web-dashboard ``` 默认情况下,工具会在以下位置查找配置文件 `instagram_monitor.conf`: - 当前目录 - 宿主目录(`~`) - 脚本所在目录 若生成配置文件但另存为其他名称或路径,可通过 `--config-file` 参数指定: ``` instagram_monitor --config-file /path/instagram_monitor_new.conf ``` 工具将持续运行直到被中断(`Ctrl+C`)。可使用 `tmux` 或 `screen` 保持后台运行。 可同时监控多个 Instagram 用户(单进程): ``` instagram_monitor target_user_1 target_user_2 target_user_3 ``` **注意**:也可通过 **[Web 仪表板](#web-dashboard-mode)** 动态添加或移除监控目标,无需重启工具。 为降低触发 Instagram 反机器人机制的风险,工具会**交错**启动各目标的监控循环(默认按 `INSTA_CHECK_INTERVAL` 自动分散)。可通过以下参数覆盖: ``` instagram_monitor target_user_1 target_user_2 --targets-stagger 300 ``` 工具会自动将输出保存至 `instagram_monitor_.log` 文件。保存方式如下: - 单目标模式:`` 为用户名。 - 多目标模式:`` 为按字母排序的用户名列表(用下划线连接)。 在会话登录(模式 2)下,工具还会保存以下文件: - `instagram__followings.json` - `instagram__followers.json` 借助此机制,无需每次重启都重新获取数据,也能检测自上次使用以来的变更。 下载关注者或关注列表时,会显示进度条,包含每请求名称数、总请求数、已用时长和预计剩余时间等信息。进度仅在终端显示,避免污染日志文件,最终完成状态会写入日志供参考。 工具还会将用户个人资料图片保存为 `instagram__profile_pic*.jpg` 文件。 同时,下载的帖子/Reels 图片与视频将保存至: - `instagram__post/reel_YYYYmmdd_HHMMSS.jpg` - `instagram__post/reel_YYYYmmdd_HHMMSS.mp4` 保存的故事图片与视频: - `instagram__story_YYYYmmdd_HHMMSS.jpg` - `instagram__story_YYYYmmdd_HHMMSS.mp4` ### 邮件通知 如需启用各类事件的邮件提醒: - 设置 `STATUS_NOTIFICATION = True` - 或使用 `-s` 参数 - 或在 **Web 仪表板** 的 **设置** 菜单中切换 同时获取关注变更的邮件提醒: - 设置FOLLOWERS_NOTIFICATION = True` - 或使用 `-m` 参数 - 或在 **Web 仪表板** 的 **设置** 菜单中切换 禁用错误邮件提醒(默认开启): - 设置 `ERROR_NOTIFICATION = False` - 或使用 `-e` 参数 - 或在 **Web 仪表板** 的 **设置** 菜单中切换 请确保已提前配置 SMTP 设置(参见 [SMTP 设置](#smtp-settings))。 示例邮件:

instagram_monitor_email_notifications

### Webhook 通知 工具支持 Webhook 通知(兼容 **Discord** 及其他服务),覆盖所有监控事件(帖子、Reels、故事、关注变更、粉丝、资料、可见性及错误)。

instagram_monitor_discord_screenshot

#### 1. 配置 Discord Webhook 若尚未使用 Discord,请按以下步骤获取 **Webhook URL**: 1. **创建服务器**:点击左侧“+”图标(“Add a Server”)→ **Create My Own** → **For me and my friends**。 2. **创建/编辑频道**:在服务器中找到 **#general** 频道(或新建),点击频道名称旁的 **⚙️** 图标。 3. **创建 Webhook**:进入 **Integrations** → **Webhooks** → **New Webhook**。 4. **复制 URL**:点击新建的 Webhook(常命名为 “Spidey Bot”)并复制 **Webhook URL**。 #### 2. 在工具中启用 - 在 `instagram_monitor.conf` 中设置 `WEBHOOK_ENABLED = True` 并填入 `WEBHOOK_URL` - 或通过 [环境变量](#storing-secrets) 或 `--webhook-url` 参数设置 - 或使用 `--webhook` 参数(若 URL 已在配置中) - 或在 **Web 仪表板** 的 **设置** 菜单中切换 #### 3. 测试配置 可通过发送测试通知验证配置: ``` # 从配置文件验证设置 instagram_monitor --send-test-webhook # 从命令行验证特定 URL instagram_monitor --webhook-url "https://discord.com/api/webhooks/..." --send-test-webhook ``` #### 4. 高级配置 默认所有 Webhook 通知类型(状态、粉丝、错误)均**禁用**。需显式启用: - 使用 `--webhook-status` 启用状态通知(新帖子、Reels、故事、资料、可见性、头像) - 使用 `--webhook-followers` 启用关注/粉丝变更通知 - 使用 `--webhook-errors` 启用错误通知 示例带显式控制: ``` # 启用 Webhook 并具体选择要发送的内容 instagram_monitor --webhook-url "..." --webhook-status --webhook-followers --webhook-errors ``` 配置文件选项(默认全部禁用): ``` WEBHOOK_ENABLED = False WEBHOOK_URL = "https://discord.com/api/webhooks/..." WEBHOOK_USERNAME = "Instagram Monitor" WEBHOOK_AVATAR_URL = "" WEBHOOK_STATUS_NOTIFICATION = False WEBHOOK_FOLLOWERS_NOTIFICATION = False WEBHOOK_ERROR_NOTIFICATION = False ``` ### 粉丝流失检测 启用后,工具会在**每次检查**时获取完整的关注者和关注列表,并比对用户名以识别变更。此功能适用于: - 有人取消关注后又有人新关注(总数不变) - 需要精确追踪谁关注/取消关注 - 需要全面监控所有粉丝活动 启用方式: - 设置 `FOLLOWERS_CHURN_DETECTION = True` - 或使用 `--followers-churn` 参数 - 或在 **Web 仪表板** 的 **设置** 菜单中切换 **注意**:此功能在 `SKIP_FOLLOW_CHANGES` 激活时自动禁用(因无法在抑制报告时进行详细追踪),且**仅支持会话模式 2**。 ``` instagram_monitor --followers-churn ``` **注意**:此功能依赖会话模式 2(会话登录),会增加 API 调用量(每次检查均获取完整列表),账号被封风险更高。 ### 跳过关注变更 若只想在仪表板中追踪关注/粉丝数量,但不希望收到变更通知或日志,可启用“跳过关注变更”模式。 启用后: - **通知**:邮件与 Webhook 的关注变更提醒将被抑制。 - **报告**:控制台输出与活动日志中的相关记录将被禁用。 - **CSV 导出**:CSV 文件中不写入“关注数/粉丝数”列。 - **性能**:跳过高开销的完整列表下载,节省带宽与 API 调用。 启用方式: - 在配置中设置 `SKIP_FOLLOW_CHANGES = True` - 或使用 `--skip-follow-changes` 参数 - 或在 **Web 仪表板** 的 **设置** 菜单中切换 ``` instagram_monitor --skip-follow-changes ``` ### CSV 导出 如需将所有用户活动与资料变更保存至 CSV 文件,请设置 `CSV_FILE` 或使用 `-b` 参数: ``` instagram_monitor -b instagram_username.csv ``` 文件将自动创建(若不存在)。 CSV 路径解析逻辑: 1. **绝对路径**: - 单目标模式:直接保存至指定位置。 - 多目标模式:以绝对路径为基准,为每个用户创建独立文件(如 `/path/file_user1.csv`),彼此隔离。 2. **相对路径 + OUTPUT_DIR**:若提供相对路径并配置了 `OUTPUT_DIR`,文件将保存至 `csvs/` 子目录: - 单目标模式:`OUTPUT_DIR/csvs/` - 多目标模式:`OUTPUT_DIR//csvs/` 3. **相对路径 + 无 OUTPUT_DIR**: - 单目标模式:保存在当前工作目录。 - 多目标模式:为每个用户创建 `_.csv`。 ### 输出目录 默认所有生成文件(JSON、图片、视频、日志)保存在当前工作目录。 可通过 `-o` / `--output-dir` 参数或 `OUTPUT_DIR` 配置项指定自定义根目录: ``` instagram_monitor -o /path/to/downloads ``` 文件组织方式取决于监控目标数量: - **单目标模式**:所有文件直接位于 `OUTPUT_DIR` 的子目录中: - `OUTPUT_DIR/images/` - `OUTPUT_DIR/videos/` - `OUTPUT_DIR/json/` - `OUTPUT_DIR/logs/` - `OUTPUT_DIR/csvs/` - **多目标模式**:每个用户拥有独立子目录: - `OUTPUT_DIR//images/` - `OUTPUT_DIR//videos/` - `OUTPUT_DIR//json/` - `OUTPUT_DIR//logs/` - `OUTPUT_DIR//csvs/` 通用消息(如摘要屏幕或全局错误)会自动广播至所有活动日志文件。 这有助于在监控多个用户时保持文件整洁。 ### 已更改个人图片检测 工具可检测被监控用户个人资料的图片变更。通知会显示在控制台,并在启用 `-s` 时通过邮件发送。 此功能默认启用。禁用方式: - 设置 `DETECT_CHANGED_PROFILE_PIC = False` - 或使用 `-k` 参数 - 或在 **Web 仪表板** 的 **设置** 菜单中切换 #### 工作原理 由于 Instagram 会周期性更改个人资料图片 URL(即使图片内容未变),工具通过**字节级比对 JPEG 文件**来检测真实变更。 首次运行时,当前头像会被保存为 `instagram__profile_pic.jpg`。 后续每次检查会获取新图片并与保存版本逐字节比较。 若检测到变更,旧图片将重命名为 `instagram__profile_pic_old.jpg`,新图片保存为: - `instagram__profile_pic.jpg`(当前) - `instagram__profile_pic_YYmmdd_HHMM.jpg`(历史记录) #### 空个人图片检测 工具内置对空个人资料的检测。Instagram API 不会明确标识空头像,因此工具通过比对一个空头像模板(所有用户均相同的二进制特征)来识别。 要启用此功能: - 下载 [instagram_profile_pic_empty.jpg](https://raw.githubusercontent.com/misiektoja/instagram_monitor/main/instagram_profile_pic_empty.jpg) 文件 - 放置在与工具运行目录相同的路径中。**注意**:若通过 `pip` 安装,此文件已内置;但当前目录中的本地文件优先级更高。 未提供该文件时,工具会将空头像视为普通图片(例如用户移除头像会被识别为变更而非移除)。 ### 在终端显示图片 若已安装 `imgcat`,可将个人资料图片与故事/帖子图片直接在终端中展示。 设置 `IMAT_PATH` 配置项为其二进制文件路径。 若仅提供二进制名称,工具会在 `PATH` 中自动搜索。 设为空值可禁用此功能。 ### 检查间隔 如需自定义轮询间隔,请使用 `-c` 参数(或 `INSTA_CHECK_INTERVAL` 配置项): ``` instagram_monitor -c 3600 ``` **注意**:也可通过 **Web 仪表板** 的 **设置** 菜单实时调整检查间隔与随机抖动。 不推荐将间隔设置低于 1 小时,否则容易被 Instagram 的自动化检测机制识别。 默认情况下,轮询间隔会从一个范围内随机选取: ``` [ INSTA_CHECK_INTERVAL (-c) - RANDOM_SLEEP_DIFF_LOW (-i) ] ⇄ [ INSTA_CHECK_INTERVAL (-c) + RANDOM_SLEEP_DIFF_HIGH (-j) ] ``` 这意味着每次检查会在围绕 `INSTA_CHECK_INTERVAL` 的区间内随机延迟。 因此控制台与邮件通知中显示的检查间隔为一个随机值。 此外,还可设定每日特定时段仅执行检查(**时段检查**): - 启用 `CHECK_POSTS_IN_HOURS_RANGE = True` - 配置 `MIN/MAX_H1/H2` 选项(见下文) 更多信息请参见 [使用时段检查](#use-hour-range-checking)。 ### 信号控制(macOS/Linux/Unix) 工具支持多种信号,可在无需重启的情况下动态调整行为: | 信号 | 描述 | |------|------| | **USR1** | 切换邮件通知(新帖子、Reels/故事、关注变更、资料、可见性、头像)(`-s`) | | **USR2** | 切换关注变更邮件通知(`-m`) | | **TRAP** | 增加检查间隔(+5 分钟) | | **ABRT** | 减少检查间隔(-5 分钟) | | **HUP** | 从 `.env` 文件重载密钥 | 发送信号示例: ``` pkill -USR1 -f "instagram_monitor " ``` Windows 支持的信号有限,此功能仅在 Linux/macOS/Unix 上可用。 ### 使用 GRC 为日志输出上色 工具原生支持终端彩色输出(自 v3.0 起,参见 `COLORED_OUTPUT` 与 `COLOR_THEME` 配置),但你也可以使用 [GRC](https://github.com/garabik/grc) 对日志文件进行着色。 添加至 GRC 配置(`~/.grc/grc.conf`): ``` # 监控日志文件 .*_monitor.*\.log conf.monitor_logs ``` 然后将 [conf.monitor_logs](https://raw.githubusercontent.com/misiektoja/instagram_monitor/refs/heads/main/grc/conf.monitor_logs) 复制到 `~/.grc/`,日志文件即可使用 `grc` 命令着色显示。 示例: ``` grc tail -F -n 100 instagram_monitor_.log ``` ## 如何防止被挑战与账号封禁 如前所述,强烈建议使用专用的 Instagram 账号。风险总体较低,但 Instagram 可能将其标记为自动化工具并触发需手动处理的验证。以下最佳实践可帮助降低风险。 ### 使用 Firefox Cookie 会话登录 使用 Firefox 浏览器登录,确保会话对 Instagram 看起来自然一致。操作指引请参见 [此处](#option-3-session-login-using-firefox-cookies-recommended)。 ### 设置正确的用户代理 始终通过 `USER_AGENT` 配置或 `--user-agent` 参数使用与 Firefox 浏览器完全一致的用户代理字符串。这有助于保持设备一致性。指引请参见 [此处](#user-agent)。 ### 启用“模拟人类”模式 自 v1.7 起,工具提供实验性 **Be Human** 模式,使行为更接近真实用户以降低检测概率。 默认禁用。可通过 `BE_HUMAN` 配置、`--be-human` 参数或 **Web 仪表板** 的 **设置** 菜单启用。 该模式仅在会话模式 2 下生效。 每次检查周期后,工具会随机执行一项或多项无害操作,例如: - 浏览探索页面:加载一条推荐帖子 - 打开自己的资料页 - 浏览一个标签页 - 查看一个你正在关注的用户资料 默认每天执行约 5 次分散操作,可通过 `DAILY_HUMAN_HITS` 调整。 若想查看工具的人类行为,可启用 `BE_HUMAN_VERBOSE`。 ### 启用“抖动”模式 自 v1.7 起,工具支持在每次 HTTP 请求前加入内置的抖动/退避层,使行为更类人。 这会在请求前添加 0.8–3 秒随机延迟,并在遇到 Instagram 的 429“请求过多”或挑战时自动重试(指数退避:60s → 120s → 240s 并附加抖动)。 这显著降低检测风险,但会使工具变慢。 通过 `ENABLE_JITTER` 配置或 `--enable-jitter` 参数启用。 如需查看详细的抖动输出,可设置 `JITTER_VERBOSE = True`。 ### 保持合理的轮询间隔 避免将轮询间隔(`INSTA_CHECK_INTERVAL` 或 `-c` 参数)设置得过低。建议至少 1 小时,更长更佳。例如,我在测试账号上设置为 12 小时,每天仅检查 2 次。 同时考虑随机化检查间隔(如前所述)。 **重要**:当同时监控多个用户时,总请求频率会随目标数量线性增长。例如,监控 5 个用户、间隔 1 小时意味着每小时 5 次请求。为保持每个账号的请求频率不变,应按比例增大检查间隔。若单个账号设为 1 小时,监控 5 个账号时建议设为 5 小时(或更高)。工具会自动在目标间交错请求,但整体频率仍需根据总目标数调整。 ### 使用时段检查 工具支持限制仅在一天中的特定时段获取更新,有助于避开可疑的自动化行为。 启用方式:设置 `CHECK_POSTS_IN_HOURS_RANGE = True`,并配置允许的时间窗口: - `MIN_H1` / `MAX_H1`:第一时段(默认 0–4,即午夜至 4:59) - `MIN_H2` / `MAX_H2`:第二时段(默认 11–23,即 11:00 至 23:59) 可定义最多两个不重叠或重叠的时段。禁用任一时段请将 MIN 与 MAX 均设为 0。 **注意**:也可通过 **Web 仪表板** 的 **设置** 菜单实时启用与配置。 示例:仅在工作时间(9:00–17:00)检查: - `MIN_H1 = 9` - `MAX_H1 = 17` - `MIN_H2 = 0` - `MAX_H2 = 0` 时段以配置时区解释(参见 [时区](#time-zone))。 如需调试,可设置 `HOURS_VERBOSE = True` 以输出获取更新或跳过的详细日志。 此功能与合理的轮询间隔结合使用时,可使行为模式更自然。 ### 不要监控过多用户 建议限制单个账号监控的目标数量,尤其是高频更新的账号。使用多用户监控时,总请求量会随目标数增加。在某些情况下,最好为额外用户创建独立账号并从不同 IP 运行,以降低被检测风险。 ### 仅使用所需功能 对某些数据类型的频繁更新(如新故事或帖子/Reels)比个人资料变更或关注者列表更容易被标记为自动化工具。 如非必需,可关闭相关采集: - 使用 `-r` 跳过获取故事详情 - 使用 `-w` 跳过获取帖子/Reels 详情 - 使用 `-g` 跳过获取关注列表 - 使用 `-f` 跳过获取粉丝列表 **注意**:所有这些细粒度开关也可通过 **Web 仪表板** 的 **设置** 菜单实时切换。 ### 启用两步验证(2FA) 为目标账号启用 2FA,可提升账号度并降低安全标记概率。 ### 避免使用 VPN 避免通过 VPN 登录,尤其是跨区域 IP。账号的突然位置变化可能触发 Instagram 的安全机制。 ### 将账号用于正常活动 若为监控创建了新账号,在使用 **Firefox 会话登录** 的几天内,应模拟真实用户行为:浏览内容、发布故事或 Reels、留言等。这有助于建立自然行为画像。 但应避免浏览器与工具操作重叠,同时进行可能触发可疑行为标记。 ## 故障排除 如遇问题,请使用 `--debug` 参数运行以查看完整 HTTP 流量与脚本内部逻辑。若无法自行解决,请在 GitHub 创建新问题。 ### 选择合适的日志级别 - **默认模式**:安静且简洁。仅记录变更(新帖子、资料更新等)与关键错误,适合长期生产使用。 - **详细模式(`--verbose`)**:推荐大多数用户使用。显示下次检查计划时间并确认循环正常运行。 - **调试模式(`--debug`)**:开发者或问题排查使用。展示完整 HTTP 流量与脚本逻辑。 **注意**:详细与调试模式均可通过 **Web 仪表板** 的 **设置** 菜单实时切换。 ## 更新日志 详见 [RELEASE_NOTES.md](https://github.com/misiektoja/instagram_monitor/blob/main/RELEASE_NOTES.md)。 ## 维护者 - 👤 **misiektoja** ([@misiektoja](https://github.com/misiektoja)) - 👤 **tomballgithub** ([@tomballgithub](https://github.com/tomballgithub)) ## 许可证 根据 GPLv3 授权。详见 [LICENSE](https://github.com/misiektoja/instagram_monitor/blob/main/LICENSE)。
标签:BeEF, Docker, ESC4, Instagram监控, OSINT, Python, SEO, WSL, 仪表盘, 公开/私密状态检测, 关注者变化, 内容捕获, 即时通知, 图片与故事监控, 字符串匹配, 安全防御评估, 实时追踪, 推送告警, 无后门, 爬虫, 生物信息更新, 用户行为分析, 监控工具, 社交媒体监控, 请求拦截, 逆向工具