CayberMods/SocMed
GitHub: CayberMods/SocMed
一款用于扫描网站社交媒体链接并自动检测失效链接劫持漏洞的安全审计工具。
Stars: 1 | Forks: 0
SOCMED - 社交媒体链接查找工具
高级社交媒体链接发现与失效链接劫持检测工具
跨 15+ 平台查找、验证和分析社交媒体链接,并自动检测漏洞
## 目录
- [概述](#overview)
- [什么是失效链接劫持?](#what-is-broken-link-hijacking)
- [功能](#features)
- [安装说明](#installation)
- [配置](#configuration)
- [用法](#usage)
- [失效链接检测](#broken-link-detection)
- [数据库与历史记录](#database--history)
- [代理支持](#proxy-support)
- [自定义规则](#custom-rules)
- [颜色支持](#color-support)
- [结果与解读](#results--interpretation)
- [故障排除](#troubleshooting)
- [贡献](#contributing)
- [免责声明](#disclaimer)
- [资源](#resources)
- [致谢](#acknowledgments)
- [许可证](#License)
## 概述
**SOCMED v2.0** 是一款用于发现、验证和分析网站上社交媒体链接的高级工具。它专为帮助网络安全专业人员通过自动化验证来识别潜在的**失效链接劫持**漏洞而设计。
### 什么是失效链接劫持?
**失效链接劫持**是一种利用技术,攻击者会利用不再活跃的社交媒体链接(失效/死链)。当网站包含指向已被删除或停用的社交媒体账号的链接时:
- 攻击者可以重新注册该用户名
- 劫持网站的访客流量
- 实施钓鱼或进一步攻击
- 损害公司的声誉和品牌信任度
### 应用场景
- 安全审计与渗透测试
- OSINT(开源情报)收集
- 品牌保护监控
- 漏洞评估
- 数字足迹分析
- 合规性检查
## 功能
| 功能 | 描述 | 状态 |
|---------|-------------|--------|
| **多平台** | 支持 15+ 社交媒体平台 | 是 |
| **失效链接检测** | 自动识别失效/死链 | 是 |
| **数据库存储** | 使用 SQLite 数据库记录扫描历史 | 是 |
| **代理支持** | 带有身份验证的 HTTP/HTTPS 代理 | 是 |
| **速率限制** | 自动速率限制以避免被检测 | 是 |
| **User-Agent 轮换** | 每次请求随机生成 User-Agent | 是 |
| **十六进制颜色支持** | True Color 与 256 色终端显示 | 是 |
| **并发处理** | 多线程以实现最高速度 | 是 |
| **自定义规则** | 基于 YAML 的自定义搜索规则 | 是 |
| **多种导出格式** | JSON、CSV、TXT 和 SQLite | 是 |
| **进度条** | 实时可视化进度指示器 | 是 |
| **重定向处理** | 自动跟踪重定向 | 是 |
| **选择性扫描** | 选择特定平台或全部扫描 | 是 |
| **详细模式** | 详细的调试信息 | 是 |
| **扫描历史** | 查看和分析过去的扫描记录 | 是 |
## 安装说明
### 前置条件
```
# Python 3.6 或更高版本
python --version
# 安装 pip
pip --version
```
克隆仓库
```
# Clone the repository
git clone https://github.com/CayberMods/SocMed.git
cd SocMed
```
安装依赖
```
# 安装所有必需的包
pip install -r requirements.txt
```
## 配置
config/config.yaml
创建一个 config/config.yaml 文件进行高级配置:
```
general:
timeout: 10
workers: 20
verbose: false
user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
platforms:
instagram: true
telegram: true
youtube: true
tiktok: true
twitter: true
facebook: false
linkedin: false
github: false
reddit: false
discord: false
spotify: false
medium: false
twitch: false
proxy:
enabled: false
type: "http" # http, https, socks5
host: "127.0.0.1"
port: 8080
username: ""
password: ""
output:
format: "txt" # txt, json, csv
save_results: true
filename: "results"
database:
enabled: false
type: "sqlite" # sqlite, postgresql, mysql
path: "scans.db"
rate_limit:
enabled: true
max_requests: 50
time_window: 60 # seconds
auto_adjust: true
user_agents:
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
- "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36"
```
使用配置
```
python socmed.py -l domains.txt -config config/config.yaml -all
```
## 用法
基本用法
```
python socmed.py -l
[OPTIONS]
```
用法示例
扫描所有平台
```
python socmed.py -l domains.txt -all
```
扫描特定平台
```
# 仅扫描 Instagram & Telegram
python socmed.py -l domains.txt -ig -tele
# 扫描 Instagram, YouTube, Twitter
python socmed.py -l domains.txt -ig -yt -tw
```
使用自定义规则
```
python socmed.py -l domains.txt -custom custom_rules.yaml -v
```
使用代理
```
python socmed.py -l domains.txt -all --proxy http://user:pass@127.0.0.1:8080
```
导出结果
```
# JSON 导出
python socmed.py -l domains.txt -all --json -o results
# CSV 导出
python socmed.py -l domains.txt -all --csv -o results
# 保存到 database
python socmed.py -l domains.txt -all --db
```
查看历史记录
```
python socmed.py --history
```
测试颜色支持
```
python socmed.py --test-colors
```
完整参数列表
参数 简写 描述 默认值
- --list -l 域名列表文件(必需)
- --output -o 输出结果文件
- --timeout -t 请求超时(秒) 10
- --workers -w 并发 worker 数量 20
- --verbose -v 详细模式 False
- --test-colors 测试颜色支持
- --json 将结果导出为 JSON False
- --csv 将结果导出为 CSV False
- --db 将结果保存到数据库 False
- --history 显示扫描历史 False
- --proxy 代理 URL
- --config 配置文件 (YAML)
- --instagram -ig 扫描 Instagram False
- --telegram -tele 扫描 Telegram False
- --youtube -yt 扫描 YouTube False
- --tiktok -tt 扫描 TikTok False
- --twitter -tw 扫描 Twitter/X False
- --facebook -fb 扫描 Facebook False
- --linkedin -in 扫描 LinkedIn False
- --github -gh 扫描 GitHub False
- --reddit -rd 扫描 Reddit False
- --discord -dc 扫描 Discord False
- --spotify -sp 扫描 Spotify False
- --medium -md 扫描 Medium False
- --twitch -tc 扫描 Twitch False
- --all -all 扫描所有平台 False
- --custom-method -custom 自定义规则 YAML 文件
支持的平台
- 平台 标志 检测模式 失效检测
- Instagram -ig instagram.com/[username] 是
- Telegram -tele t.me/[username] 是
- YouTube -yt youtube.com/@[channel] 是
- TikTok -tt tiktok.com/@[username] 是
- Twitter/X -tw twitter.com/[username] 是
- Facebook -fb facebook.com/[username] 是
- LinkedIn -in linkedin.com/in/[username] 是
- GitHub -gh github.com/[username] 是
- Reddit -rd reddit.com/user/[username] 是
- Discord -dc discord.gg/[invite] 是
- Spotify -sp open.spotify.com/[id] 是
- Medium -md medium.com/@[username] 是
- Twitch -tc twitch.tv/[username] 是
## 失效链接检测
工作原理
SOCMED v2.0 使用智能检测算法来验证社交媒体链接是否活跃或已失效:
1. HTTP 状态码检查 - 检测 404、410 和其他错误代码
2. 内容分析 - 解析 HTML 以查找错误消息和模式
3. 标题验证 - 检查是否包含“Page Not Found”等类似标题
4. Meta 标签检查 - 分析 OG 标签以获取错误指示
5. 元素检测 - 搜索特定的错误 HTML 元素
各平台检测方法
平台 检测方法
Instagram 状态码、标题检查、meta 标签、错误关键字
Twitter/X 状态码、标题检查、错误关键字
YouTube 状态码、标题检查、iframe 检测
Facebook 状态码、标题检查、meta 标签、错误关键字
LinkedIn 状态码、标题检查、H1 标签、错误关键字
GitHub 状态码、标题检查、错误关键字
Discord 状态码、标题检查、邀请有效性验证
TikTok 状态码、标题检查、内容分析
Telegram 状态码、标题检查、内容分析
实际输出示例
```
[BROKEN-INSTAGRAM] https://instagram.com/deleteduser -> https://site.com - HTTP 404
[ACTIVE-INSTAGRAM] https://instagram.com/activeuser -> https://site.com
[BROKEN-TWITTER] https://twitter.com/suspendedaccount -> https://site.com - Content Check: Error keywords found
[ACTIVE-TWITTER] https://twitter.com/realuser -> https://site.com
[BROKEN-YOUTUBE] https://youtube.com/@deletedchannel -> https://site.com - HTTP 404
```
## 数据库与历史记录
数据库功能
- · SQLite 存储 - 轻量级、可移植的数据库
- · 扫描历史 - 跟踪所有过去的扫描记录
- · 时间戳 - 记录每个链接的发现时间
- · 元数据 - 存储状态、平台、响应时间
- · 查询支持 - 查看和过滤历史数据
查看历史记录
```
# 显示最近的扫描
python socmed.py --history
# 输出示例:
# 2026-07-07 10:30:45 | example.com | instagram | https://instagram.com/user
# 2026-07-07 10:30:46 | example.com | twitter | https://twitter.com/user
```
数据库 Schema
```
CREATE TABLE scans (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT,
domain TEXT,
status INTEGER,
platform TEXT,
link TEXT,
server TEXT,
response_time REAL
);
```
## 代理支持
代理配置
SOCMED 支持带有身份验证的 HTTP/HTTPS 代理:
```
# Basic proxy
python socmed.py -l domains.txt -all --proxy http://127.0.0.1:8080
# Authenticated proxy
python socmed.py -l domains.txt -all --proxy http://user:pass@127.0.0.1:8080
# HTTPS proxy
python socmed.py -l domains.txt -all --proxy https://127.0.0.1:8080
```
在 config/config.yaml 中配置代理
```
proxy:
enabled: true
type: http
host: 127.0.0.1
port: 8080
username: "username"
password: "password"
```
## 自定义规则
YAML 文件格式
```
- name: platform_name
description: Optional description
creator: YourName
color: '#HEXCODE'
regex:
- 'regex_pattern_1'
- 'regex_pattern_2'
```
示例 custom_rules.yaml
```
# 附加平台的自定义规则
- name: instagram
description: Find Instagram profiles
creator: CayberMods
color: '#E4405F'
regex:
- 'instagram\.com\/([a-zA-Z0-9_\.]+)'
- 'instagr\.am\/([a-zA-Z0-9_\.]+)'
- name: twitter
description: Find Twitter profiles
creator: CayberMods
color: '#1DA1F2'
regex:
- 'twitter\.com\/([a-zA-Z0-9_]+)'
- 'x\.com\/([a-zA-Z0-9_]+)'
- name: threads
description: Find Threads profiles
creator: CayberMods
color: '#FF0080'
regex:
- 'threads\.net\/(@[a-zA-Z0-9_\.]+)'
- name: bluesky
description: Find Bluesky profiles
creator: CayberMods
color: '#1185FE'
regex:
- 'bsky\.app\/profile\/([a-zA-Z0-9_\.]+)'
```
使用自定义规则
```
# 使用自定义规则扫描
python socmed.py -l domains.txt -custom custom_rules.yaml -all
# Verbose 调试
python socmed.py -l domains.txt -custom custom_rules.yaml -v
```
## 颜色支持
True Color (24-bit)
支持的终端:
- · iTerm2
- · VS Code Terminal
- · Windows Terminal
- · GNOME Terminal
- · Konsole
- · Kitty
- · Alacritty
- · WezTerm
256 色模式
不支持 True Color 的终端的回退方案:
- · xterm-256color
- · 大多数 SSH 客户端
- · 旧版终端
测试颜色支持
```
python socmed.py --test-colors
```
输出:
```
Testing color support...
True color supported
Testing hex colors:
████ #FF0000 RGB(255, 0, 0)
████ #00FF00 RGB(0, 255, 0)
████ #0000FF RGB(0, 0, 255)
████ #FF00FF RGB(255, 0, 255)
████ #FFFF00 RGB(255, 255, 0)
████ #00FFFF RGB(0, 255, 255)
████ #FF6B6B RGB(255, 107, 107)
████ #4ECDC4 RGB(78, 205, 196)
```
## 结果与解读
状态码
- 代码 描述
- 200 网站活跃,已找到链接
- 301-302 重定向,已自动跟踪
- 303 See Other 重定向
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 500 Internal Server Error
- 502 Bad Gateway
- 503 Service Unavailable
## 故障排除
连接问题
```
# 增加 timeout
python socmed.py -l domains.txt -all -t 30
# 减少 workers
python socmed.py -l domains.txt -all -w 5
# 使用 proxy
python socmed.py -l domains.txt -all --proxy http://127.0.0.1:8080
```
颜色问题
```
# 测试颜色支持
python socmed.py --test-colors
# 强制 256 色
export TERM=xterm-256color
python socmed.py -l domains.txt -all
# 禁用颜色
export NO_COLOR=1
python socmed.py -l domains.txt -all
```
YAML 问题
```
# 检查 YAML 语法
python -c "import yaml; yaml.safe_load(open('custom_rules.yaml'))"
# Verbose 调试模式
python socmed.py -l domains.txt -custom custom_rules.yaml -v
```
速率限制
```
# 禁用 rate limiting
# 编辑 config/config.yaml: rate_limit.enabled: false
# 调整 rate limits
# 编辑 config/config.yaml: rate_limit.max_requests: 20
```
数据库问题
```
# 重置 database
rm scans.db
python socmed.py -l domains.txt -all --db
# 检查 database
sqlite3 scans.db "SELECT * FROM scans;"
```
## 贡献
我们热烈欢迎社区的贡献!
如何贡献
1. Fork 该仓库
2. 创建一个新分支:git checkout -b feature/AmazingFeature
3. 提交您的更改:git commit -m 'Add AmazingFeature'
4. 推送到分支:git push origin feature/AmazingFeature
5. 发起一个 Pull Request
需要贡献的领域
- · 错误修复与问题报告
- · 新功能与增强
- · 文档与教程
- · UI/UX 改进
- · 性能优化
- · 安全性改进
- · 新平台支持
## 免责声明
```
IMPORTANT: This tool was created for EDUCATIONAL purposes and ETHICAL SECURITY TESTING.
```
本工具的使用:
允许:
- · 在您拥有测试权限的网站上使用
- · 用于合法目的,例如安全审计
- · 必须遵守适用法律
禁止:
- · 用于非法或恶意活动
- · 用于破坏网站运营
- · 用于未经授权的访问
作者不对以下情况负责:
- · 将此工具用于非法目的
- · 遭受的任何损害或损失
- · 用户违反法律的行为
使用此工具,即表示您同意:
- · 对您使用本工具的行为承担全部责任
- · 遵守所有适用的法律和法规
- · 合乎道德和负责任地使用本工具
## 资源
官方文档
- · Python 官方文档
- · Requests 库
- · Colorama 文档
- · YAML 规范
安全资源
- · OWASP 失效链接劫持
- · HackerOne 报告
- · Bug Bounty 技巧
## 致谢
- · Python 社区 - 提供了一门出色的编程语言
- · Requests 团队 - 提供了强大的 HTTP 库
- · Colorama 开发者 - 提供了终端颜色支持
- · 安全研究人员 - 分享了知识和最佳实践
- · 开源社区 - 提供了工具和灵感
版本历史记录
版本 日期 变更
- 2.0 2026-07-07 重大更新:数据库、代理、失效链接检测、导出格式
- 1.0 2026-01-01 包含基础功能的初始版本
v2.0 新特性
- · 用于扫描历史的 SQLite 数据库
- · 带有身份验证的代理支持
- · 高级失效链接检测
- · JSON、CSV 导出格式
- · 速率限制
- · User-Agent 轮换
- · 进度条
- · 增强型颜色支持
- · 全面的日志记录
- · 配置文件支持
## 许可证
本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
版权所有 (c) 2026 CayberMods
特此免费授予任何获得本软件及相关文档文件(以下简称“软件”)副本的人,
不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、
发布、分发、再许可和/或销售软件副本的权利,
并允许向其提供软件的人员这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或大部分内容中。
本软件按“原样”提供,不提供任何形式的明示或暗示的担保,
包括但不限于适销性、特定用途的适用性和非侵权性的担保。
在任何情况下,作者或版权持有人均不对因本软件或使用本软件或其他交易引起的或与之相关的任何索赔、
损害或其他责任承担责任。
出于对网络安全社区的热爱而制作
保持安全,保持可靠,坚守道德!
标签:CISA项目, Python, 后端开发, 失效链接劫持, 实时处理, 无后门, 社交媒体, 逆向工具