> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Codis d'advertència d'empremta de dispositiu i risc d'IP

> Tots els codis d'advertència d'anàlisi de dispositiu i IP de Didit: VPN/Tor, país no coincident, llistes de bloqueig i dispositius duplicats.

## Visió general

L'Anàlisi de dispositiu i IP emet etiquetes d'advertència a `ip_analyses[].warnings[]` cada vegada que detecta un comportament sospitós de dispositiu, xarxa o ubicació. Nou etiquetes tenen una acció configurable (Rebutjar / Revisar / Cap acció) per node del flux de treball; les dues etiquetes de llista de bloqueig forcen sempre `Declined`, i les dues etiquetes de llista d'admesos són sempre informatives. El `log_type` de cada advertència reflecteix l'acció aplicada: `error` (Rebutjar), `warning` (Revisar) o `information` (Cap acció). Cada risc s'activa com a màxim un cop per sessió.

Tots els riscos següents es verifiquen contra el flux de decisions de producció; les advertències inclouen l'etiqueta de funcionalitat `LOCATION` i l'estructura estàndard d'[objecte d'advertència](https://docs.didit.me/ca/reference/data-models.md#objecte-d’advertència).

Les advertències de l'empremta digital del dispositiu estan dividides intencionadament en senyals exactes i recuperats:

* `DUPLICATED_DEVICE_FINGERPRINT` significa que s'ha reutilitzat la mateixa identitat determinista del dispositiu (`match_source` `persistent_id` o `legacy_fp`) en diferents sessions amb valors de `vendor_data` diferents.
* `DEVICE_RECOVERED_HIGH_CONFIDENCE` significa que la recuperació de l'empremta digital v2 ha vinculat la sessió amb un dispositiu vist anteriorment **després** que l'ID persistent canviés (emmagatzematge esborrat, mode d'incògnit, reinstal·lació de l'aplicació). L'advertència només apareix quan la coincidència supera el llindar de similitud d'alta confiança i els controls estrictes.

![Exemple d'advertències de l'Anàlisi de dispositiu i IP de Didit amb alertes de dispositiu, VPN, proxy i discrepància d'ubicació](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/ip-analysis-warning-example.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=370f87af45a6138ebd7454abe9131665)

## Advertències generades

| Risc | Causa | `log_type` | Afecta l'estat | Correcció recomanada |
| - | - | - | - | - |
| `PRIVATE_NETWORK_DETECTED` | `is_vpn_or_tor` era `true`: la sessió s'ha obert mitjançant una VPN, un proxy o un node de sortida de Tor. `additional_data` és `null`. | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: No action). | Decideix si la teva tolerància al risc permet el trànsit emmascarat. Si l'acceptes, deixa-ho a No action. |
| `COUNTRY_FROM_DOCUMENT_DOES_NOT_MATCH_COUNTRY_FROM_IP` | El codi de país ISO del document d'identitat difereix del país derivat de l'adreça IP. `additional_data` conté tots dos codis ISO-3: `document_country_code`, `ip_country_code`. | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: No action). | Revisa quan l'usuari viatgi legítimament. Rebutja quan es combini amb senyals de VPN o de dispositiu duplicat. |
| `EXPECTED_IP_ADDRESS_MISMATCH` | La sessió s'ha creat amb una adreça IP esperada, i la IP real en difereix. `additional_data` conté `expected_ip_address` i `actual_ip_address`. | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: No action). | Utilitza-ho quan fixis prèviament la IP durant la creació de la sessió. Rebutja la sessió o reforça l'autenticació si no coincideixen. |
| `IP_ADDRESS_IN_BLOCKLIST` | L'adreça IP de la sessió coincideix amb una entrada de la llista de bloqueig d'IP de l'aplicació. `additional_data`: `ip_address`. | sempre `error` | Força `Declined`. | Rebutja la sessió. Audita la font de la llista de bloqueig per detectar falsos positius si cal. |
| `DEVICE_FINGERPRINT_IN_BLOCKLIST` | L'empremta digital de dispositiu de la sessió coincideix amb una entrada de la llista de bloqueig de dispositius. `additional_data`: `device_fingerprint`. | sempre `error` | Força `Declined`. | Rebutja la sessió. |
| `IP_ADDRESS_IN_ALLOWLIST` | La IP de la sessió tenia coincidències duplicades, però és a la llista d'admesos d'IP de l'aplicació, de manera que s'ha omès l'advertència d'IP duplicada. `additional_data`: `ip_address`. | sempre `information` | Cap. | Utilitza-ho per a NAT corporatius de confiança, xarxes de QA o punts d'accés compartits coneguts. |
| `DEVICE_FINGERPRINT_IN_ALLOWLIST` | L'empremta digital de dispositiu de la sessió tenia coincidències deterministes duplicades, però és a la llista d'admesos de dispositius, de manera que s'ha omès l'advertència de dispositiu duplicat. `additional_data`: `device_fingerprint`. | sempre `information` | Cap. | Utilitza-ho només per a dispositius compartits de confiança. Les llistes de bloqueig continuen tenint prioritat. |
| `DUPLICATED_IP_ADDRESS` | S'ha utilitzat la mateixa IP en una altra sessió amb un `vendor_data` diferent. `additional_data`: `duplicated_session_id`, `duplicated_session_number`, `api_service`. S'omet quan la IP és a la llista d'admesos. | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: No action). | Habitual en NAT corporatius o compartits. Combina-ho amb altres senyals (dispositiu duplicat, discrepància de país) abans de rebutjar. |
| `DUPLICATED_DEVICE_FINGERPRINT` | S'ha reutilitzat la mateixa identitat determinista de dispositiu en diverses sessions amb un `vendor_data` diferent. `additional_data`: `duplicated_session_id`, `duplicated_session_number`, `api_service`, `match_source` (`persistent_id` o `legacy_fp`). S'omet quan l'empremta digital és a la llista d'admesos. | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: No action). | Indici clar d'abús multicompte. Revisa o rebutja segons la tolerància al frau. |
| `DEVICE_RECOVERED_HIGH_CONFIDENCE` | El model de recuperació de dispositiu v2 ha vinculat la sessió amb un dispositiu vist anteriorment amb un nivell alt de confiança, fins i tot després que l'ID persistent canviés. `additional_data`: `duplicated_session_id`, `duplicated_session_number`, `api_service`, `match_source` (`recovered_high`), `recovery_similarity`, `recovery_match_device_uuid`. La llista d'autorització de dispositius no ho suprimeix. | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: No action). | Comença amb Review, mesura la taxa de falsos positius i després endureix l'acció. Senyal fort d'intents de restabliment d'emmagatzematge o de mode d'incògnit. |
| `DEVICE_LINKED_TO_LIVENESS_ATTACK` | S'ha utilitzat el mateix dispositiu (identificat mitjançant el seu ID de dispositiu persistent) en una sessió anterior d'un altre usuari la captura de prova de vida del qual es va considerar un atac. Un dispositiu utilitzat prèviament per atacar la verificació de prova de vida és un indici clar que aquesta captura prové del mateix atacant. `additional_data`: `liveness_attack_session_id`, `liveness_attack_session_number`, `liveness_attack_sessions_count`, `match_source` (`persistent_id`). | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: No action). | Comença amb Review i mesura la teva taxa de falsos positius abans de passar a Decline. |
| `DEVICE_MODEL_INCONSISTENT` | El mateix dispositiu (identificat mitjançant el seu ID de dispositiu persistent) s'havia informat d'un model de dispositiu diferent en una sessió anterior. Un dispositiu físic no canvia de model, per la qual cosa és probable que el model notificat hagi estat suplantat o que l'identificador de dispositiu s'hagi copiat a un altre dispositiu. Les cadenes de models genèrics no es comparen mai. `additional_data`: `device_model`, `earlier_device_model`, `earlier_session_id`, `earlier_session_number`, `match_source`. | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: No action). | Compara els dos models notificats i revisa la sessió anterior abans d'actuar. |
| `IP_LOCATION_NOT_ALLOWED` | La georestricció d'IP està activada i la IP de la sessió es troba en un país o estat/regió marcat com a no permès. `additional_data`: `ip_country_code` (ISO-3), `ip_country`, `ip_state`, `restricted_by` (`country` o `state`). | reflecteix l'acció configurada | Configurable: Decline / Review / No action (per defecte: Decline). | Utilitza-ho per aplicar restriccions jurisdiccionals. Combina-ho amb `vpn_detection_action` perquè el trànsit emmascarat no pugui eludir la restricció geogràfica. |

Quan el dispositiu recuperat encara no té sessions germanes elegibles (de manera que no s'afegeix res a `matches[]`), `DEVICE_RECOVERED_HIGH_CONFIDENCE` s'activa igualment amb una estructura d'`additional_data` de contingència: `recovery_match_device_uuid`, `recovery_match_similarity`, `recovery_match_band`, `recovery_gate_reason`.

`IP_LOCATION_NOT_ALLOWED` s'activa quan la georestricció d'IP està activada (`is_ip_geofencing_enabled`) i la IP de la sessió es troba en un país o estat/regió marcat com a no permès a `ip_geofencing_by_country`. `additional_data` conté `ip_country_code` (ISO-3), `ip_country`, `ip_state` i `restricted_by` (`country` o `state`). Les entrades d'estat/regió tenen prioritat sobre l'indicador de país i es comparen sense distingir entre majúscules i minúscules amb el nom de la regió del proveïdor d'IP (per exemple, `"California"`); els països no llistats a la configuració estan permesos.

## Integritat del dispositiu i del temps d'execució

Senyals reportats pels SDK natius i el client web que descriuen l'estat del dispositiu en què s'ha executat la verificació. Existeixen per detectar atacs d'injecció: un atacant que pugui obtenir accés root a un dispositiu o interceptar el procés de l'aplicació pot substituir el flux de vídeo de la càmera abans que arribi als controls biomètrics.

Cadascun és configurable per flux de treball i per defecte està establert en **sense acció**, de manera que activar la funcionalitat no canvia cap decisió fins que no ho decideixis.

| Risc | Causa | Clau de configuració | Per defecte |
| - | - | - | - |
| `DEVICE_APP_TAMPERED` | L'atestació de la plataforma no ha pogut verificar que la sol·licitud provingués d'una versió genuïna i no modificada de l'aplicació en un dispositiu genuí. | `device_app_tampered_action` | `NO_ACTION` |
| `DEVICE_RUNTIME_HOOKING_DETECTED` | S'ha detectat un marc d'instrumentació o d'intercepció en temps d'execució (Frida, Xposed, LSPosed, Substrate) al procés de l'aplicació. | `device_hooking_action` | `NO_ACTION` |
| `DEVICE_ROOTED_OR_JAILBROKEN` | El dispositiu mostra indicadors de root o jailbreak, els quals eliminen les proteccions del sistema operatiu que eviten la intercepció de la càmera. | `device_rooted_action` | `NO_ACTION` |
| `DEVICE_EMULATOR_DETECTED` | La sessió s'ha originat des d'un emulador o simulador en lloc d'un dispositiu físic. | `device_emulator_action` | `NO_ACTION` |
| `DEVICE_DEBUGGER_ATTACHED` | S'ha connectat un depurador o traçador de processos a l'aplicació durant la verificació. | `device_debugger_action` | `NO_ACTION` |
| `AUTOMATION_FRAMEWORK_DETECTED` | La sessió ha estat controlada per un marc d'automatització de navegadors o un navegador sense interfície en lloc d'una persona. | `automation_detected_action` | `NO_ACTION` |
| `DEVICE_INTEGRITY_SIGNALS_MISSING` | El client ha reportat una versió de l'SDK compatible amb els informes d'integritat, però no ha arribat cap senyal d'integritat —cosa que pot indicar que els senyals s'han eliminat en trànsit. | `device_integrity_missing_action` | `NO_ACTION` |

> [!NOTE]
>
> Cada comprovació es realitza tan bé com és possible. Quan una comprovació no es pot executar, reporta **no determinat** en lloc d'indicar que el resultat és net, de manera que una comprovació fallida mai no produeix un fals positiu contra un usuari legítim. Els senyals es reporten a partir de la versió **4.4.0** de l'SDK natiu; les sessions de versions anteriors de l'SDK legítimament no envien res i mai no generen `DEVICE_INTEGRITY_SIGNALS_MISSING`.

> [!WARNING]
>
> Els senyals de root i emulador són habituals entre usuaris legítims en dispositius modificats però no fraudulents. Comença configurant-los en Revisió en lloc de Rebutjar i observa la teva pròpia taxa de rebuig abans d'endurir la configuració.

## Paràmetres configurables

Controls de flux de treball per node (també configurables globalment a la configuració de verificació de l'aplicació; cada acció té el valor per defecte **Sense acció** tret que s'indiqui el contrari):

| Paràmetre | Controla | Per defecte |
| - | - | - |
| `vpn_detection_action` | `PRIVATE_NETWORK_DETECTED` | Sense acció |
| `ip_mismatch_action` | `COUNTRY_FROM_DOCUMENT_DOES_NOT_MATCH_COUNTRY_FROM_IP` | Sense acció |
| `expected_ip_mismatch_action` | `EXPECTED_IP_ADDRESS_MISMATCH` | Sense acció |
| `duplicated_ip_action` | `DUPLICATED_IP_ADDRESS` | Sense acció |
| `duplicated_device_action` | `DUPLICATED_DEVICE_FINGERPRINT` | Sense acció |
| `recovered_device_action` | `DEVICE_RECOVERED_HIGH_CONFIDENCE` | Sense acció |
| `device_liveness_attack_history_action` | `DEVICE_LINKED_TO_LIVENESS_ATTACK` | Sense acció |
| `device_model_inconsistency_action` | `DEVICE_MODEL_INCONSISTENT` | Sense acció |
| `ip_geofencing_action` | `IP_LOCATION_NOT_ALLOWED` | Rebutjar |

Les llistes d'IP i dispositius permesos només suprimeixen l'advertència d'IP duplicada exacta o de dispositiu duplicat determinista corresponent al valor permès de la llista. No suprimeixen les advertències de VPN/proxy, discrepància de país, discrepància d'IP esperada, dispositiu recuperat o les advertències de llista de bloqueig.

Les advertències de dispositiu recuperat són útils per detectar xarxes de frau que alternen comptes i sessions des del mateix maquinari, però Didit és conservador per disseny: el sistema prefereix passar per alt alguns usuaris duplicats abans que fusionar dispositius no relacionats quan les proves no són prou sòlides. **Desplegament recomanat**: comença amb Revisió, observa el volum durant dues setmanes i després fes l'acció més estricta si la teva taxa de falsos positius és baixa.

## Dispositiu duplicat enfront de dispositiu recuperat

Tracta les dues advertències de manera diferent; s'activen a partir de proves diferents:

| Advertència | Activador | Significat típic | Primera acció recomanada |
| - | - | - | - |
| `DUPLICATED_DEVICE_FINGERPRINT` | Coincidència exacta de la identitat persistent del dispositiu (`persistent_id`) o del hash d'empremta digital heretat (`legacy_fp`). | Prova sòlida que el mateix dispositiu apareix associat a diferents usuaris. | Revisar o rebutjar, segons la teva tolerància al frau. |
| `DEVICE_RECOVERED_HIGH_CONFIDENCE` | Recuperació v2 d'alta confiança (`recovered_high`) després que la identitat de l'emmagatzematge, de la sessió o de l'aplicació hagi canviat. | Senyal fort d'intents d'utilitzar el mode d'incògnit, de restablir l'emmagatzematge o de reinstal·lar l'aplicació. Separat intencionadament perquè puguis monitorar-lo de manera independent. | Comença per Revisar i després fes l'acció més estricta un cop mesurada la teva taxa de falsos positius. |

## Coincidències entre sessions

Quan es detecta la mateixa adreça IP, la identitat exacta del dispositiu o un dispositiu recuperat en sessions que pertanyen a **usuaris diferents**, Didit les registra com a `matches[]` a `ip_analyses[]`. Les sessions s'agrupen per `vendor_data`: les sessions amb el mateix `vendor_data` es tracten com el mateix usuari i s'exclouen de les coincidències. Sense `vendor_data`, cada sessió es tracta com un usuari únic i es mostren tots els duplicats potencials — recomanem fermament proporcionar sempre `vendor_data` per reduir el soroll.

Cada coincidència inclou:

* `session_id`, `session_number`, `vendor_data` i `verification_date` de la sessió coincident, a més del seu `status` de cicle de vida i `api_service` (`null` per a sessions de flux de treball); `source` sempre és `session`
* `match_type` — `ip_address` o `device_fingerprint`
* `match_source` — `ip_address`, `persistent_id`, `legacy_fp` o `recovered_high`
* `matched_value` — la IP compartida, l'identificador de dispositiu o (en coincidències recuperades) l'UUID del dispositiu recuperat
* `confidence` (0–1, `1 - P(false positive)`) i `match_mode` (`deterministic` / `probabilistic` / `co_occurrence`)
* `device_info` — `device_brand`, `device_model`, `browser_family`, `os_family`, `platform`, `device_fingerprint`
* `location_info` — `ip_address`, `ip_country`, `ip_country_code`, `ip_state`, `ip_city`, `is_vpn_or_tor`, `is_data_center`
* Dades addicionals de dispositius recuperats quan `match_source` és `recovered_high`: `recovery_similarity`, `tls_ja4_corroborated`, `recovery_gate_reason`

Les coincidències d'IP i de dispositiu estan limitades a 5 cadascuna (com a màxim 10 entrades). Consulta la [pàgina de l'informe](https://docs.didit.me/ca/core-technology/ip-analysis/report-ip-analysis.md#semàntica-de-coincidències) per veure l'esquema complet de coincidències i el model de confiança.

## Exemples

### VPN + discordança de país (configurat a Revisió)

```json theme={null}
{
  "warnings": [
    {
      "feature": "LOCATION",
      "risk": "PRIVATE_NETWORK_DETECTED",
      "additional_data": null,
      "log_type": "warning",
      "short_description": "Private network (VPN/Tor) detected",
      "long_description": "The system detected that the user tried to use a private network (VPN/TOR) to complete the verification process.",
      "node_id": "ip-1"
    },
    {
      "feature": "LOCATION",
      "risk": "COUNTRY_FROM_DOCUMENT_DOES_NOT_MATCH_COUNTRY_FROM_IP",
      "additional_data": { "document_country_code": "ESP", "ip_country_code": "NLD" },
      "log_type": "warning",
      "short_description": "Document country does not match IP country",
      "long_description": "The country from the document does not match the country from the IP address, suggesting a potential mismatch between the document and the user's location.",
      "node_id": "ip-1"
    }
  ]
}
```

### Coincidència amb la llista de bloqueig (força el rebuig)

```json theme={null}
{
  "warnings": [
    {
      "feature": "LOCATION",
      "risk": "IP_ADDRESS_IN_BLOCKLIST",
      "additional_data": { "ip_address": "45.61.20.5" },
      "log_type": "error",
      "short_description": "IP address in blocklist",
      "long_description": "The IP address used for this session was found in the application's IP blocklist, indicating a known suspicious or forbidden origin.",
      "node_id": "ip-1"
    }
  ]
}
```

### Dispositiu recuperat d'alta confiança (configurat a Revisió)

```json theme={null}
{
  "warnings": [
    {
      "feature": "LOCATION",
      "risk": "DEVICE_RECOVERED_HIGH_CONFIDENCE",
      "additional_data": {
        "duplicated_session_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
        "duplicated_session_number": 5101,
        "api_service": null,
        "match_source": "recovered_high",
        "recovery_similarity": 0.9874,
        "recovery_match_device_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
      },
      "log_type": "warning",
      "short_description": "Device matches a previously seen device with high confidence",
      "long_description": "A previously seen device matched this session with high confidence through v2 fuzzy fingerprint recovery after passing strict hard gates, indicating the same physical device under a fresh persistent_id.",
      "node_id": "ip-1"
    }
  ]
}
```

## Relacionat

* [Informe d'anàlisi de dispositiu i IP](https://docs.didit.me/ca/core-technology/ip-analysis/report-ip-analysis.md) — estructura completa de la resposta i semàntica de l'estat
* [Visió general de l'anàlisi de dispositiu i IP](https://docs.didit.me/ca/core-technology/ip-analysis/overview.md) — què mesura cada bloc
* [Models de dades — Anàlisi d'IP](https://docs.didit.me/ca/reference/data-models.md#anàlisi-d’ip) — esquema canònic
* [Webhooks](https://docs.didit.me/ca/integration/webhooks.md) — `status.updated` inclou les advertències de l'anàlisi d'IP

### Tipus d'advertències


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.