URL信誉与有效性检查工具

基于FASTMCP 2.0的服务,用于验证URL并检查其信誉,帮助识别AI幻觉并验证网页真实性。

  • by prismon
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 prismon/reputation-checker-mcp

使用说明

URL信誉和有效性检查器

基于FASTCMP 2.0的服务,验证URL并检查其信誉,以帮助识别AI幻觉并验证网页真实性。

特性

  • URL验证:验证URL是否解析为实际网页
  • 声誉评分:基于域名年龄、网络存档存在和技术因素的0-100分
  • 链接提取:从HTML或文本内容中提取并验证链接
  • 历史分析:通过WHOIS和Wayback Machine检查域名年龄
  • AI幻觉检测:识别AI生成的URL中常见的模式
  • 缓存:基于Redis的缓存可提高性能
  • Docker支持:使用Docker和Docker compose轻松部署

快速开始

使用Docker(推荐)

  1. 克隆存储库:
git clone <repository-url>
cd reputation-and-validity-checker
  1. 启动服务:
docker-compose up -d

MCP服务器将在 http://localhost:5000.

本地安装

  1. 安装依赖项:
pip install -r requirements.txt
  1. 启动Redis(可选,用于缓存):
docker run -d -p 6379:6379 redis:7-alpine
  1. 运行服务器:
python -m url_reputation_checker.server

MCP工具

check_links_reputation

检查URL列表的信誉。

参数:

  • urls:要验证的URL列表

退货:

  • 带有声誉评分的验证结果列表

例子:

result = await check_links_reputation([
    "https://example.com",
    "https://github.com"
])

extract_and_check_links

从内容中提取链接并检查其信誉。

参数:

  • content:HTML或文本内容
  • content_type:“html”、“text”或“auto”(默认值:“auto“)

退货:

  • 提取验证结果和摘要的链接

例子:

result = await extract_and_check_links(
    "<a href='https://example.com'>Link</a>",
    content_type="html"
)

validate_url

验证单个URL。

参数:

  • url:要验证的URL

退货:

  • 详细的验证信息

get_domain_history

获取有关域的历史信息。

参数:

  • domain:域名或URL

退货:

  • 域名创建日期、WHOIS信息和Wayback Machine数据

声誉评分

信誉评分(0-100)基于以下因素计算:

  • 域名年龄 (0-30分):

    • 5岁以上:30分
    • 2-5岁:20分
    • 1-2年:15分
    • 6-12个月:10分
    • 3-6个月:5分
    • <3个月:2分
  • Web存档状态 (0-20分):

    • 100+张快照:20分
    • 50-99张快照:15分
    • 20-49张快照:10分
    • 5-19张快照:5分
    • 1-4张快照:2分
  • 技术因素 (0-25分):

    • 有效SSL:10分
    • 快速响应(<1s):10分
    • HTTP 200状态:5分
  • 一致性 (0-25分):

    • 无警告:25分
    • 1个警告:15分
    • 2个警告:10分
    • 3个警告:5分

AI幻觉检测

该服务检查AI生成的URL中常见的模式:

  • 过于具体的博客路径(例如。, /blog/2023/03/15/specific-topic)
  • 特定于版本的API文档URL
  • 路径深度过大(>6级)
  • 带有过多连字符的产品名称
  • 打字尝试
  • 子域过多

配置

环境变量:

  • REDIS_URL:Redis连接URL(默认值: redis://localhost:6379)
  • MCP_SERVER_HOST:服务器主机(默认值: 0.0.0.0)
  • MCP_SERVER_PORT:服务器端口(默认值: 5000)

发展

  1. 安装开发依赖项:
pip install -e ".[dev]"
  1. 运行测试:
pytest
  1. 格式代码:
black url_reputation_checker/
  1. 棉绒编码:
ruff url_reputation_checker/

Docker构建

构建Docker镜像:

docker build -t url-reputation-checker .

使用docker compose运行:

docker-compose up -d

查看日志:

docker-compose logs -f

示例用法

Python客户端示例

import asyncio
from fastmcp import FastMCPClient

async def main():
    async with FastMCPClient("http://localhost:5000") as client:
        # Check a list of URLs
        results = await client.call_tool(
            "check_links_reputation",
            urls=[
                "https://github.com",
                "https://example-fake-site-12345.com"
            ]
        )
        
        for result in results:
            print(f"{result['url']}: {result['reputation_score']}/100")
        
        # Extract and check links from HTML
        html_content = """
        <html>
            <body>
                <a href="https://google.com">Google</a>
                <a href="https://fake-news-site.com">Fake News</a>
            </body>
        </html>
        """
        
        extraction_result = await client.call_tool(
            "extract_and_check_links",
            content=html_content,
            content_type="html"
        )
        
        print(f"Found {extraction_result['summary']['total_links']} links")
        print(f"Average reputation: {extraction_result['summary']['average_reputation_score']}")

if __name__ == "__main__":
    asyncio.run(main())

API终点

MCP服务器公开了可以通过MCP协议调用的工具。此外,它还提供资源:

  • /url_validation_report:获取所有已验证URL的格式化报告
  • /cache_stats:获取缓存统计信息

故障排除

Redis连接问题

如果Redis不可用,该服务将继续工作而不进行缓存。要完全禁用Redis,请设置:

export REDIS_URL=""

WHOIS查找失败

由于隐私保护或注册限制,某些域可能没有可用的WHOIS信息。该服务将继续进行其他检查。

Wayback Machine 费率 限制

Wayback Machine API可能会对请求进行速率限制。该服务会很好地处理这个问题,如果不可用,将跳过历史数据。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。