프로젝트 소개
# IPv6 웹 리소스 검사기 (webres6)
웹 페이지나 애플리케이션의 IPv6 전용 준비 상태를 확인하기 위한 명령줄 도구이자 웹 서비스입니다. Selenium을 사용해 웹사이트를 로드하고, 성능 로그에서 호스트 이름과 IP 주소를 추출한 뒤, 각 리소스가 IPv6 전용 네트워크에서 접근 가능한지 판별합니다.
## 기능
- Selenium(Chromium)을 사용해 웹 페이지를 크롤링하고 성능 로그에서 모든 호스트 이름과 IP 주소를 추출합니다
- 네이티브 IPv6 주소 사용 여부를 기준으로 리소스를 IPv6 준비 완료로 분류합니다
- 사용자 정의 Unbound 기반 리졸버(dnsprobe)를 사용해 IPv6 전용 DNS 해석을 테스트합니다
- 발견된 IP 주소에 대해 WHOIS 조회를 수행하여 인프라를 분석합니다
- IPv6 전용 준비 점수를 계산하고 결과 스코어보드를 유지합니다
- 사용자 정의 Selenium/Python 계측 코드를 지원합니다
- API 서버 측에서 NAT64 변환을 처리합니다
- REST API를 통해 구조화된 보고서를 JSON으로 내보냅니다
- 결과를 Valkey 또는 플랫 파일에 캐시하고 보관합니다
- 공개 접미사 목록을 사용해 도메인 이름을 분할합니다
## 구성 요소
- **API 서버** (`webres6-api`) — Selenium, dnsprobe, REST 엔드포인트를 갖춘 Flask 기반 서버
- **CLI 클라이언트** — API를 쿼리하고 결과를 표시하는 Python 명령줄 도구
- **웹 앱** — API가 제공하거나 독립형 뷰어로 사용할 수 있는 jQuery 기반 프런트엔드
- **MCP 서버** — AI 어시스턴트를 위한 Model Context Protocol 통합
## 설정
### 요구 사항
- API 서버용 Python 3.14 이상
- CLI 클라이언트용 Python 3.11 이상
- Selenium용 NAT64를 지원하는 듀얼 스택 또는 IPv6 전용 호스트
- DNS 프로빙을 위한 Python 바인딩이 포함된 libunbound
### 설치
uv를 통한 CLI:
```
uv tool install --from 'git+https://github.com/SAP/webres6#subdirectory=cli' webres6-cli
```
Docker Compose 설정은 API, NGINX, Selenium 컨테이너를 빌드합니다. Kubernetes 배포는 `helm/` 디렉터리의 Helm 차트를 통해 사용할 수 있습니다.
## 사용법
### CLI
```
webres6 [options] URL
```
옵션에는 스크린샷 캡처, JSON 내보내기, 타임아웃 제어, ASN 표시, 서버로의 점수 제출이 포함됩니다.
### 웹 앱
입력 필드에 URL을 입력하고 **Analyze**를 클릭합니다. 결과와 최근 스코어보드가 아래에 표시됩니다. 사용자 정의 CSS와 저장된 보고서 파일을 브라우저 창에 끌어다 놓아 렌더링할 수 있습니다.
### 데모
공개 인스턴스는 [webres6.dev.sap](https://webres6.dev.sap)에서 사용할 수 있습니다.
## 제한 사항
- Selenium을 실행하는 호스트에 듀얼 스택 연결이 필요합니다(또는 NAT64를 사용하는 IPv6 전용)
- IPv4 전용 호스트는 모든 리소스를 사용 불가로 보고합니다
- Chromium의 Happy Eyeballs는 응답이 느린 IPv6 호스트에 대해 IPv4를 선호할 수 있습니다
- 인증, 쿠키 동의 처리, JavaScript 지연 지원은 없습니다(사용자 정의 계측을 통해 확장 가능)
- 봇 트래픽을 위장하지 않습니다
## 라이선스
Copyright 2025 SAP SE 또는 SAP 계열사. Apache License 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 [LICENSE](LICENSE) 및 [REUSE](https://api.reuse.software/info/github.com/SAP/webres6)를 참조하십시오.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.