# ============================================================================ # AutoHunter 配置示例 —— 复制为 .env 后按需修改 # Powered By StanleyNull # # 最少只需填 LLM_API_KEY 即可启动;FOFA_KEY / 访问令牌强烈建议配置。 # ============================================================================ # --------------------------------------------------------------------------- # 【必填】AI / LLM 通道(Worker/Reviewer/报告助手共用) # 协议:auto / openai_chat / anthropic_messages。全流程依赖 tool calling; # 不支持原生 function calling 的模型也能用——见下方 AUTOHUNTER_TOOL_COMPAT 兜底。 # 常见:DeepSeek、OpenAI、Claude、通义、Kimi,以及对应协议的兼容网关。 # --------------------------------------------------------------------------- LLM_BASE_URL=https://api.deepseek.com/v1 LLM_API_KEY= LLM_MODEL=deepseek-chat LLM_TEMPERATURE=0.3 LLM_MAX_TOKENS=4096 # 工具调用兼容:auto(默认,原生优先,端点硬报错不支持 tools 时自动切「提示词模拟」) # / prompt(始终用提示词模拟,给「接受 tools 参数却不真正调用」的哑模型)/ native(仅原生)。 # 原生可用的模型不受影响;仅在模型不支持工具调用时才有必要改成 prompt。 AUTOHUNTER_TOOL_COMPAT=auto # 【可选】LLM 请求 User-Agent:默认按模型族自动伪装(deepseek/claude/gpt/glm/qwen/kimi/gemini/grok), # 并抹掉 x-stainless-* 指纹头,绕过部分中转站/2api 网关(Cloudflare WAF)对 SDK UA 的 403 封禁。 # 可选覆盖:browser=伪装 Chrome;auto=按模型自动;或直接写任意固定串,如 curl/8.7.1。 # LLM_USER_AGENT=auto # 【可选】额外请求头:JSON 对象,或 key:value[,key:value] 简写。 # OpenAI / Anthropic Messages 两条链路以及「测试连接」都会带上这些头。 # 有些网关要求客户端带专属头,例如 opencode Go(https://opencode.ai/zen/go/v1) # 要求每个会话都带 x-opencode-session,缺了会回 HTTP 400 MissingSessionID。 # LLM_EXTRA_HEADERS={"x-opencode-session":"autohunter-<随机串>"} # single 使用上面的单端点;pool 使用 LLM_PROVIDERS_JSON 中的完整启用端点。 LLM_PROVIDER_MODE=single # auto / openai_chat / anthropic_messages LLM_PROTOCOL=auto # JSON 数组;每项支持 name/base_url/api_key/model/protocol/temperature/weight/enabled。 LLM_PROVIDERS_JSON=[] # 连续失败达到阈值后进入分级冷却,逗号分隔的秒数会随连续熔断次数递进。 LLM_PROVIDER_FAIL_THRESHOLD=5 LLM_PROVIDER_BEHAVIOR_FAIL_THRESHOLD=3 # 端点单次失败后被判 failed 的保持时长(到点转半开探测)。多端点池模式下这是快速故障切换。 # 单端点部署(只有一个模型端点)建议调小(如 10~15),否则一次瞬时抖动会让整个任务停派该时长。 LLM_PROVIDER_FAILED_RETRY_SECONDS=60 LLM_PROVIDER_BEHAVIOR_PROBE_SECONDS=900 LLM_PROVIDER_COOLDOWN_SECONDS=300,900,1800,3600 # --------------------------------------------------------------------------- # 【推荐】FOFA 网络空间测绘 Key(用于自动搜集目标资产;不填则只能手动录入目标) # 到 https://fofa.info 个人中心获取。 # --------------------------------------------------------------------------- FOFA_KEY= # 【可选】自定义 FOFA API 端点(对接私有部署/镜像/代理网关时使用)。 # 留空则使用官方 https://fofa.info。 FOFA_BASE_URL= # 【可选】允许 FOFA base_url 指向内网/私有地址的 host 白名单(逗号分隔)。 # 出于防 SSRF/防 key 外泄,默认阻断把携带 FOFA key 的请求发往内网/云元数据; # 若你用私有 FOFA 部署(内网 IP/域名),把它的 host 填这里显式放行。 FOFA_ALLOWED_HOSTS= # 【可选】其它测绘引擎 Key(任务里选对应引擎时才需要) # Quake:https://quake.360.net 个人中心 API Token → QUAKE_KEY # Hunter:https://hunter.qianxin.com → HUNTER_KEY # ZoomEye:https://www.zoomeye.ai → ZOOMEYE_KEY # Shodan:https://account.shodan.io → SHODAN_KEY # Censys Platform Personal Access Token → CENSYS_KEY # (旧 Legacy Search 才用 API_ID:SECRET;新账号不要填这个格式) QUAKE_KEY= HUNTER_KEY= ZOOMEYE_KEY= SHODAN_KEY= CENSYS_KEY= # --------------------------------------------------------------------------- # 【强烈建议】访问控制令牌(不设则任何人都能访问你的控制台!) # AUTOHUNTER_API_TOKEN 全权限(读写、启停任务、复审) # AUTOHUNTER_READ_TOKEN 只读(看板/GET,禁止写操作)—— 可选 # AUTOHUNTER_OBSERVER_TOKEN 观摩(仅运行概况,无敏感证据)—— 可选 # 请改成足够长的随机串(install.sh 会自动帮你生成)。 # --------------------------------------------------------------------------- AUTOHUNTER_API_TOKEN= AUTOHUNTER_READ_TOKEN= AUTOHUNTER_OBSERVER_TOKEN= # --------------------------------------------------------------------------- # 服务监听(容器内)。对外端口在 docker-compose.yml 里映射。 # --------------------------------------------------------------------------- AUTOHUNTER_HOST=0.0.0.0 AUTOHUNTER_PORT=18800 # --------------------------------------------------------------------------- # 内置应用层 WAF(保护控制台本身) # --------------------------------------------------------------------------- AUTOHUNTER_WAF_ENABLED=1 AUTOHUNTER_WAF_BLOCK=1 AUTOHUNTER_TRUST_PROXY=0 AUTOHUNTER_WAF_MAX_BODY=2097152 # ds2api 反代(/dpskapi)默认纳入访问令牌鉴权,防止未授权者白嫖 LLM 算力/ # 直连内网 ds2api 管理台。若要把它当公开 LLM 网关对外开放,设为 1。 DS2API_PROXY_PUBLIC=0 # --------------------------------------------------------------------------- # Worker 挖掘预算与超时(默认值适合大多数场景,按需调整) # --------------------------------------------------------------------------- WORKER_SHELL_TIMEOUT=120 # run_shell 单命令超时硬上限(秒),防 LLM 传超大 timeout 长期占满 worker 槽位。 WORKER_SHELL_TIMEOUT_MAX=600 WORKER_SHELL_CAPTURE_MAX_BYTES=524288 WORKER_HTTP_MAX_BYTES=1048576 WORKER_OUTPUT_TRUNCATE=4096 WORKER_LLM_TOOL_OUTPUT_TRUNCATE=4096 WORKER_HISTORY_FULL_TOOL_ROUNDS=4 WORKER_MAX_ROUNDS=90 # 派发前 5xx:冷却秒数;连续失败几次后停止自动重试(不算无漏洞)。 QUEUE_TRANSIENT_PREFILTER_COOLDOWN=900 QUEUE_TRANSIENT_PREFILTER_MAX_FAILURES=3 WORKER_SOFT_ROUNDS=45 WORKER_ROUND_BUDGET_CAP=0 WORKER_SOFT_ROUND_BUDGET_CAP=0 ENTERPRISE_WORKER_ROUND_BUDGET_CAP=0 ENTERPRISE_WORKER_SOFT_ROUND_BUDGET_CAP=0 # 提示词版本:current=省 token 版;legacy=旧版骨架+新工具说明;modern=完整版 WORKER_PROMPT_VERSION=current WORKER_JS_TOOL_ALWAYS_ON=0 WORKER_WORK_ROOT=/work # 工作目录自动清理:超过此天数未修改的目标工作目录将被自动删除(0=关闭自动清理) WORKER_WORK_RETENTION_DAYS=7 # 自动清理检查间隔(小时),默认每 6 小时检查一次 WORKER_WORK_CLEANUP_INTERVAL_HOURS=6 # 数据库备份:日常请用设置页导出/导入把文件带走。服务器默认不自动堆快照, # 点「立即打快照」只覆盖 backups/autohunter-latest.db.gz 这一份。 # 0=关闭定时快照(推荐)。KEEP=0 连这一份本地槽位也不写。 AUTOHUNTER_BACKUP_INTERVAL_HOURS=0 AUTOHUNTER_BACKUP_KEEP=1 # 备份前至少再留这么多空闲(MB),不够就拒绝,避免把库盘写满 AUTOHUNTER_BACKUP_RESERVE_MB=512 # 下载备份时若勾选工作目录,超过此大小则拒绝(MB) AUTOHUNTER_BACKUP_WORK_MAX_MB=512 # 恢复备份上传体积上限(字节),默认 8GB;其它 API 仍受 AUTOHUNTER_WAF_MAX_BODY 限制 # AUTOHUNTER_BACKUP_MAX_BODY=8589934592 WORKER_WALL_TIMEOUT=1800 WORKER_IDLE_TIMEOUT=1800 WORKER_MAX_WALL_TIMEOUT=7200 WORKER_WAIT_POLL_INTERVAL=10 WORKER_CLEANUP_TIMEOUT=15 TARGET_HEARTBEAT_INTERVAL=30 # 容器重启后是否自动恢复之前 running 的任务(0=只起 Web/API,不自动续跑) AUTOHUNTER_RESTORE_ON_STARTUP=1 # --------------------------------------------------------------------------- # 同款系统聚类(减少对同产品大量子域的重复 token 消耗) # --------------------------------------------------------------------------- TARGET_CLUSTER_DEAD_THRESHOLD=3 TARGET_CLUSTER_PENDING_LIMIT=3 # --------------------------------------------------------------------------- # 队列派发 / 探活 # --------------------------------------------------------------------------- QUEUE_DISPATCH_CANDIDATE_LIMIT=120 QUEUE_LIVENESS_TIMEOUT=6 QUEUE_LIVENESS_CACHE_TTL=300 # --------------------------------------------------------------------------- # 并发与线程池(默认按 CPU/内存自动档,含 Docker cgroup 限额) # 大约:1C1G→3 worker,2C4G→8,4C8G→12,8C16G→20,再大顶 32。 # 复制本文件为 .env 后不必改这些;只有要强制覆盖时才取消注释。 # AUTOHUNTER_WORKER_MAX_CONCURRENCY=8 # AUTOHUNTER_AGENT_THREAD_POOL_SIZE= # 不设 = 各类上限之和+4,不要填比总和更小的值 # AUTOHUNTER_DEFAULT_THREAD_POOL_SIZE= # AUTOHUNTER_COLLECTOR_IO_POOL_SIZE= # COLLECTOR_PREFILTER_CONCURRENCY= # COLLECTOR_SCORE_CONCURRENCY= # QUEUE_LIVENESS_CONCURRENCY= # QUEUE_LIVENESS_BATCH_SIZE= # --------------------------------------------------------------------------- AUTOHUNTER_WATCHDOG_INTERVAL=20 AUTOHUNTER_WATCHDOG_TIMEOUT=5 AUTOHUNTER_WATCHDOG_MAX_FAILURES=3 AUTOHUNTER_WATCHDOG_START_GRACE=20 AUTOHUNTER_WATCHDOG_DIAG_SIGNAL=USR1 AUTOHUNTER_WATCHDOG_DIAG_GRACE=3 AUTOHUNTER_LOOP_LAG_INTERVAL=5 AUTOHUNTER_LOOP_LAG_WARN_SECONDS=10 # --------------------------------------------------------------------------- # 审核 / 通杀 / 报告助手 # --------------------------------------------------------------------------- KILLSWEEP_DEDUP_SCAN_LIMIT=200 KILLSWEEP_MAX_ROUNDS=24 REVIEW_WALL_TIMEOUT=600 REVIEW_RETRY_BACKOFF=300 KILLSWEEP_WALL_TIMEOUT=3600 REPORT_ASSISTANT_WALL_TIMEOUT=300 REPORT_ASSISTANT_MAX_ROUNDS=10 REPORT_ASSISTANT_HISTORY_TURNS=6 REPORT_ASSISTANT_HISTORY_CHARS=1000