【免费下载链接】MailAccessFree email OSINT tool, 5000 platforms, identity clustering, breach detection. No API keys required. pip install mailaccess项目地址https://gitcode.com/gh_mirrors/mai/MailAccess点击查看免费下载MailAccess 是一个开源免费的邮件 OSINT 工具pip install mailaccess即可运行内置 82 个 OSINT 模块可跨 5,300 平台完成身份聚类、数据泄露检测等调查绝大多数模块无需 API Key。本文面向开发者带你拆解它的模块契约与自动发现机制只需一个约 20 行的 Python 文件就能把你的数据源接入整条调查流水线重启服务即被自动注册全程零手动接线。一、为什么 MailAccess 的模块设计值得学MailAccess 的架构哲学是数据源即插件。一次investigate命令触发时引擎会把所有已注册模块并发调度执行各自产出标准化证据finding最终聚合成一份带置信度和溯源的报告。对贡献者来说这意味着你不需要理解整个引擎只需遵守一份极简契约。契约定义在 backend/modules/base.py全文不到 100 行是所有 OSINT 模块必须满足的接口协议。二、模块契约BaseModule 的四个类属性 一个方法类属性模块的身份证继承BaseModule后你要在类级别不是__init__里声明属性作用默认值name唯一 slug用于 API 响应和数据库记录必填description一行说明会展示在GET /api/modules/列表里必填requires_key为True时缺少 API Key 会自动跳过Falseemail_linked查找键就是邮箱本身时为True会盖印到每条 finding 上Falsepriority调度优先级100唯一方法async run(email)abstractmethod async def run(self, email: str) - ModuleResult: Run the module against *email* and return a ModuleResult.返回值是ModuleResult数据类包含四个字段status状态、findings发现列表、metadata模块级补充信息、errors人类可读错误。状态枚举ModuleStatus有五种SUCCESS— 正常完成可能有无发现SUCCESS_EMPTY— 正常完成且无发现PARTIAL— 部分成功例如部分请求被限流FAILED— 模块内部失败SKIPPED— 因缺 Key 或配置关闭而主动跳过 一个细节BaseModule.__init_subclass__会在类创建时自动给你的run包一层校验——如果你返回了None或不是ModuleResult的对象会直接抛AssertionError。这层守门人保证流水线里的脏数据无处可藏源码见 backend/modules/base.py。三、20行代码写一个完整模块按 CONTRIBUTING.md 的契约一个最小可用的 OSINT 模块长这样from __future__ import annotations from ..core.http_client import build_client from .base import BaseModule, ModuleResult, ModuleStatus class ExampleModule(BaseModule): name example_check # 1. 唯一 slug description Check Example service. # 2. 一行用途说明 requires_key False # 3. 是否需要 API Key async def run(self, email: str) - ModuleResult: # 4. 异步入口 findings: list[dict] [] async with build_client(timeout10.0) as client: try: resp await client.get( fhttps://example.com/api/check/{email} ) if resp.status_code 200 and resp.json().get(found): findings.append({ platform: example_service, profile_url: fhttps://example.com/{email}, confidence: high, metadata: {note: direct email match}, }) except Exception as exc: # 5. 永不抛出转成 errors return ModuleResult( statusModuleStatus.FAILED, errors[str(exc)] ) return ModuleResult(statusModuleStatus.SUCCESS, findingsfindings)五条铁律摘自 CONTRIBUTING.mdrun()永不抛异常——捕获一切用FAILEDerrors返回缺 Key 尽早返回SKIPPED而不是FAILED出站 HTTP 一律走build_client()backend/core/http_client.py它统一管理代理与限流每个模块有超时上限——默认 30 秒MODULE_TIMEOUT_SECONDS见 backend/config.py引擎用asyncio.wait_for强制执行阻塞库要用asyncio.to_thread()包装别卡死事件循环。真实示例可参考 backend/modules/hackernews.py错误收集、限流设置rate_limiter.set_delay、finding 去重一应俱全是很好的范本源码。四、自动发现机制文件放对位置重启即注册这是 MailAccess 最优雅的设计。backend/modules/init.py 里的注册器在首次访问时扫描backend/modules/目录def _discover() - None: package_dir Path(__file__).parent for _finder, module_name, _ispkg in pkgutil.iter_modules([str(package_dir)]): if module_name in _SKIP: continue mod importlib.import_module(f.{module_name}, package__name__) for attr_name in dir(mod): obj getattr(mod, attr_name) if (isinstance(obj, type) and issubclass(obj, BaseModule) and obj is not BaseModule and hasattr(obj, name)): _registry[obj.name] obj翻译成白话任何.py文件只要定义了继承BaseModule且带name属性的类就会被pkgutil.iter_modules扫出来、导入、注册进全局_registry——没有导入列表要维护没有工厂方法要改。三个细节值得注意懒加载发现逻辑被延迟到第一次需要模块列表时才执行约 1 秒 的导入成本避免拖慢服务冷启动和/health探活name 必须全局唯一重复会静默覆盖先到者验证很简单重启服务后跑mailaccess modules或用 APIGET /api/modules/backend/api/routes/modules.py——你的模块名出现了就说明契约通过。五、模块如何被引擎调度执行注册只是入场券。真正执行发生在 backend/core/engine.py 的InvestigationEngine里引擎按阶段 DAG 组织执行backend/core/phases.py主阶段一次性拿到get_all_modules()的全部类用asyncio.Semaphore(max_concurrency)控制并发默认10 个模块同时跑MAX_CONCURRENT_MODULES全局出站请求还有 40 的总闸门单模块超时默认 30 秒超时会以FAILED记录但不影响整次调查你的 finding 会经过证据标注trace/label、跨模块去重、身份图聚合最终进入报告、导出文件和数据库。也就是说一个写对契约的模块天然获得了并发调度、超时保护、错误隔离、证据链标注和持久化——这些你一行代码都不用写。六、开发自查清单提交前对照 CONTRIBUTING.md 的 PR Checklistname唯一description一目了然缺 Key 时返回SKIPPED不返回FAILED无阻塞 I/O 直跑事件循环HTTP 走build_client()无硬编码凭据不新增第三方依赖pytest通过测试随 PR 提交更新了 docs/modules.md 的模块表与 finding schema落地路径只有一条把文件放到backend/modules/my_module.py下次服务启动自动注册。更多模块的 finding schema 细节如gravatar、hibp、xposedornot等 82 个模块的完整字段定义可查阅官方文档docs/modules.md 的 Adding a Module 章节。从 20 行代码到一条完整证据链这就是 MailAccess 模块体系的开发体验契约极小、发现自动、调度托管。赞分享【免费下载链接】MailAccessFree email OSINT tool, 5000 platforms, identity clustering, breach detection. No API keys required. pip install mailaccess项目地址https://gitcode.com/gh_mirrors/mai/MailAccess点击查看免费下载相关推荐The Big Brother开发者指南/api/dispatch统一调度机制与自定义OSINT模块二次开发教程The Big Brother开发者指南/api/dispatch统一调度机制与自定义OSINT模块二次开发教程 The Big Brother 是一个开源的OpenConstructionERP模块开发教程10分钟写出第一个模块并自动挂载OpenConstructionERP模块开发教程10分钟写出第一个模块并自动挂载 OpenConstructionERP 是一款开源建筑 ERP 系统支持后端前端桌面应用ERP企业应用Bookshelf微模块开发契约如何编写你自己的Micro-moduleBookshelf微模块开发契约如何编写你自己的Micro module 如果你想在 KOReader 阅读器的 Bookshelf 书架插件里加一块时钟、天创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
自动回复文案怎么写?开场白、离线语、节日语模板 自动回复是店铺的“无人值守前台”,但多数商家的配置只有一句冷冰冰的“您好,我现在有事不在”。好的自动回复分场景、有信息量、给下一步。这篇按四类场景给出模板和写作要点,抄走就能用。开场白模板。要点:短、有温度、指路。模… · 2026/11/9 18:25:01
转人工怎么做才合规?新国标下的客服兜底配置 AI 客服上线容易,翻车也容易——买家急得跳脚,机器人还在循环“请问有什么可以帮您”。新国标实施后,智能客服的转人工机制成了明确的合规要求,不再是可有可无的加分项。这篇讲清标准对转人工的要求方向,以及落地配置怎… · 2026/11/11 19:52:43
移动机械臂TF树调试痛点:hyperframes超帧库如何简化复杂坐标系管理 移动机械臂的调试,十个有八个坑最后都堆在TF上。底盘、机械臂、夹爪、外加一堆传感器,动辄几十个坐标系在rviz里缠成一团,你盯着那棵越拉越长的TF树,想确认"当前这个目标位姿到底在不在机械臂可达空间里",思… · 2026/11/11 1:24:32
冀州区办电工证怎么考过?实操考试心里没底怕挂科 冀州区办电工证怎么考过?实操考试心里没底怕挂科 实操考试心里没底怕挂科,这是很多想在冀州区办电工证的朋友最真实的感受。尤其是在高压电工证、低压电工证这类涉及安全操作的考试中,很多人担心自己动手能力不够,或者对考试流程不熟悉,导致考试时手忙脚… · 2026/11/16 3:43:55
电工证参军加分政策最新解读,电子证书怎么查?别让证书过期耽误事 电工证参军加分政策最新解读,电子证书怎么查?别让证书过期耽误事 证书过期了不知道怎么复审延期?你不是一个人。现在电工证在参军、就业、职业发展等方面越来越重要,尤其在参军方面,有政策明确表示,拥有电工证可以作为加分项,但前提是证书在有效期内,… · 2026/11/16 3:43:54
电工证考实操么 外省证书能转过来吗 电子证书怎么用 电工证考实操么 外省证书能转过来吗 电子证书怎么用 之前考的证在外省能不能转过来?这是很多老电工最关心的问题。特别是那些在外省工作几年、又想回老家继续干的,总担心自己的证书会不会“白考了”。其实,现在国家推行电子证书,很多地方已经支持跨省互… · 2026/11/16 3:43:54
上海考低压电工证机构怎么选?实操考试心里没底怕挂科的别错过 上海考低压电工证机构怎么选?实操考试心里没底怕挂科的别错过 实操考试心里没底怕挂科?你不是一个人。现在市面上【上海考低压电工证机构】五花八门,证书含金量也参差不齐,很多人在报名前总担心自己是不是花了冤枉钱,考出来的证是不是真管用。尤其是像低… · 2026/11/16 3:43:54
最近电工证考试过期了怎么处理?考前押题帮你稳过 最近电工证考试过期了怎么处理?考前押题帮你稳过 证书过期了不知道怎么复审延期?最近电工证考试正当时,但很多人在考试前才发现自己的证件快到期了,手忙脚乱地去处理复审,结果耽误了考试时间,甚至错过了关键的上岗机会。今天咱们就来聊一聊,如果你的电… · 2026/11/16 3:43:54
常州电工证考试视频怎么找?电子证书怎么领?南阳毕业生必看 常州电工证考试视频怎么找?电子证书怎么领?南阳毕业生必看 工地太忙根本没时间复习考试,每天风吹日晒,还要赶工期,谁还有精力看书?特别是像我们这些南阳的应届工程类毕业生,刚出来就直接被安排到工地,连电脑都懒得碰,更别说花时间准备电工证考试了。… · 2026/11/16 3:42:54
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/16 3:21:55
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/16 3:01:18
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
电工证培训的通知在哪考?别再被中介骗了 电工证培训的通知在哪考?别再被中介骗了 你是不是还在为 电工证培训的通知在哪考 发愁?网上搜了一堆信息,结果要么是挂羊头卖狗肉的培训机构,要么就是打着“包过”旗号的骗子?别急,今天我来给你讲讲, 电工证培训的通知… · 2026/11/16 0:00:34
电工证去哪个部门考核值不值得考 信阳转岗人真实经历分享 电工证去哪个部门考核值不值得考 信阳转岗人真实经历分享 怕考不过白交培训费?你不是一个人,信阳的李师傅去年刚转岗做电工,就因为没搞清楚电工证去哪个部门考核,差点交了8000块的培训费。别急,下面这份实操考试全攻略,告诉你电工证到底值不值得考… · 2026/11/16 0:00:34
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05