安装并使用 lnget,Lightning 原生 HTTP 客户端,支持自动 L402 支付。适用于在 Lightning 付费墙后下载文件、管理 L402 令牌、检查 Lightning 后端状态,或进行可能需要微支付的 HTTP 请求。
插入 - Lightning- Native HTTP 客户端. lnget 是一个wget/ curl 类的 CLI , 本地处理 L402( Lightni是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
lnget 是一个类似 wget/curl 的命令行工具,原生支持 L402(Lightning HTTP 402)认证。当服务器返回 HTTP 402 状态及 L402 挑战时,lnget 会自动支付对应的 Lightning 发票,并携带已支付凭证重试请求。
源码地址:github.com/lightninglabs/lnget
# 1. 安装 lnget skills/lnget/scripts/install.sh # 2. 初始化配置(自动检测本地 lnd) lnget config init # 3. 获取受 L402 保护的资源 lnget --max-cost 1000 https://api.example.com/paid-data
skills/lnget/scripts/install.sh
该脚本将执行以下操作:
go install github.com/lightninglabs/lnget/cmd/lnget@latestlnget 是否已在 $PATH 中如需手动安装:
go install github.com/lightninglabs/lnget/cmd/lnget@latest
或从源码构建:
git clone https://github.com/lightninglabs/lnget.git cd lnget make install
# 获取 URL(输出至标准输出)
lnget https://api.example.com/data.json
# 保存为文件
lnget -o data.json https://api.example.com/data.json
# 静默模式(适用于管道处理)
lnget -q https://api.example.com/data.json | jq .
# 断点续传
lnget -c -o largefile.zip https://api.example.com/largefile.zip
# 自定义 HTTP 方法并发送数据
lnget -X POST -d '{"query":"test"}' https://api.example.com/search
# 自定义 HTTP 头部
lnget -H "Accept: text/plain" https://api.example.com/data
# 设置最大自动支付金额(单位:satoshi) lnget --max-cost 5000 https://api.example.com/expensive.json # 设置最大路由手续费 lnget --max-fee 50 https://api.example.com/data.json # 预览但不支付(显示 402 挑战详情) lnget --no-pay https://api.example.com/data.json # 自定义支付超时时间 lnget --payment-timeout 120s https://api.example.com/data.json
# JSON 格式输出(默认,适合程序化调用) lnget --json https://api.example.com/data.json # 人类可读格式输出 lnget --human https://api.example.com/data.json # 详细模式(显示 L402 流程细节) lnget -v https://api.example.com/data.json # 禁用进度条 lnget --no-progress -o file.zip https://api.example.com/file.zip
lnget tokens)令牌按域名缓存于 ~/.lnget/tokens/,后续对该域名的请求将自动复用已缓存令牌。
# 列出所有已缓存令牌 lnget tokens list # 显示指定域名的令牌 lnget tokens show api.example.com # 删除某域名的令牌(强制重新认证) lnget tokens remove api.example.com # 清空全部令牌 lnget tokens clear --force
lnget config)# 在 ~/.lnget/config.yaml 初始化配置文件 lnget config init # 显示当前配置 lnget config show # 显示配置文件路径 lnget config path
lnget ln)# 检查后端连接状态 lnget ln status # 显示节点详细信息 lnget ln info
# 使用 LNC 配对短语与节点配对 lnget ln lnc pair "your-pairing-phrase" # 临时配对(不持久化会话) lnget ln lnc pair "phrase" --ephemeral # 列出已保存的 LNC 会话 lnget ln lnc sessions # 撤销某一会话 lnget ln lnc revoke
# 初始化嵌入式 Neutrino 钱包 lnget ln neutrino init # 获取充值地址 lnget ln neutrino fund # 查询钱包余额 lnget ln neutrino balance # 显示同步状态 lnget ln neutrino status
配置文件位于 ~/.lnget/config.yaml。运行 lnget config init 可创建该文件。
注意:由于 lnget 源码中缺少 YAML 结构体标签(struct tags),lnget config init 生成的 YAML 键名可能不正确(例如生成 tlscertpath 和 macaroonpath,而非正确的 tls_cert 和 macaroon)。请以如下示例配置为准。若配置文件由 lnget config init 生成,请确认其中 ln.lnd 下的字段名与下方格式一致。
l402:
max_cost_sats: 1000 # 允许自动支付的最大发票金额(单位:satoshi)
max_fee_sats: 10 # 允许的最大路由手续费(单位:satoshi)
payment_timeout: 60s # 支付超时时间
auto_pay: true # 启用自动支付
http:
timeout: 30s
max_redirects: 10
user_agent: "lnget/0.1.0"
allow_insecure: false
ln:
mode: lnd # 可选值:lnd、lnc、neutrino
lnd:
host: localhost:10009
tls_cert: ~/.lnd/tls.cert
macaroon: ~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon
network: mainnet
output:
format: json
progress: true
verbose: false
tokens:
dir: ~/.lnget/tokens
环境变量可覆盖配置项,前缀为 LNGET_:
export LNGET_L402_MAX_COST_SATS=5000 export LNGET_LN_MODE=lnc export LNGET_LN_LND_HOST=localhost:10009
| 码值 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 通用错误 |
| 2 | 支付金额超出最大限额 |
| 3 | 支付失败 |
| 4 | 网络或连接错误 |
当 lnget 收到 402 响应时,执行以下流程:
WWW-Authenticate: L402 macaroon="...", invoice="..." 头部--max-cost 设置~/.lnget/tokens// Authorization: L402 : 重试请求后续对该域名的请求将直接复用缓存令牌,无需再次支付。
# 获取前先检查成本
result=$(lnget --no-pay --json https://api.example.com/data.json)
cost=$(echo "$result" | jq -r '.invoice_amount_sat // 0')
if [ "$cost" -le "$BUDGET" ]; then
lnget --max-cost "$BUDGET" -q https://api.example.com/data.json
fi
# 仅提取响应体 lnget --json -q https://api.example.com/data.json | jq '.body' # 检查是否发生了支付 lnget --json https://api.example.com/data.json | jq '.l402_paid'
# 本地开发时对接 aperture(无 TLS) lnget -k https://localhost:8081/api/data
| 路径 | 用途 |
|---|---|
~/.lnget/config.yaml |
配置文件 |
~/.lnget/tokens/ |
按域名划分的令牌存储目录 |
~/.lnget/lnc/sessions/ |
LNC 会话持久化目录 |
~/.lnget/neutrino/ |
嵌入式钱包数据目录 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章