Liens, sites et e-mails
Vérifier un lien
Couverture: Seuls le texte et les liens visibles sont examinés. L’expéditeur, les pièces jointes et le contenu du site ne sont pas vérifiés.
Ouvrir l’outilSur cette page
Objectif
Vérifiez numéros, messages et liens
Seuls le texte et les liens visibles sont examinés. L’expéditeur, les pièces jointes et le contenu du site ne sont pas vérifiés.
Prérequis
Tout le monde peut lire ces guides, sans compte. Certains outils nécessitent Pro, comme indiqué dans chaque guide.
Saisissez un lien HTTP ou HTTPS complet, ou un nom de domaine.
Mode d’emploi
Vérifier un lien ou un site
Dans Email, collez le texte ; dans Lien, l’adresse. Appuyez sur Vérifier et examinez les signaux et le domaine réel. Aucun lien n’est ouvert et l’expéditeur n’est pas authentifié.
Lisez les champs disponibles avec leurs limites. Un résultat vide ne prouve pas la sécurité et n’identifie personne.
Exemple fictif
Exemple inventé, pas une recherche réelle. N’appelez pas et n’ouvrez pas ses liens.
https://[email protected]/noticeInterpréter le résultat
Le texte avant @ peut masquer le vrai domaine affiché ci-dessous.
Utilise HTTP, sans le chiffrement HTTPS.
Examinez ce domaine internationalisé : certains caractères se ressemblent.
Utilise une adresse IP numérique au lieu d’un domaine.
Aucun signe de risque évident détecté
Limites
Analyse sur cet appareil. Votre texte n’est ni envoyé ni enregistré.
Seuls le texte et les liens visibles sont examinés. L’expéditeur, les pièces jointes et le contenu du site ne sont pas vérifiés.
Résoudre un problème
Saisissez un lien HTTP ou HTTPS complet, ou un nom de domaine.
Utiliser avec l’API
Nécessite une API key et des crédits. Chaque appel abouti coûte 1 crédit, même sans données. Un compte Pro actif inclut 20 crédits par mois calendaire UTC, partagés entre toutes les routes de l’API et consommés en premier ; les crédits mensuels non utilisés ne sont pas reportés. Les crédits achetés sur la page de votre compte fonctionnent sans Pro et n’expirent jamais.
Les erreurs ne sont jamais facturées : 401 invalid_api_key (clé absente ou invalide), 403 pro_required (ni crédits Pro ni crédits achetés), 422 entrée invalide, 429 quota_exceeded (plus de crédits), rate_limit_exceeded ou ai_busy (l’IA de sms-check est à pleine capacité), 503 tool_warming (les données sont encore en préparation) ou tool ou fournisseur indisponible. Après un 429 ou un 503, réessayez une fois écoulées les secondes indiquées dans l’en-tête Retry-After.
Inspection statique d’une URL : hôte en Unicode et en ASCII, s’il s’agit d’un domaine officiel d’une marque ou d’un organisme public (et duquel), alertes structurelles sur le lien et signaux du moteur de règles. Aucune récupération, aucun suivi de redirection ni vérification de réputation.
Envoyez le corps JSON à la route propre au tool, ou à POST /v2/tools en ajoutant le champ tool. Les deux routes renvoient le même résultat.
POST https://api.nocall.io/v2/link-check
POST https://api.nocall.io/v2/tools {"tool":"link-check","url":"http://192.168.1.1/login","country":"ES"}Paramètres
| Nom | Type | Obligatoire | Description |
|---|---|---|---|
| url | string (1–2000) | Oui | URL à inspecter. Elle n’est jamais récupérée. |
| country | string (enum, 55) | Non (par défaut: "ES") | Pays dont le jeu de règles SMS est utilisé. |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/link-check' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"url":"http://192.168.1.1/login","country":"ES"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/link-check',
method='POST',
data=json.dumps({'url': 'http://192.168.1.1/login', 'country': 'ES'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/link-check', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ url: 'http://192.168.1.1/login', country: 'ES' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);Exemple de réponse (200)
Il s’agit de l’exemple documenté dans la référence de l’API. Les recherches utilisent un numéro fictif ; les agrégats et les réponses de l’IA montrent la structure du résultat, pas des données réelles.
{
"data": {
"tool": "link-check",
"result": {
"host": "192.168.1.1",
"hostAscii": "192.168.1.1",
"official": false,
"brand": null,
"hosts": [
"192.168.1.1"
],
"linkFlags": [
"http",
"ipAddress"
],
"signals": [
"suspicious_domain"
],
"attention": true
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Champs du résultat (data.result)
| Champ | Type | Description |
|---|---|---|
| host | string | Nom d’hôte de l’URL, sous forme Unicode. |
| hostAscii | string | Nom d’hôte de l’URL, sous forme ASCII (punycode). |
| official | boolean | Indique si l’hôte est un domaine officiel d’une marque ou d’un organisme public. |
| brand | string | null | À qui appartient le domaine officiel de l’hôte (une marque ou un organisme public), ou null. |
| hosts | array<string> | Noms d’hôte trouvés dans le texte. |
| linkFlags | array<"http" | "userinfo" | "internationalHost" | "ipAddress" | "nonStandardPort"> | Alertes structurelles sur le lien : http, userinfo, hôte internationalisé, adresse IP ou port non standard. |
| signals | array<string (enum, 10)> | Signaux des règles déclenchés. |
| attention | boolean | Indique si le contenu mérite un examen plus attentif. |
