Python包 abuseipdb-mcp 详解

abuseipdb-mcp 是一个用于与 AbuseIPDB API 交互的 Python 客户端库。AbuseIPDB 是一个知名的 IP 地址滥用报告数据库,允许用户查询 IP 地址的滥用历史、提交滥用报告等,广泛用于网络安全、日志分析和恶意行为检测场景。
在这里插入图片描述


一、功能介绍
  1. IP 地址查询:获取指定 IP 的滥用报告次数、类别、地理位置等信息
  2. 批量 IP 查询:同时查询多个 IP 地址的滥用情况
  3. 提交滥用报告:向 AbuseIPDB 数据库提交新的 IP 滥用报告
  4. 检查报告状态:查看已提交报告的处理状态
  5. 支持 API 版本控制:兼容 AbuseIPDB API v2 及以上版本

二、安装方法

使用 pip 安装:

pip install abuseipdb-mcp

三、基本语法与参数
1. 初始化客户端
from abuseipdb import AbuseIPDB

# 初始化客户端(需要AbuseIPDB API密钥)
api_key = "your_api_key_here"
abuse_client = AbuseIPDB(api_key)
2. 核心方法及参数
方法 功能 主要参数
check() 查询单个IP ip:IP地址
max_age:查询最近几天的数据(默认30天)
verbose:是否返回详细信息(bool)
bulk_check() 批量查询IP ips:IP列表
max_age:同check方法
report() 提交滥用报告 ip:IP地址
categories:滥用类别列表(如[18, 22])
comment:详细描述
get_reports() 获取IP的报告历史 ip:IP地址
page:页码
per_page:每页数量

滥用类别代码(部分常用):

  • 3:欺诈性垃圾邮件
  • 10:DDoS攻击
  • 18:端口扫描
  • 21:暴力破解
  • 22:普通垃圾邮件

四、实际应用案例
案例1:查询单个IP的滥用情况
from abuseipdb import AbuseIPDB

api_key = "your_api_key"
client = AbuseIPDB(api_key)

# 查询IP地址
result = client.check(ip="198.51.100.1", max_age=30, verbose=True)

# 解析结果
print(f"IP: {result['data']['ipAddress']}")
print(f"滥用分数: {result['data']['abuseConfidenceScore']}")
print(f"国家: {result['data']['countryCode']}")
print(f"最近报告: {result['data']['reports'][0]['comment'] if result['data']['reports'] else '无'}")
案例2:批量检查IP地址
ips = ["198.51.100.1", "203.0.113.5", "192.0.2.10"]
results = client.bulk_check(ips=ips, max_age=14)

for ip_data in results['data']:
    print(f"IP: {ip_data['ipAddress']}, 滥用次数: {ip_data['totalReports']}")
案例3:提交暴力破解报告
# 报告IP进行SSH暴力破解
response = client.report(
    ip="198.51.100.2",
    categories=[21],  # 21表示暴力破解
    comment="该IP在过去24小时内尝试SSH暴力破解超过50次"
)

if response['status'] == "success":
    print(f"报告提交成功,报告ID: {response['data']['reportId']}")
案例4:监控日志中的可疑IP
import re
from loguru import logger  # 需要安装loguru

def monitor_logs(log_file):
    ip_pattern = r"\b(?:\d{1,3}\.){3}\d{1,3}\b"
    
    with open(log_file, "r") as f:
        for line in f:
            ips = re.findall(ip_pattern, line)
            for ip in ips:
                # 检查高风险IP
                result = client.check(ip=ip)
                if result['data']['abuseConfidenceScore'] > 70:
                    logger.warning(f"高风险IP {ip} 出现 in 日志: {line.strip()}")

# 监控Nginx访问日志
monitor_logs("/var/log/nginx/access.log")
案例5:自动封禁高风险IP(结合防火墙)
import subprocess

def block_malicious_ips(threshold=80):
    # 从日志提取最近出现的IP
    recent_ips = ["198.51.100.3", "203.0.113.7"]  # 实际应用中从日志提取
    
    for ip in recent_ips:
        result = client.check(ip=ip)
        score = result['data']['abuseConfidenceScore']
        
        if score > threshold:
            # 使用iptables封禁IP
            subprocess.run(f"iptables -A INPUT -s {ip} -j DROP", shell=True)
            print(f"已封禁高风险IP: {ip} (分数: {score})")

block_malicious_ips()
案例6:生成IP滥用统计报告
import pandas as pd

def generate_abuse_report(ips):
    data = []
    for ip in ips:
        res = client.check(ip=ip)
        data.append({
            "ip": ip,
            "score": res['data']['abuseConfidenceScore'],
            "country": res['data']['countryCode'],
            "reports": res['data']['totalReports']
        })
    
    df = pd.DataFrame(data)
    df.to_csv("abuse_report.csv", index=False)
    print("统计报告已生成: abuse_report.csv")

# 生成统计报告
generate_abuse_report(["198.51.100.1", "203.0.113.5", "192.0.2.10"])

五、常见错误与注意事项
常见错误
  1. API密钥错误

    Authentication failed: Invalid API key
    

    解决:检查API密钥是否正确,确保从AbuseIPDB官网获取有效密钥

  2. API请求频率限制

    429 Too Many Requests
    

    解决:免费账户有请求频率限制(每分钟120次),需添加请求间隔或升级账户

  3. IP格式错误

    Invalid IP address format
    

    解决:确保输入的是有效的IPv4或IPv6地址

  4. 权限不足

    Insufficient permissions to perform this action
    

    解决:某些操作需要特定权限,检查账户类型和API密钥权限

注意事项
  1. API密钥安全:不要在代码中硬编码密钥,建议使用环境变量存储

    import os
    api_key = os.getenv("ABUSEIPDB_API_KEY")
    
  2. 请求限流:实现请求重试机制,避免触发API限制

    from tenacity import retry, stop_after_attempt, wait_exponential
    
    @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=2, max=10))
    def safe_check(ip):
        return client.check(ip=ip)
    
  3. 数据缓存:对频繁查询的IP进行缓存,减少API调用

  4. 合规性:提交报告时确保符合 AbuseIPDB 的使用条款,避免虚假报告

  5. 版本兼容:注意库版本与API版本的兼容性,建议使用最新版本


通过 abuseipdb-mcp 库,开发者可以便捷地集成 AbuseIPDB 的功能到自己的安全工具中,有效提升网络安全监控和威胁响应能力。使用时需注意合理控制请求频率并遵守服务条款。

《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐