misiektoja/instagram_monitor
GitHub: misiektoja/instagram_monitor
一个基于Python的Instagram实时监控工具,提供仪表板与告警,用于追踪账户变更与媒体采集。
Stars: 847 | Forks: 67
# 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
```
```
此方式将生成的文件保存在当前目录,并在 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))。
示例邮件:
--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, 仪表盘, 公开/私密状态检测, 关注者变化, 内容捕获, 即时通知, 图片与故事监控, 字符串匹配, 安全防御评估, 实时追踪, 推送告警, 无后门, 爬虫, 生物信息更新, 用户行为分析, 监控工具, 社交媒体监控, 请求拦截, 逆向工具