通过微步API接口对单个IP进行查询


import requests
import json# 微步API的URL和你的API密钥
API_URL = "https://api.threatbook.cn/v3/ip/query"
API_KEY = "***"  # 替换为你的微步API密钥
def query_threatbook(ip):"""查询微步API接口,判断IP是否为可疑"""# 构造请求参数params = {"apikey": API_KEY,"resource": ip,  # 查询的目标IP"lang": "zh",    # 语言设置为中文}try:# 发送GET请求response = requests.get(API_URL, params=params)response.raise_for_status()  # 检查请求是否成功result = response.json()  # 解析返回的JSON数据return resultexcept requests.exceptions.RequestException as e:print(f"请求微步API失败: {e}")return Nonedef summarize_result(result, ip):"""根据API返回结果总结是否为可疑IP"""if not result:print("API返回结果为空,请检查API密钥和网络连接。")return# 检查API响应结构if "data" not in result:print("API响应中缺少 'data' 字段,请检查API接口或输入的IP地址。")returndata = result["data"]ip_info = data.get(ip, {})# 提取威胁情报和标签信息judgments = ip_info.get("judgments", [])  # 威胁标签intelligences = ip_info.get("intelligences", {}).get("threatbook_lab", [])  # 情报信息basic_info = ip_info.get("basic", {})  # 基础信息(如运营商、地理位置)ports = ip_info.get("ports", [])  # 开放端口信息# 展示基础信息print("\n🔍 IP 基础信息:")if basic_info:carrier = basic_info.get("carrier", "未知")location = basic_info.get("location", {})country = location.get("country", "未知")province = location.get("province", "未知")city = location.get("city", "未知")print(f"  - 运营商: {carrier}")print(f"  - 地理位置: {country} {province} {city}")else:print("  - 无基础信息")# 展示威胁标签print("\n⚠️ 威胁标签:")if judgments:for tag in judgments:print(f"  - {tag}")else:print("  - 无威胁标签")# 展示详细情报信息print("\n🔍 详细情报信息:")if intelligences:for intel in intelligences:source = intel.get("source", "未知")confidence = intel.get("confidence", "未知")expired = "已过期" if intel.get("expired") else "未过期"intel_types = ", ".join(intel.get("intel_types", []))print(f"  - 来源: {source}, 置信度: {confidence}, 状态: {expired}, 类型: {intel_types}")else:print("  - 无详细情报信息")# 展示开放端口信息print("\n🔍 开放端口信息:")if ports:for port_info in ports:port = port_info.get("port", "未知")module = port_info.get("module", "未知")print(f"  - 端口: {port}, 协议: {module}")else:print("  - 无开放端口信息")# 安全性总结print("\n✅ 安全性总结:")if judgments:print(f"  - 该IP被标记为 **可疑**,威胁标签包括: {', '.join(judgments)}")else:print(f"  - 该IP **未被标记为可疑**,暂未发现威胁标签。")def main():"""主函数,查询用户输入的IP是否为可疑"""# 用户输入ip = input("请输入要查询的IP地址: ").strip()# 查询微步APIresult = query_threatbook(ip)# 总结并展示结果if result:summarize_result(result, ip)else:print("查询失败,请检查API密钥和网络连接。")if __name__ == "__main__":main()

通过微步API接口对单个IP进行查询效果,其实还可以弄成批量的。我发现反复查询同一个IP,查一次算一次,所以得注意,批量我也测试了,好用,就是费钱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis|集群 Cluster

文章目录 是什么能干嘛集群算法-分片-槽位slotredis集群的槽位slotredis集群的分片分片槽位的优势slot槽位映射——业界的3种解决方案小厂:哈希取余分区中厂:一致性哈希算法分区大厂:哈希槽分区 面试题:为什么 Redis 集群的最大槽…

城市地质安全专题连载⑧ | 强化工程地质安全保障力度,为工程项目全栈护航

作者 | 徐海洋、孙美琴 在城市化进程日益加速的今天,城市地质安全问题日益凸显,成为制约城市可持续发展的关键因素之一。从隧道掘进中的突发灾害,到高层建筑地基的稳定性挑战,再到城市地下空间的开发利用风险,地质安全…

工厂模式:简单工厂、工厂方法以及抽象工厂

文章目录 前言简单工厂模式优缺点 工厂方法模式优缺点 抽象工厂优缺点 前言 工厂模式是一种创建型设计模式,其作用是将对象的创建和使用进行解耦,用于提高代码的可维护性和可扩展性。通过提供给外部负责创建对象的工厂类,外部类通过工厂来创…

FFMPEG利用H264+AAC合成TS文件

本次的DEMO是利用FFMPEG框架把H264文件和AAC文件合并成一个TS文件。这个DEMO很重要,因为在后面的推流项目中用到了这方面的技术。所以,大家最好把这个项目好好了解。 下面这个是流程图 从这个图我们能看出来,在main函数中我们主要做了这几步&…

sqli-lab靶场学习(七)——Less23-25(关键字被过滤、二次注入)

前言 之前的每一关,我们都是在末尾加上注释符,屏蔽后面的语句,这样我们只要闭合了区间之后,差不多就是为所欲为的状态。但如果注释符不生效的情况下,又该如何呢? Less23(注释符被过滤&#xff…

Self-Supervised Prompt Optimization

论文:[2502.06855] Self-Supervised Prompt Optimization 仓库:GitHub - Airmomo/SPO: SPO | Self-Supervised Prompt Optimization 自监督提示优化(SPO) 创新点 成对比较评估 输出指导优化 全文介绍 背景 随着大语言模型…

AI-Ollama本地大语言模型运行框架与Ollama javascript接入

1.Ollama Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型,支持文本生成、翻译、代码编写、问答等多种…

分布式多卡训练(DDP)踩坑

多卡训练最近在跑yolov10版本的RT-DETR,用来进行目标检测。 单卡训练语句(正常运行): python main.py多卡训练语句: 需要通过torch.distributed.launch来启动,一般是单节点,其中CUDA_VISIBLE…

LLM大型语言模型(一)

1. 什么是 LLM? LLM(大型语言模型)是一种神经网络,专门用于理解、生成并对人类文本作出响应。这些模型是深度神经网络,通常训练于海量文本数据上,有时甚至覆盖了整个互联网的公开文本。 LLM 中的 “大” …

确保初始化和销毁操作的线程安全-初始化和销毁

你想为代码中的每行加上注释解释,以下是详细的注释: // 定义初始化函数,接收一个 InitOptions 类型的参数 int initGBB(InitOptions _opts) {// 使用原子操作检查初始化/销毁计数器,并增加计数。如果当前是第一次初始化,执行以下操作if (initFiniCnt_.fetch_add(1, std

蓝桥杯备考:动态规划dp入门题目之数字三角形

依然是按照动态规划dp的顺序来 step1:定义状态表示 f[i][j]表示的是到,j这个坐标的结点时的最大权值 step2: 定义状态方程 i,j坐标可能是从i-1 j-1 到i,j 也可能是从i-1 j到 i,j 所以状态方程应该是 f[i][j] max(f[i-1][j-1],f[i-1][j]) a[i][j] step3:初始化…

HarmonyOS NEXT开发进阶(十一):应用层架构介绍

文章目录 一、前言二、应用与应用程序包三、应用的多Module设计机制四、 Module类型五、Stage模型应用程序包结构六、拓展阅读 一、前言 在应用模型章节,可以看到主推的Stage模型中,多个应用组件共享同一个ArkTS引擎实例;应用组件之间可以方…

深入C语言:指针与数组的经典笔试题剖析

1. sizeof和strlen的对比 1.1 sizeof sizeof 是C语言中的一个操作符&#xff0c;用于计算变量或数据类型所占内存空间的大小&#xff0c;单位是字节。它不关心内存中存储的具体数据内容&#xff0c;只关注内存空间的大小。 #include <stdio.h> int main() {int a 10;…

deepseek+mermaid【自动生成流程图】

成果&#xff1a; 第一步打开deepseek官网(或百度版&#xff08;更快一点&#xff09;)&#xff1a; 百度AI搜索 - 办公学习一站解决 第二步&#xff0c;生成对应的Mermaid流程图&#xff1a; 丢给deepseek代码&#xff0c;或题目要求 生成mermaid代码 第三步将代码复制到me…

Solon AI —— RAG

说明 当前大模型与外部打交道的方式有两种&#xff0c;一种是 Prompt&#xff0c;一种是 Fuction Call。在 Prompt 方面&#xff0c;应用系统可以通过 Prompt 模版和补充上下文的方式&#xff0c;调整用户输入的提示语&#xff0c;使得大模型生成的回答更加准确。 RAG RAG &…

STM32——USART—串口发送

目录 一&#xff1a;USART简介 二&#xff1a;初始化USART 1.开启时钟 2.代码 三&#xff1a;USART发送数据 1.USART发送数据函数 2.获取标志位的状态 3.代码 4.在main.c内调用 5.串口调试 1.串口选择要与设备管理器中的端口保持一致 2.波特率、停止位等要与前面…

基于SpringBoot的在线骑行网站的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

通义万相2.1:开启视频生成新时代

文章摘要&#xff1a;通义万相 2.1 是一款在人工智能视频生成领域具有里程碑意义的工具&#xff0c;它通过核心技术的升级和创新&#xff0c;为创作者提供了更强大、更智能的创作能力。本文详细介绍了通义万相 2.1 的背景、核心技术、功能特性、性能评测、用户反馈以及应用场景…

3.3.2 Proteus第一个仿真图

文章目录 文章介绍0 效果图1 新建“点灯”项目2 添加元器件3 元器件布局接线4 补充 文章介绍 本文介绍&#xff1a;使用Proteus仿真软件画第一个仿真图 0 效果图 1 新建“点灯”项目 修改项目名称和路径&#xff0c;之后一直点“下一步”直到完成 2 添加元器件 点击元…

华为OD机试-最长的密码(Java 2024 E卷 100分)

题目描述 小王正在进行游戏大闯关,有一个关卡需要输入一个密码才能通过。密码获得的条件如下: 在一个密码本中,每一页都有一个由26个小写字母组成的密码,每一页的密码不同。需要从这个密码本中寻找这样一个最长的密码,从它的末尾开始依次去掉一位得到的新密码也在密码本…