sarbeshmallick/MerchantGuard
GitHub: sarbeshmallick/MerchantGuard
MerchantGuard 是一个基于 Python 的规则驱动型商户风险评估引擎,通过自动提取网站证据并关联外部基础设施情报,生成可解释的商户风险报告以辅助支付行业的商户验证流程。
Stars: 0 | Forks: 0
# MerchantGuard
### 基于规则的商户风险评估引擎
MerchantGuard 是一个基于 Python 的模块化商户风险评估引擎,可自动分析商户网站,提取公开的业务和技术信号,将其与外部基础设施情报进行关联,并使用可配置的基于规则的评估引擎生成可解释的商户风险评估。
与仅收集网站数据的传统 Web 爬虫不同,MerchantGuard 将提取的信息转化为结构化证据,通过透明的业务规则对其进行评估,并生成能够支持商户验证工作流的综合商户风险报告。
本项目是一个教育性实现,灵感来源于支付行业中使用的现实商户入驻和风险评估流程。它演示了如何将公开可用的网站情报、基础设施分析和可解释的业务规则结合起来,以实现部分商户验证的自动化。
# 目录
- 概述
- 问题背景
- 为什么选择 MerchantGuard?
- 核心功能
- 技术栈
- 高层架构
- 风险评估管道
# 概述
MerchantGuard 将多个软件工程学科整合到一个工作流程中:
- 后端开发
- Web 爬取与 HTML 解析
- 浏览器自动化
- 安全自动化
- 风险分析
- 基于规则的决策引擎
- 开源情报 (OSINT)
- Python 自动化
MerchantGuard 没有将商户网站仅仅视为 HTML 页面的集合,而是将其视为证据来源。
该引擎提取商户信息,验证技术基础设施,关联外部情报,应用可配置的业务规则,并生成可解释的商户风险评估。
其结果是一个透明的评估过程,每一项发现都有证据支持,而不是一个黑盒分数。
# 问题背景
在允许商户处理在线支付之前,金融机构和支付服务提供商通常会执行一系列验证检查,以确定该业务是否合法以及是否需要额外审查。
其中许多检查涉及手动收集信息,例如:
- 业务身份
- 联系信息
- 法律政策页面
- 域名注册详情
- SSL/TLS 配置
- DNS 记录
- 网站安全指标
- 公开业务存在
- 营销声明
- 技术网站特征
这些信息通常分散在多个来源中,需要人工进行调查。
MerchantGuard 通过收集公开可用的信息,将其与外部情报相关联,并使用透明的基于规则的逻辑对其进行评估,从而使这一过程实现自动化。
# 为什么选择 MerchantGuard?
MerchantGuard **不仅仅是一个 Web 爬虫。**
爬虫只是更大的基于证据的风险评估管道的第一阶段。
该项目的设计理念是,公开可观察的信号可以转化为结构化证据,并通过可解释的业务规则进行评估。
MerchantGuard 不再仅仅生成原始的抓取数据,而是回答以下问题:
- 网站是否提供了充足的业务身份信息?
- 商户是否使用了安全的基础设施?
- 是否有法律政策页面?
- 域名注册是否引发了额外的验证要求?
- 网站与公开可用的信息之间是否存在不一致?
- 哪些观察结果应增加商户的整体风险?
每次触发的发现都包括:
- 检测到的证据
- 触发的规则
- 风险类别
- 严重程度
- 评估依据
- 对最终评估的总体贡献
这使得生成的报告透明且易于理解。
# 核心功能
### 网站情报
- 自动抓取网站
- 多页面发现(关于、联系、隐私、条款、退款、发货)
- 使用 Playwright 的 JavaScript 渲染回退
- HTML 解析和结构化内容提取
### 证据提取
- 业务身份
- 联系信息
- 电子邮件地址
- 电话号码
- 业务地址
- 法律页面
- 营销声明
- 支付指标
- 社交媒体链接
- 下载内容
- 外部链接
- 嵌入的脚本
- 混合内容检测
### 外部关联
- WHOIS 分析
- DNS 记录验证
- SSL/TLS 证书检查
- 域名注册分析
- 公开业务搜索关联
### 基于规则的风险引擎
- 可配置的规则目录
- 可解释的发现
- 严重程度分类
- 风险分类
- 基于证据的观察
### 报告
- 结构化 JSON 输出
- 人类可读的控制台报告
- 可解释的商户发现
- 商户总体风险评分
- 风险评级
- 建议摘要
# 技术栈
| 类别 | 技术 |
|-----------|--------------|
| 语言 | Python 3 |
| Web 爬取 | Requests |
| HTML 解析 | BeautifulSoup4 |
| 浏览器自动化 | Playwright |
| 域名情报 | python-whois, dnspython, tldextract |
| 数据模型 | Python Dataclasses |
| 报告 | JSON, Rich |
| 核心实用程序 | pathlib, logging, regex, typing, ssl, socket |
# 高层架构
```
Merchant Website
│
▼
Website Extraction Layer
│
▼
Structured Website Evidence
│
▼
External Intelligence Correlation
(WHOIS • DNS • SSL • Public Search)
│
▼
Rule Evaluation Engine
│
▼
Risk Scoring & Categorisation
│
▼
Structured Merchant Risk Report
```
MerchantGuard 遵循模块化的管道架构,其中每个组件都执行单一职责。证据在系统中单向流动,使评估过程更易于理解、维护和扩展。
# 风险评估管道
```
Input URL
│
▼
Website Crawling
│
▼
Evidence Extraction
│
▼
External Correlation
│
▼
Rule Evaluation
│
▼
Risk Scoring
│
▼
JSON + Console Report
```
每个阶段都在前一个阶段的基础上进行丰富,直到生成最终的商户风险评估。
# 安装说明
## 前置条件
在运行 MerchantGuard 之前,请确保您的系统上已安装以下软件。
Python 3.11+
Playwright (JavaScript 网站渲染)
Git *(可选)* 用于克隆代码仓库
## 克隆代码仓库
```
git clone https://github.com/sarbeshmallick/merchantguard.git
cd merchantguard-risk-engine
```
## 创建虚拟环境
创建虚拟环境可以将项目依赖项与您机器上安装的其他 Python 项目隔离开来。
```
python -m venv .venv
```
激活环境。
### Windows (PowerShell)
```
.\.venv\Scripts\Activate
```
### Windows (Command Prompt)
```
.venv\Scripts\activate.bat
```
### Linux / macOS
```
source .venv/bin/activate
```
## 安装项目依赖项
```
python -m pip install -r requirements.txt
```
## 安装 Playwright 浏览器
MerchantGuard 使用 Playwright 作为需要 JavaScript 渲染的网站的回退方案。
使用以下命令安装受支持的浏览器:
```
playwright install
```
此步骤将下载浏览器自动化期间使用的 Chromium、Firefox 和 WebKit 引擎。
# 运行 MerchantGuard
通过提供网站 URL 来运行评估器。
```
python risk_evaluator.py https://example.com
```
示例
```
python risk_evaluator.py https://manifestwaresoftware.com/web/
python risk_evaluator.py https://zylotechindia.online/
```
MerchantGuard 将自动执行以下操作:
- 抓取网站
- 发现重要页面
- 提取商户信息
- 执行基础设施关联
- 执行规则引擎
- 计算商户风险评分
- 生成结构化报告
# 项目结构
```
MerchantGuard/
│
├── risk_evaluator.py # Application entry point
│
├── extractor.py # Website crawling & evidence extraction
│
├── correlator.py # WHOIS, DNS, SSL & external intelligence
│
├── rules.py # Rule catalogue & evaluation engine
│
├── scorer.py # Risk score calculation
│
├── report.py # Console & JSON reporting
│
├── models.py # Shared data models
│
├── requirements.txt
│
├── README.md
│
└── outputs/
├── manifest.json
├── zylotech.json
├── amazon.json
└── realdsa.json
```
该项目遵循分层架构,其中每个模块都有单一的职责。
# MerchantGuard 的工作原理
评估过程遵循固定的管道。
```
Website URL
│
▼
Website Extraction
│
▼
Evidence Collection
│
▼
External Correlation
│
▼
Rule Engine
│
▼
Risk Scoring
│
▼
Merchant Risk Report
```
## 1. 网站提取
MerchantGuard 首先抓取提供的网站,并识别通常包含商户信息的页面。
示例包括:
- 首页
- 关于
- 联系
- 隐私政策
- 条款与条件
- 退款政策
- 发货政策
提取的信息将被转换为结构化证据。
## 2. 外部关联
使用公开可用的基础设施信息来丰富提取的网站证据。
示例包括:
- WHOIS
- DNS 记录
- SSL/TLS 证书
- 域名注册
- 公开业务存在
## 3. 规则评估
根据可配置的业务规则目录对证据进行评估。
每条规则确定是否应分配额外的验证或增加风险。
每项发现包含:
- 检测到的证据
- 触发的规则
- 风险类别
- 严重程度
- 解释
- 支持性依据
评估过程是确定性的且完全可解释的。
## 4. 风险评分
触发的发现共同构成整体的商户风险评分。
评分引擎:
- 汇总规则结果
- 应用严重性权重
- 按类别对发现进行分组
- 生成总体的商户风险评级
## 5. 报告生成
MerchantGuard 同时生成:
- 人类可读的控制台输出
- 结构化 JSON 输出
JSON 报告设计为机器可读的,可以集成到下游工作流程中。
# 理解输出结果
MerchantGuard 生成的每项发现都包括:
| 字段 | 描述 |
|--------|-------------|
| 检测到的元素 | 网站或基础设施观察结果 |
| 触发的规则 | 负责该发现的规则 |
| 风险类别 | 观察结果的类别 |
| 严重程度 | 低 / 中 / 高 |
| 依据 | 触发规则的原因 |
| 支持性证据 | 网站或外部关联证据 |
最后,引擎生成:
- 总体风险评分
- 总体风险评级
- 总结建议
而不是一系列孤立的观察结果。
# 截图
以下是 MerchantGuard 从一个实时网站生成结构化商户风险评估的示例。
┌────────────────────────────────────────────────────────────┐
│ │
│  │
│ │
└────────────────────────────────────────────────────────────┘
# 输出文件
每次执行都会生成一份结构化的 JSON 报告。
要将每个结果存储在各自的文件中,只需输入 --output example.com json
示例
```
example.com json
```
报告包含:
- 提取的网站证据
- 外部情报
- 触发的发现
- 风险类别
- 严重程度
- 支持性依据
- 总体商户评估
输出内容是有意结构化的,以便人类和下游应用程序都可以使用它。
# 当前规则类别
MerchantGuard 目前评估多个类别的商户风险。
示例包括:
- 商户身份
- 联系信息
- 网站内容
- 法律与合规
- 域名情报
- 基础设施安全
- SSL/TLS 配置
- DNS 配置
- 公开存在
- 网站行为
- 外部关联
规则引擎的设计易于扩展,允许添加额外的业务规则而无需更改整体系统架构。
# 行业背景
商户验证是现代支付生态系统的重要组成部分。
在允许企业处理在线支付之前,支付服务提供商 (PSP)、收单银行、市场和金融机构通常会执行各种验证检查,以了解是否需要进行额外的尽职调查。
其中一些检查包括验证:
- 业务身份
- 网站合法性
- 联系信息
- 法律合规性
- 域名所有权
- 基础设施安全
- 公开业务存在
- 网站一致性
- 风险指标
许多此类观察结果都是公开可用的,但分散在多个来源中。
MerchantGuard 演示了如何使用透明的基于规则的方法来收集、关联和评估这些公开可观察的信号。
尽管出于教育目的进行了简化,但其整体工作流程反映了现代商户验证系统中常见的架构。
# MerchantGuard 的适用领域
MerchantGuard 处于多个软件工程领域的交汇处。
| 领域 | 在 MerchantGuard 中的角色 |
|---------|--------------------------|
| 后端开发 | 整体应用架构 |
| Web 爬取 | 网站发现和检索 |
| HTML 解析 | 结构化信息提取 |
| 浏览器自动化 | JavaScript 网站渲染 |
| 安全自动化 | SSL、DNS 和基础设施检查 |
| 风险分析 | 商户评估 |
| 规则引擎 | 业务决策逻辑 |
| OSINT (开源情报) | 外部公共信息关联 |
MerchantGuard 没有专注于单一学科,而是将几个独立的组件组合成一个单一的可解释评估管道。
# MerchantGuard 与传统 Web 爬虫的区别
典型的爬虫通常遵循以下工作流程:
```
Website
│
▼
Collect HTML
│
▼
Save Data
```
MerchantGuard 极大地扩展了这一过程。
```
Website
│
▼
Website Crawling
│
▼
Evidence Extraction
│
▼
Infrastructure Correlation
│
▼
Rule Evaluation
│
▼
Risk Scoring
│
▼
Merchant Risk Assessment
```
网站爬虫只是更大的基于证据的评估管道的第一阶段。
MerchantGuard 的主要目标**不是数据收集**,而是**风险评估**。
# 可解释的决策制定
MerchantGuard 的主要目标之一是透明度。
每一项观察结果都与以下内容相关联,而不是在没有解释的情况下产生单个数字分数:
- 支持性证据
- 触发的规则
- 风险类别
- 严重程度
- 技术依据
这使得生成的评估结果更容易被理解、审查和扩展。
# 相关的开源项目
几个优秀的开源平台解决了与商户风险评估相邻的问题。
| 项目 | 主要关注点 |
|----------|---------------|
| urlscan.io | 网站分析、屏幕截图、基础设施情报 |
| SpiderFoot | 自动化 OSINT 收集 |
| OpenCTI | 网络威胁情报平台 |
| Wappalyzer | 网站技术指纹识别 |
| BuiltWith | 网站技术检测 |
| OWASP ZAP | Web 应用安全测试 |
| Nuclei | 基于模板的漏洞扫描 |
这些项目被广泛应用于网络安全、威胁情报和基础设施分析领域。
MerchantGuard 的目标则有所不同。
MerchantGuard 不关注漏洞发现、技术检测或威胁情报,而是专门关注**通过可解释的业务规则进行商户网站评估**。
# 为什么开源商户风险引擎很少见?
商户承保系统通常是专有的。
支付提供商将其内部风险模型视为有价值的知识产权,因为这些系统直接影响:
- 欺诈预防
- 商户入驻
- 合规性
- 财务风险敞口
- 运营风险
发布完整的规则逻辑将使欺诈者更容易了解自动评估是如何执行的,并可能调整他们的行为以绕过这些评估。
因此,与漏洞扫描程序、OSINT 平台或技术指纹识别工具相比,公开可商户承保引擎并不常见。
因此,MerchantGuard 旨在作为一个教育性实现,灵感来源于商户验证中可公开观察的方面,而不是对专有商业系统的复现。
# 现实世界灵感
许多支付公司在入驻期间会执行商户验证。
示例包括:
- Stripe
- Visa
- Mastercard
- Razorpay
- PayPal
- Adyen
- Square
商业实现比 MerchantGuard 复杂得多,并且通常包含不公开可用的额外信息,例如:
- 历史交易行为
- 退款趋势
- 欺诈情报
- 设备指纹识别
- 行为分析
- 客户争议
- 机器学习模型
- 内部商户历史记录
MerchantGuard 仅特意关注公开可用的信息和透明的基于规则的评估。
# 潜在应用
尽管 MerchantGuard 专注于商户网站,但其底层架构可以适用于许多其他需要可解释的、基于证据的决策制定的领域。
示例包括:
- 商户入驻
- 市场卖家验证
- 供应商风险评估
- 第三方供应商评估
- 合规自动化
- 网络安全态势评估
- 保险承保
- 贷款初步筛查
- 了解您的客户 (KYC) 支持
- 反洗钱 (AML) 调查
架构模式保持不变:
```
Evidence Collection
│
▼
Evidence Correlation
│
▼
Rule Evaluation
│
▼
Risk Scoring
│
▼
Explainable Decision
```
只有证据来源和业务规则发生变化。
# 谁可以使用 MerchantGuard?
MerchantGuard 对于任何有兴趣了解或试验可解释风险评估工作流程的人都非常有用。
潜在用户包括:
- 探索 Web 爬虫和规则引擎的学生
- 学习后端架构的软件工程师
- 对 OSINT 自动化感兴趣的安全爱好者
- 研究可解释风险评估的研究人员
- 进行初步网站审查的企业
- 构建商户入驻工作流程的开发人员
虽然 MerchantGuard 并不旨在取代商业承保系统,但它为了解如何将公开可用的网站情报转化为结构化风险观察结果提供了一个实用基础。
# 设计理念
MerchantGuard 是围绕几个核心设计原则开发的。
### 模块化
每个模块都执行单一的职责,并且可以独立演进。
### 可解释性
每项风险发现都有支持性证据作为支撑,而不是不透明的评分。
### 可扩展性
无需重新设计整体架构即可添加新的提取技术、外部情报源和业务规则。
### 确定性
在当前规则配置下,相同的证据将始终产生相同的结果。
### 教育性
该项目的结构是有意设计的,旨在演示如何将多个工程概念组合成一个完整的端到端系统,而不是仅仅关注于单一技术。
# 当前局限性
MerchantGuard 被有意设计为商户网站风险评估引擎的教育性实现。虽然它展示了许多现实世界的概念,但它也有一些局限性。
当前的局限性包括:
- 评估仅基于公开可用的信息。
- 规则引擎是确定性的,目前不包含机器学习。
- 公共搜索结果取决于已索引信息的可用性。
- 动态网站可能需要额外的浏览器自动化,具体取决于其实现方式。
- 仅使用网站内容并不总能独立验证商户身份。
- 风险评分是可配置的,但出于演示目的进行了有意的简化。
- 商业支付提供商合并了超出本项目范围的更大数据集。
因此,应将 MerchantGuard 视为理解可解释商户风险评估的基础,而不是专有商业承保平台的替代品。
# 未来路线图
MerchantGuard 在设计上特意实现了模块化,以便在不改变整体架构的情况下引入额外的功能。
一些计划的改进包括:
### 证据收集
- 额外的商户身份提取
- 公司注册验证
- 商业注册处整合
- Google 地图和商家信息关联
- 社交媒体验证
- 扩展的法律政策分析
### 外部情报
- 信誉反馈
- 证书透明度日志
- IP 信誉分析
- ASN 丰富
- 域名历史
- 技术指纹识别
- 基础设施关系映射
### 规则引擎
- 基于 YAML 的可配置规则包,以便非技术人员也可以进行修改
- 用户自定义规则
- 规则依赖管理
- 规则置信度评分
- 版本化的规则目录
### 风险评分
- 可配置权重
- 针对特定类别的评分模型
- 历史比较
- 风险趋势监控
- 可配置的组织策略
### 报告
- 交互式 HTML 报告
- PDF 报告生成
- REST API
- 仪表板
- Web 界面
- 导出格式
- 定时评估
### 工程
- 单元测试
- 集成测试
- Docker 支持
- CI/CD 管道
- 配置管理
- 插件架构
- 性能优化
长期目标是 MerchantGuard 发展成为一个灵活的研究平台,用于试验可解释的商户网站风险评估。
# 贡献
我们始终欢迎各种贡献、建议、错误报告和功能请求。
可能的贡献领域包括:
- 新的提取技术
- 额外的业务规则
- 基础设施情报来源
- 文档改进
- 性能优化
- 错误修复
- 测试覆盖率
- 报告增强
如果您愿意贡献,请随时提出 issue 或提交 pull request。
# 学习成果
开发 MerchantGuard 是一次探索机会,探究如何将多个软件工程概念整合到一个完整的端到端应用程序中。
该项目结合了以下领域的概念:
- Python 开发
- 后端工程
- Web 爬取
- 浏览器自动化
- HTML 解析
- 规则引擎设计
- 安全自动化
- 风险分析
- 开源情报 (OSINT)
- 可解释决策系统
除了实现本身之外,该项目还探索了模块化软件架构、关注点分离、证据建模和可解释决策制定。
# 致谢
本项目汲取了以下领域公开记录概念的灵感:
- 商户入驻工作流程
- 风险技术 (RiskTech)
- 合规自动化
- 欺诈检测
- 开源情报 (OSINT)
- 可解释的基于规则的系统
该架构旨在用于教育目的,反映的是可公开观察的概念,而不是专有的商业实现。
# 许可证
本项目在 MIT 许可证下发布。
您可以根据许可证条款自由使用、修改和分发本项目。
# 最终想法
MerchantGuard 最初只是对网站分析的探索,但逐渐演变成了更广泛的东西——一个模块化、可解释的商户风险评估引擎。
该项目不仅仅是收集网站数据,而是演示了如何将公开可用的信息转化为结构化证据,与外部情报相关联,通过透明的业务规则进行评估,并作为可解释的风险评估呈现出来。
虽然与商业商户承保平台相比有意进行了简化,但 MerchantGuard 旨在为理解证据收集、基于规则的决策系统和可解释的评估背后的工程原则提供实用基础。
随着探索新技术、数据源和评估策略,该项目将不断得到改进。
如果您觉得这个项目有趣,或者有改进建议,又或者想要合作,请随时提出 issue 或为代码仓库做贡献。
无论是错误修复、新规则、改进的文档还是架构建议,每一份贡献都将受到深深的感谢。
标签:Python, 云计算, 商户风控, 字符串匹配, 无后门, 特征检测, 自动化爬虫, 规则引擎