使用说明
URL信誉和有效性检查器
基于FASTCMP 2.0的服务,验证URL并检查其信誉,以帮助识别AI幻觉并验证网页真实性。
特性
- URL验证:验证URL是否解析为实际网页
- 声誉评分:基于域名年龄、网络存档存在和技术因素的0-100分
- 链接提取:从HTML或文本内容中提取并验证链接
- 历史分析:通过WHOIS和Wayback Machine检查域名年龄
- AI幻觉检测:识别AI生成的URL中常见的模式
- 缓存:基于Redis的缓存可提高性能
- Docker支持:使用Docker和Docker compose轻松部署
快速开始
使用Docker(推荐)
- 克隆存储库:
git clone <repository-url>
cd reputation-and-validity-checker
- 启动服务:
docker-compose up -d
MCP服务器将在 http://localhost:5000.
本地安装
- 安装依赖项:
pip install -r requirements.txt
- 启动Redis(可选,用于缓存):
docker run -d -p 6379:6379 redis:7-alpine
- 运行服务器:
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)
发展
- 安装开发依赖项:
pip install -e ".[dev]"
- 运行测试:
pytest
- 格式代码:
black url_reputation_checker/
- 棉绒编码:
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许可证-有关详细信息,请参阅许可证文件。