Aller au contenu
ArchiLinks
ArchiLinksS'inscrire

Outil de vérification des backlinks : scripts que vous pouvez planifier

Chaque appel ici fonctionne avec curl ou n'importe quel client HTTP. Remplacez la clé, conservez le modèle : appel, sauvegarde, diff.

Équipe de recherche ArchiLinks ·

Petite établi miniature avec outils Python, Node et Bash à côté d'une échelle et d'un minuteur

Règles de base

Un appel, une facturation. Chaque requête est facturée une fois quel que soit le nombre de lignes, et un seul appel renvoie jusqu'à 1 000 lignes. La pagination profonde s'arrête à 50 000 lignes, et per accepte des valeurs de 10 à 5 000.

Cela change la façon dont vous écrivez les scripts. Demandez per=1000 et ne paginezz que lorsque vous avez besoin de plus, car un outil de vérification des backlinks basé sur de petites pages multiplie votre coût par dix sans gain. Les erreurs sont claires : HTTP 401 pour une clé manquante, 402 lorsque le crédit est épuisé, et chaque corps JSON contient ok.

Avant d'automatiser

Exécutez chaque script une fois à la main sur un petit domaine et lisez le JSON. Les noms de champs, le conteneur de lignes et les champs de pagination doivent provenir d'une réponse réelle, et non de nos exemples, donc confirmez-les avant qu'une tâche cron ne dépende d'eux.

Python : sauvegarder un instantané daté

Les noms de champs dans la réponse sont affichés à titre d'exemple. Imprimez une réponse avant de vous fier à une clé.

python
import json, sys, datetime, requests

BASE = "https://archilinks.com/api.php"
KEY = "sk_live_..."

def snapshot(domain, action="refdomains"):
    r = requests.get(BASE, params={"action": action, "q": domain, "per": 1000, "key": KEY}, timeout=30)
    if r.status_code in (401, 402):
        sys.exit(f"API said {r.status_code}: check key or balance")
    r.raise_for_status()
    body = r.json()
    assert body.get("ok"), body
    name = f"{domain}-{action}-{datetime.date.today()}.json"
    json.dump(body, open(name, "w"), indent=1)
    print(name, body.get("_credits"))

snapshot(sys.argv[1])

Node : Domain Rating en masse pour une liste

bulk_dr prend jusqu'à 2 000 domaines pour 1 crédit par appel, par GET avec un paramètre domains ou par corps POST. Le séparateur virgule ci-dessous est un exemple ; testez avec deux domaines d'abord. Node 18 ou plus a fetch intégré.

javascript
const domains = ["example.com", "example.org"];
const url = new URL("https://archilinks.com/api.php");
url.search = new URLSearchParams({
  action: "bulk_dr",
  domains: domains.join(","),
  key: "sk_live_...",
});

const res = await fetch(url);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(JSON.stringify(await res.json(), null, 2));

Bash et jq : diff hebdomadaire

Sauvegardez un instantané avec la date, puis comparez deux fichiers. Gardez la cron hebdomadaire ou mensuelle ; l'index se rafraîchit environ mensuellement.

bash
# crontab: 0 6 1 * *  /opt/seo/pull.sh old-shop.com
curl -s "https://archilinks.com/api.php?action=refdomains&q=$1&per=1000&key=$KEY" \
  | jq -S . > "snap-$1-$(date +%F).json"

# compare two dated files
diff <(jq -S . snap-old-shop.com-2026-09-01.json) <(jq -S . snap-old-shop.com-2026-10-01.json) | head -50

Quelle action pour quel script

ScriptActionCoût par exécutionSortie
Référence de migrationtoppages, refdomains4 créditsDeux fichiers JSON
Nettoyage de l'outreachbulk_dr1 crédit par appel, jusqu'à 2 000 domainesDR par prospect
Chevauchement concurrentielintersect2 créditsSites reliant 2–10 domaines
Surveillance des ancresanchors2 créditsListe des textes d'ancrage
Vérification de portefeuillecompare1 crédit par appel, jusqu'à 20 domainesMétriques côte à côte
Mécanisme de nouvelle tentative miniature avec coussins en caoutchouc, cloche d'alarme et compteur de pièces empilées

Gestion des cas limites

Les scripts échouent aux cas limites. Prévoyez-les.

Enveloppez chaque appel dans une tentative de nouvelle connexion qui attend et abandonne après trois essais, sauf pour 401 et 402, qu'une nouvelle tentative ne corrigera jamais. Journalisez l'objet _credits de chaque réponse authentifiée, afin qu'une augmentation des dépenses apparaisse dans vos logs avant d'apparaître dans votre solde, et limitez les boucles avec un nombre maximum de pages.

Conservez les instantanés dans git ou le stockage d'objets avec la date dans le nom de fichier. Simple, ennuyeux, efficace. Pour les migrations, associez ces scripts à la recette de carte de redirection et à la checklist de migration. Les utilisateurs de Google Sheets peuvent appeler les mêmes URL depuis Apps Script avec UrlFetchApp, et une feuille avec un déclencheur mensuel est un moniteur parfaitement valable.

Questions sur les scripts

Trois questions se posent avant que la plupart des scripts ne soient mis en production, et chacune a une réponse courte.

Comment vérifier le nombre de backlinks de mon site gratuitement ?

Appelez l'action overview ou stats sans clé. Les deux sont gratuits et renvoient les totaux de notre propre index de liens.

Pour les listes derrière les totaux, vous avez besoin d'une clé et de 2 crédits par appel.

Que se passe-t-il lorsque le solde est épuisé ?

L'API renvoie HTTP 402. Votre script doit s'arrêter et alerter, et non réessayer en boucle. Rechargez depuis la page de compte avec USDT (TRC-20) et relancez.

Puis-je l'appeler depuis un navigateur ?

Oui. CORS est ouvert. Cependant, ne mettez pas de clé dans le code front-end public, car tout le monde peut la lire et dépenser votre crédit.

Tapis roulant miniature avec engrenages précis déplaçant efficacement des pièces d'or avec une seule clé

Pagination sans gaspiller de crédits

La pagination est là où les scripts coûtent silencieusement plus qu'ils ne devraient. Chaque requête de page est un appel séparé avec sa propre facturation, donc une boucle qui demande une page de trop paie pour rien.

Lisez les champs de pagination dans une vraie réponse avant d'écrire la boucle. Les exemples sur ce site montrent la forme, mais les noms et le signal d'arrêt proviennent du JSON en direct.

Arrêtez lorsqu'une page revient avec moins de lignes

Une page avec moins de lignes que demandé est généralement la dernière. Laissez la boucle s'arrêter là au lieu de demander une page supplémentaire pour être sûr.

Si la réponse contient un champ total ou next-page, utilisez-le comme signal d'arrêt. Comptez les lignes que vous avez enregistrées par rapport à celui-ci, afin qu'une incohérence apparaisse dans le log.

Limitez chaque boucle

Définissez un maximum absolu de pages dans chaque boucle. Une limite protège votre solde si un nom de champ change et que le script continue de demander la même page.

Choisissez la limite en fonction de la taille que vous attendez, puis augmentez-la délibérément lorsqu'un domaine réel a besoin de plus de pages.

Écrivez chaque page à mesure qu'elle arrive

Enregistrez chaque page sur disque dès qu'elle revient, avec le numéro de page dans le nom de fichier. Un script qui s'arrête à la page quarante peut reprendre depuis le dernier fichier enregistré au lieu de recommencer et de payer deux fois.

Conservez les fichiers dans un dossier par domaine et par date, afin qu'une nouvelle exécution ne mélange jamais deux tirages.

Exécuter les scripts sur une planification

N'importe quel planificateur fera l'affaire. L'important est que chaque exécution laisse un fichier derrière, et qu'une exécution échouée prévienne quelqu'un.

Choisir un hôte pour la tâche

Cron convient à un serveur avec un disque que vous contrôlez. Un job CI convient à un dépôt qui conserve déjà les instantanés, afin que l'historique vive à côté du code qui le lit.

Quel que soit votre choix, conservez la liste des domaines dans un fichier, afin que l'ajout d'un domaine soit une modification plutôt qu'un changement du script.

Alerte en cas d'échec, pas à chaque succès

Alertez lorsque le script échoue, ou lorsque le solde tombe en dessous d'un niveau que vous avez choisi. Un message de succès chaque matin habitue les gens à ignorer le canal qui transporte le vrai problème.

Journalisez l'objet _credits de chaque exécution, comme le fait l'exemple Python, et examinez la tendance une fois par mois.

Un diff hebdomadaire en cinq étapes

01

Choisissez les actions

Choisissez les deux ou trois appels qui répondent à votre question. Chacun coûte des crédits, donc écrivez le coût à côté.

02

Sauvegardez la réponse brute

Stockez le JSON exactement comme il est arrivé, avec le domaine et la date dans le nom de fichier. Le formatage peut attendre l'étape du diff.

03

Triez les clés avant de comparer

Utilisez jq -S ou un équivalent, afin que l'ordre des clés n'apparaisse pas comme un changement. L'exemple bash ci-dessus le fait.

04

Comparez les listes, pas les fichiers

Joignez les deux réponses sur l'URL ou le domaine, puis rapportez ce qui a été ajouté, supprimé et modifié. Un diff texte brut d'un long fichier est difficile à exploiter.

05

Examinez le diff et agissez

Envoyez les domaines qui lient supprimés à qui gère l'outreach, et les pages supprimées à qui gère les redirections.

Tester un script avant qu'une tâche cron ne dépende de lui

Un script qui s'exécute sans surveillance doit se prouver d'abord. Utilisez un petit domaine, lisez le JSON complet, et seulement ensuite élargissez la liste.

Une vérification rapide de cohérence consiste à comparer les totaux avec l'appel overview gratuit pour le même domaine. Les nombres n'ont pas besoin de correspondre exactement à une liste payante, mais ils doivent être cohérents en ordre de grandeur.

Exécutez avec deux domaines

Deux domaines testent la boucle, les noms de fichiers et les chemins d'erreur. Un domaine peut réussir par chance, tandis que deux montrent si la boucle se réinitialise entre les domaines.

Utilisez un domaine que vous connaissez bien et un que vous ne connaissez pas, afin de juger si la sortie semble correcte.

Gardez la clé hors des logs et des tickets

Les scripts impriment souvent l'adresse de la requête complète, et la clé se trouve dans cette adresse en tant que paramètre. Supprimez la clé de toute ligne qui quitte le serveur, ou envoyez-la dans l'en-tête Authorization à la place, ce qui la garde hors de l'adresse.

Si une clé apparaît dans un ticket ou un dépôt public, arrêtez la tâche planifiée qui l'utilise avant la prochaine exécution.

Gardez une note courte de l'endroit où réside la clé, quels scripts la lisent et quels hôtes ils appellent. Cette note est ce dont vous avez besoin lorsque quelqu'un demande qui peut dépenser le solde.

Choisir l'action pour chaque question

Commencez par la question, pas par la liste des points de terminaison. Une migration doit savoir quelles URL portent des liens, tandis qu'une liste d'outreach a besoin de scores de domaine. Un hôte, deux questions. Chacune coûte un nombre différent de crédits.

Écrivez le coût à côté de la question avant d'écrire du code. Un script qui s'exécute chaque semaine multiplie un petit prix par cinquante-deux, et cette multiplication est facile à oublier jusqu'à ce que le solde le montre.

Nouvelles tentations qui s'arrêtent quand elles doivent

Réessayez une requête qui a échoué pour une raison temporaire, comme une expiration de délai ou une erreur serveur, un petit nombre de fois avec une pause croissante entre les essais. Ne réessayez pas un 401 ou un 402, car attendre ne changera aucune des réponses.

Journalisez chaque nouvelle tentative avec l'action et le domaine, afin qu'un schéma d'échecs apparaisse comme un schéma plutôt que comme un silence.

Définissez le nombre de nouvelles tentations à un seul endroit, afin que chaque appel dans le script suive la même règle. Les boucles de nouvelle tentative dispersées ont tendance à être en désaccord les unes avec les autres, et ce désaccord est difficile à trouver dans un log.