mcpField
H
hardly

hardly

本地服务
github.com/b1tninja开发工具12 天前更新

关于 hardly

hardly 是用于索引和分析 HAR 捕获文件的命令行工具与 MCP 服务,避免将大型原始文件全部载入 Agent 上下文。它面向调查网站或构建客户端的开发者和 Agent,可跨多种 Web 技术提供脱敏、分页结果。

主要功能

  1. 01将 HAR 数据索引到 SQLite
  2. 02汇总端点、表单和身份验证方式
  3. 03脱敏密钥并截断响应正文
  4. 04以无头或交互模式捕获网站
  5. 05导出 OpenAPI 规范和客户端代码
  6. 06提供对应的命令行与 MCP 工具

适用场景

  1. 01分析大型浏览器 HAR 捕获文件
  2. 02识别 API 端点和身份验证流程
  3. 03生成 OpenAPI 文件或 Python 客户端
  4. 04诊断受阻或复杂的浏览器捕获

MCP 相关

stdio MCP 服务提供分析 HAR 数据和捕获网站的工具、提示词与资源。其工具与命令行共用词汇,包括只读分析、受控请求发送和文件写入。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"b1tninja-hardly": {
"command": "uvx",
"args": [
"hardly"
]
}
}
}
启动命令uvx hardly

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypihardly1.0.0

工具

71

收录的工具列表 · 更新于 1 天前

参数类型必填说明
sectionsany否

详细介绍

hardly

PyPI Python CI License: MPL-2.0

一个通用、内容中立的 CLI 和 MCP 服务,用于读取和捕获 HAR 文件,并将其转换为客户端 SDK 所需的信息:端点、表单和标签、数据与媒体类型,以及凭据和身份验证的工作方式。

为什么选择 hardly

浏览器 HAR 捕获文件通常有数十 MB。读取这些文件的 Agent 会消耗大量令牌,却仍会遗漏结构信息。hardly 会将 HAR 流式导入 SQLite 一次,然后通过 MCP(以及配套 CLI)提供小巧、已脱敏、可分页的工具。响应正文会截断,机密会脱敏,列表会分页:你几乎不必读取整个文件。

hardly 了解各种技术(HTML 表单、ASP.NET WebForms、GraphQL、OAuth/OIDC、Cookie/CSRF、机器人拦截页、ArcGIS REST 等)和资源类型(JSON、CSV、HTML 表格、PDF、图片等),但不针对任何特定网站。下游 SDK 使用各自的方案和词汇。参见 docs/scope.md。

安装

pip install hardly                  # or: pipx install hardly / uv tool install hardly
pip install 'hardly[capture]' && python -m playwright install chromium   # optional: record HARs

要参与 hardly 项目开发:pip install -e ".[dev]"(CONTRIBUTING.md)。

Python 3.10+。请提供输出路径来保存文件,否则不会写入任何内容。 除非传入 output_path,否则所有内容都保存在内存中(hardly session open HAR -o index.db)。Python: with open_session(har) as s: ...(integrating.md)。

60 秒快速入门

hardly guide mode                             # which of the three modes fits
hardly session overview path/to/capture.har   # counts per server, method and status
hardly session site-brief path/to/capture.har # one-screen digest of a server-rendered site
hardly endpoint list path/to/capture.har --host api.example.com
hardly session report path/to/capture.har     # one-pass findings with severity
hardly write export path/to/capture.har --format openapi -o api.yaml
hardly write export path/to/capture.har --format client_python --host api.example.com -o client.py

对于 Agent,请从 hardly_guide_task_plan(goal, har_path, url) 开始(CLI: hardly guide task-plan --goal ...):它会返回一个有序计划,其中包含示例调用和当前环境状态。

名称说明操作效果

CLI 和 MCP 服务使用同一套词汇:命令名称就是去掉 hardly_ 前缀后的工具名称 (hardly_session_open 对应 hardly session open HAR,hardly_send_entry 对应 hardly send entry HAR 12 --confirm)。

第一个词含义
send向真实服务发送请求;需要 confirm=true(CLI 中为 --confirm),否则只返回计划
write写入文件;除非设置 overwrite=true(--overwrite),否则不会覆盖已有文件
browser操作或读取真实浏览器
其他任何词只读取已加载的数据

合并工具接收 sections 列表,例如 hardly_auth_report(sections=['credentials', 'cookies'])。参考:docs/tools.md(71 个工具)、docs/cli.md (命令);稳定性承诺:docs/api-stability.md。

三种模式

模式适用场景入口
archive已有 HAR 文件hardly_session_open(har_path),然后使用 hardly_session_site_brief / hardly_endpoint_list
headless只有 URL;Agent 可以操作页面hardly_browser_capture_discover(url, analyze=true, confirm=true)(CLI hardly browser capture-discover URL --analyze --confirm)
interactive机器人拦截页、验证码、MFA、复杂界面hardly_browser_start(headed=true),询问用户,然后使用 hardly_browser_stop

捕获完成后,使用返回的 session_id 继续以 archive 模式操作。hardly 绝不会绕过验证码或机器人拦截页:它会识别这些情况,并提示你停止、询问用户或在其他地方重新运行 (docs/gate-policy.md)。详情:docs/capture.md。

安装并运行,无需克隆

uvx hardly serve                              # MCP server over stdio (archive mode)
uvx --from 'hardly[capture]' hardly browser --help   # with the Playwright capture extra
pipx install 'hardly[capture]'                # or install the CLI permanently
hardly skill install                          # copy the Agent Skill into ~/.claude/skills/hardly

已发布软件包的 MCP 客户端配置:

{ "mcpServers": { "hardly": { "command": "uvx", "args": ["hardly", "serve"] } } }

浏览器捕获需要本地安装(安装 [capture] extra,然后运行 python -m playwright install chromium; 有头捕获需要显示器)。容器镜像 ghcr.io/b1tninja/hardly(多架构,每次发布时构建)仅用于归档和无头分析;请将工作目录挂载到 /workspace。 发布和验证详情:docs/releasing.md。

MCP 设置(Cursor 等)

本地 venv(推荐;有头捕获需要显示器):

{
  "mcpServers": {
    "hardly": {
      "command": "/path/to/hardly/.venv/bin/python",
      "args": ["-m", "hardly"]
    }
  }
}

Windows 上请使用 ...\\.venv\\Scripts\\python.exe。hardly serve 会启动同一服务。

Docker(仅用于离线分析;请挂载工作目录):

python scripts/build_image.py       # builds hardly-mcp:latest (Windows: scripts\deploy-docker.ps1)
{
  "mcpServers": {
    "hardly": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
               "-v", "/home/me/work:/workspace",
               "-e", "HARDLY_WORKSPACE=/workspace",
               "hardly-mcp:latest"]
    }
  }
}

挂载路径下的主机路径会映射到 /workspace/...。若要跳过本地构建,请使用已发布的镜像 ghcr.io/b1tninja/hardly:latest 替代 hardly-mcp:latest。

Agent 入门

  • hardly_guide_task_plan、hardly_guide_mode、hardly_server_status(MCP 已过期?请重启服务), hardly_guide_help(topic)。
  • MCP 提示词:analyze_har、discover_apis、capture_portal、document_api、find_auth_flow、 reverse_engineer_api、build_client_sdk、diagnose_blocked_capture、verify_client。
  • MCP 资源:hardly://cheatsheet 和 hardly://docs/<name>(打包的文档)。
  • Agent Skill:hardly skill install [--dest DIR](默认 ~/.claude/skills/hardly),或 hardly skill print。来源:skills/hardly。

文档

文档内容
docs/README.md所有文档的索引
docs/scope.md范围内与范围外的内容;变更检查清单
docs/cheatsheet.md一页式快速参考
docs/concepts.md会话、索引、脱敏、模式
docs/sdk-workflow.md从捕获到客户端 SDK,分步说明
docs/reporting.mdhardly_session_report 的发现
docs/catalog.md目标目录、TargetAdapter、批量验证
docs/capture.md无头和交互式捕获、操作指南、环境变量
docs/technologies.md各项技术的检测内容
docs/architecture.md数据流和设计规则
docs/troubleshooting.md首次使用时的常见问题
docs/tools.md所有 MCP 工具的生成式参考文档
docs/cli.mdCLI 语法和所有命令(生成)
docs/api-stability.md公开内容及 v1 兼容性政策
docs/api-decisions.mdv1 名称的选择方式;旧名称到新名称的对应关系

库的使用

from hardly import open_session

with open_session("capture.har") as s:      # in memory; pass output_path= to save the index
    print(s.conn.execute("select count(*) from entries").fetchone()[0])

开发和测试

pytest -q                 # offline; HARDLY_LIVE_CAPTURE=1 enables live Playwright tests
ruff check .

针对公开演示站点进行实时压力测试(不使用私人 HAR):运行 hardly soak live --list,然后运行 hardly soak live(或使用 --ids datatables-ajax,quotes-login,…)。目录涵盖回环 WebForms/令牌登录、HTML/AJAX 表格、表单登录、GraphQL 和 JSON/OpenAPI——参见 hardly.live_targets 和 docs/test-targets.md。 参见 CONTRIBUTING.md、AGENTS.md;发布说明见 CHANGELOG.md。

安全

HAR 文件通常包含有效密码和会话令牌。hardly 默认会进行脱敏,但请将捕获内容视为机密:不要提交或分享;如果凭据泄露,请轮换凭据。仅将 hardly 用于你获准访问的目标。参见 SECURITY.md。

许可证

MPL-2.0。生成的输出(存根、OpenAPI、报告)不在许可范围内;参见 NOTICE.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。