> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/ko/docs/similarity

# 도메인 유사성

DomScan API로 Levenshtein 거리, Jaro-Winkler 유사도, 시각적 동형 문자 분석을 포함한 여러 알고리즘으로 두 도메인의 시각적, 텍스트 유사도를 비교합니다.

Levenshtein 거리, Jaro-Winkler 유사도, 시각적 동형 문자 분석을 포함한 여러 알고리즘으로 두 도메인의 시각적, 텍스트 유사도를 비교합니다. 타이포스쿼팅, 브랜드 사칭, 피싱 도메인을 탐지하는 데 유용합니다.

GET /v1/similarity

#### 쿼리 매개변수

| 매개변수 | 유형 | 설명 |
| --- | --- | --- |
| domain1 필수 | string | 첫 번째 도메인 (일반적으로 합법적인 도메인) |
| domain2 필수 | string | 두 번째 도메인 (잠재적으로 의심스러운 도메인) |

#### 유사성 알고리즘

| 알고리즘 | 설명 |
| --- | --- |
| `levenshtein` | 정규화된 편집 거리 (0-1) |
| `jaro_winkler` | 접두사 가중치 문자열 유사성 |
| `visual` | 동형/동형 문자 감지 |

#### 예제 요청

```bash
curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/similarity?domain1=paypal.com&domain2=paypa1.com"
```

```python
import requests

domscan = requests.Session()
domscan.headers.update({"X-API-Key": "your-api-key"})

# 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 = domscan.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})")
```

#### 예제 응답

```json
{
  "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 |
| `overall_similarity` | number |
| `risk_level` | string |
| `analysis` | object |
| `analysis.levenshtein_distance` | integer |
| `analysis.levenshtein_similarity` | number |
| `analysis.jaro_winkler_similarity` | number |
| `analysis.visual_similarity` | number |
| `analysis.keyboard_distance` | number |
| `analysis.common_prefix_length` | integer |
| `analysis.common_suffix_length` | integer |
| `matching_methods[]` | string[] |
| `is_potential_typosquat` | boolean |
| `checked_at` | string |
| `meta` | object |
