编程 HTTPSMS:用Android手机做SMS网关,HTTP API收发短信+端到端加密

2026-06-21 07:21:58 +0800 CST views 11

HTTPSMS:用 Android 手机做 SMS 网关,HTTP API 收发短信 + 端到端加密

标签: SMS / 网关 / Android / 开源 / Go / Kotlin / HTTP API / 自托管 / 端到端加密 / 2FA
原文: 微信公众号「AI 开源提效指南」https://mp.weixin.qq.com/s/JNYdiEM-6oXzXXuv-MpzNg
GitHub: https://github.com/NdoleStudio/httpsms
文档: https://docs.httpsms.com
License: AGPL-3.0


一句话定位

HTTPSMS 是一个开源短信网关服务,核心逻辑:你的 Android 手机就是短信网关。安装 App → 调用 HTTP API → 通过手机号收发短信,完全自托管,数据完全掌控。


架构设计

HTTPSMS 由三层组成:

┌─────────────────────────────────────────────────────┐
│                 你的应用/脚本                         │
│           调用 HTTP API: /v1/messages/send           │
└──────────────────────┬──────────────────────────────┘
                       │ HTTP 202 Accepted
                       ▼
┌─────────────────────────────────────────────────────┐
│             httpSMS API (Go + Fiber)                │
│  - 接收消息请求 → 推送到 Push Queue                   │
│  - 异步处理 → 通过 FCM 通知 Android App              │
│  - 接收发送结果 → 返回状态                            │
└──────────────────────┬──────────────────────────────┘
                       │ Firebase Cloud Messaging
                       ▼
┌─────────────────────────────────────────────────────┐
│          Android App (Kotlin + Material Design)     │
│  - 接收 FCM 推送通知                                 │
│  - 调用 Android SMS API 发送短信                     │
│  - 返回发送结果给 API                                │
│  - 收到的短信可转发到 Webhook                         │
└─────────────────────────────────────────────────────┘

消息发送流程

  1. 用户 → 调用 /v1/messages/send API
  2. API → 推送通知到队列
  3. API → 立即返回 202 Accepted(异步,不阻塞)
  4. 队列 → 通过 FCM 推送给 Android 手机
  5. Android App → 收到推送 → 调用 SMS API 发送
  6. Android App → 返回发送结果 + 送达报告

关键设计:API 立即返回 202,实际发送异步完成。


核心功能

功能说明
📤 HTTP API 发短信通过 REST API 调用手机发送短信
📥 Webhook 收短信收到短信后推送到你的服务器
🔐 端到端加密AES-256 加密,密钥只在手机上
🚦 速率控制自定义发送频率,防止运营商封号
消息过期设置有效期,超时自动过期并通知
🐳 Docker 自托管完全控制数据,不依赖第三方
🌐 多语言 SDKGo / JS / Python / PHP / Java / C# / curl

安全特性

端到端加密(E2EE)

  • 🔑 加密密钥只存储在 Android 手机上
  • 🛡️ 即使服务器被攻破,也无法读取短信内容
  • 🔒 发送和接收的短信都是加密传输

速率控制(Back Pressure)

# 设置每分钟最多发送 3 条短信
# 即使一次性调用 100 次,实际也只按 3 条/分钟的速度发送

消息过期

# 设置消息有效期为 5 分钟
# 如果 5 分钟内手机没有收到推送,消息自动过期并通知

解决 Android 推送延迟导致短信发送失败的问题。


API 使用示例

Go SDK

import "github.com/NdoleStudio/httpsms-go"

client := httpsms.New(...)

client.Messages.Send(context.Background(), &httpsms.MessageSendParams{
    Content: "这是一条测试短信",
    From:    "+18005550199",
    To:      "+18005550100",
})

JavaScript/TypeScript

fetch('https://your-server/v1/messages/send', {
    method: 'POST',
    headers: {
        'x-api-key': "xxx",
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        "content": "这是一条测试短信",
        "from": "+18005550199",
        "to": "+18005550100"
    })
})
.then(res => res.json())
.then(data => console.log(data));

Python

import requests, json

headers = {
    'x-api-key': "xxx",
    'Accept': 'application/json',
    'Content-Type': 'application/json'
}

payload = {
    "content": "这是一条测试短信",
    "from": "+18005550199",
    "to": "+18005550100"
}

response = requests.post(
    'https://your-server/v1/messages/send',
    headers=headers,
    data=json.dumps(payload)
)
print(response.json())

典型使用场景

🔑 2FA 验证码

为个人应用或内部系统搭建低成本的身份验证系统,不依赖第三方短信平台。

🚨 运维告警

服务器宕机、CPU 飙升时,第一时间通过手机发送告警短信。短信到达率比邮件和推送更高。

🧪 自动化测试

开发过程中自动接收并验证短信验证码,集成到 CI/CD 流程。

📡 物联网通知

让没有直接联网的设备通过手机通信回传状态。


与其他方案对比

特性HTTPSMSTwilio云短信自建 GSM Modem
成本免费(自托管)/ 低费用按条收费按条收费硬件成本
端到端加密✅ AES-256✅ 本地
自托管✅ 完全支持
Webhook
速率控制
消息过期⚠️
开源✅ AGPL-3.0

技术栈

组件技术
API 服务Go + Fiber
Android AppKotlin + Material Design
推送通道Firebase Cloud Messaging (FCM)
部署Docker 自托管
加密AES-256 E2EE

快速开始

Docker 自托管部署

  1. 准备一台 Android 手机
  2. 安装 HTTPSMS Android App
  3. Docker 部署 API 服务
  4. 配置 FCM 推送
  5. 开始调用 API 收发短信

详细步骤见官方文档:https://docs.httpsms.com


总结

HTTPSMS 的核心价值在于:把你的 Android 手机变成一个完全可控的短信网关

  • 💰 零短信费用(自托管,走手机套餐)
  • 🔐 端到端加密(AES-256,密钥只在手机上)
  • 🐳 完全自托管(数据不经过第三方)
  • 🌐 多语言 SDK(6+ 语言开箱即用)
  • 🚦 内置速率控制(防封号)
  • 📡 Webhook 接收(短信自动推送到你的服务器)

如果你需要低成本的短信能力(2FA、告警、测试、IoT),又不想依赖第三方短信平台,HTTPSMS 是目前最优雅的开源方案。


相关链接


Keywords: HTTPSMS, SMS 网关, Android, Go, Kotlin, HTTP API, 自托管, 端到端加密, AES-256, 2FA, 运维告警, Webhook, 开源项目

推荐文章

windows下mysql使用source导入数据
2024-11-17 05:03:50 +0800 CST
阿里云发送短信php
2025-06-16 20:36:07 +0800 CST
四舍五入五成双
2024-11-17 05:01:29 +0800 CST
在Vue3中实现代码分割和懒加载
2024-11-17 06:18:00 +0800 CST
go命令行
2024-11-18 18:17:47 +0800 CST
在 Nginx 中保存并记录 POST 数据
2024-11-19 06:54:06 +0800 CST
Redis和Memcached有什么区别?
2024-11-18 17:57:13 +0800 CST
程序员茄子在线接单