AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

안드로이드 기반 SMS OTP 전송 시스템 구축 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

앱 개발, DevOps

대상자

  • 초보 백엔드 개발자/에스컬레이션 해커
  • 로컬 환경에서 OTP 시스템 테스트를 원하는 개발자
  • Termux와 Python 활용한 자동화 기술 학습자

핵심 요약

  • 📱 Termux + Python + Cloudflare Tunnel 조합으로 로컬 OTP 서버 구축 가능
  • Flask 기반 HTTP 서버에서 termux-sms-send 명령어를 활용한 SMS 자동 전송 구현
  • 포트 포워딩을 통해 로컬 서버를 외부에서 접근 가능하게 하는 기술적 핵심

섹션별 세부 요약

1. 개발 환경 구성

  • Termux 설치

- F-Droid에서 Termux 및 Termux:API 앱 설치

- pkg install pythonpip install flask 명령어로 Python 환경 구성

  • 필요 라이브러리 설치

- termux-api 패키지 설치로 Android SMS API 접근 가능

- flask 설치로 웹 서버 구동

2. OTP 전송 서버 구현

  • sms_sender.py 스크립트 구성

```python

class RequestHandler(BaseHTTPRequestHandler):

def do_POST(self):

if self.path == "/send-sms":

data = json.loads(self.rfile.read(...))

command = f'termux-sms-send -n {data["phone"]} "Your OTP is {data["otp"]}"'

os.system(command) # Termux 명령어 실행

```

  • HTTP 8080 포트에서 서버 실행

- HTTPServer(server_address, RequestHandler) 실행

3. 포트 포워딩 기술

  • 로컬 서버 외부 노출 방법

- Cloudflare Tunnel 또는 Ngrok 사용

- cloudflared tunnel --url http://localhost:8080 명령어로 공개 URL 생성

  • 외부 요청 처리 흐름
  1. 외부에서 POST http://public-url/send-sms 요청
  2. Termux 서버에서 termux-sms-send 명령어 실행
  3. Android 기기로 SMS 전송

4. 완전한 OTP 시스템 연동

  • 백엔드 통합 예시

- Node.js + MongoDB에서 OTP 생성 및 저장

- 생성된 OTP를 Termux 서버로 전송

- 사용자 입력 OTP와 데이터베이스 값 비교

결론

  • Cloudflare Tunnel 또는 Ngrok 사용으로 로컬 서버를 외부에 노출하는 것이 핵심
  • termux-sms-send 명령어를 활용한 SMS 자동 전송은 제3자 SMS API 없이도 가능
  • Flask + Python 기반으로 가볍고 빠른 OTP 서버 구축 가능