개발자 참고자료
도메인 유사성 API 문서
도메인 유사성 API 문서: Levenshtein 거리, Jaro-Winkler 유사성, 시각적 동형 분석을 포함한 여러 알고리즘을 사용하여 두 도메인의 시각적 및 텍스트 유사성을 비교합니다. 타이포스쿼팅, 브랜드 사칭, 피싱 도메인 감지에 필수적입니다.
도메인 유사성
Levenshtein 거리, Jaro-Winkler 유사성, 시각적 동형 분석을 포함한 여러 알고리즘을 사용하여 두 도메인의 시각적 및 텍스트 유사성을 비교합니다. 타이포스쿼팅, 브랜드 사칭, 피싱 도메인 감지에 필수적입니다.
GET
/v1/similarity
쿼리 매개변수
| 매개변수 | 유형 | 설명 |
|---|---|---|
| domain1 필수 | string | 첫 번째 도메인 (일반적으로 합법적인 도메인) |
| domain2 필수 | string | 두 번째 도메인 (잠재적으로 의심스러운 도메인) |
유사성 알고리즘
| 알고리즘 | 설명 |
|---|---|
levenshtein | 정규화된 편집 거리 (0-1) |
jaro_winkler | 접두사 가중치 문자열 유사성 |
visual | 동형/동형 문자 감지 |
예제 요청
curl "https://domscan.net/v1/similarity?domain1=paypal.com&domain2=paypa1.com"
import requests
# Check multiple suspicious domains
legit = "paypal.com"
suspects = ["paypa1.com", "paypaI.com", "pаypal.com"] # Note: last one has Cyrillic 'а'
for suspect in suspects:
response = requests.get(
"https://domscan.net/v1/similarity",
params={"domain1": legit, "domain2": suspect}
)
data = response.json()
print(f"{suspect}: {data['typosquatting_risk']} risk (visual: {data['similarity']['visual']:.2f})")
예제 응답
{
"domain1": "paypal.com",
"domain2": "paypa1.com",
"similarity": {
"levenshtein": 0.86,
"jaro_winkler": 0.93,
"visual": 0.95
},
"is_similar": true,
"typosquatting_risk": "high",
"homoglyphs_detected": ["l → 1"],
"risk_factors": ["character_substitution", "high_visual_similarity"]
}
응답 필드
| 필드 | 유형 |
|---|---|
domain1 |
string |
domain2 |
string |
similarity_score |
number |
visual_similarity |
number |
textual_similarity |
number |
is_confusable |
boolean |
risk_level |
string |