Naar de inhoud springen

Backlink-data als JSON: $100 gratis tegoed, geen creditcard, aanmelden met Google.

SEOMasters.dev
SEOMasters.devAanmelden

Check my backlink leverde niets op: een foutentabel

Je tool is alleen zo stabiel als zijn foutafhandeling. Hieronder staan de fouten die daadwerkelijk voorkomen, de exacte oorzaak en of een retry zinvol is.

Vier verschillende soorten industriële hangsloten hangend aan een rek dat verschillende foutstaten voorstelt

De regel die de meeste gevallen dekt

Probeer netwerkfouten opnieuw. Probeer 401 of 402 nooit opnieuw. De eerste soort lost zichzelf binnen enkele seconden op; de tweede vereist een mens en het blijft hameren vult alleen je logs.

Elk JSON-antwoord bevat een ok veld, en geauthenticeerde antwoorden voegen _credits toe met de kosten van de call en het resterende saldo. Controleer ok in de body, zelfs als de HTTP-status er goed uitziet.

De retry-tijdschema's hieronder zijn ons engineering advies, geen gedocumenteerde limieten. De API-documentatie die we hebben publiceert geen rate limit, dus bouw je eigen plafond en houd het bescheiden.

Waarom 401 en 402 nooit opnieuw worden geprobeerd

Een 401 is een sleutelprobleem en een 402 is een saldo probleem. Geen van beide lost op tussen twee pogingen die een seconde uit elkaar liggen, dus een retry voegt alleen ruis toe aan je logs en niets anders.

Wachten lost een 402 ook niet op. Het saldo blijft waar het is totdat iemand het oplaadt via de accountpagina, dus de enige nuttige reactie is een duidelijke boodschap en een melding aan degene die het budget beheert.

Een 401 verdient een blik op de header of de key parameter, en een controle dat de sleutel niet is vervangen. De verkeerde sleutel een paar keer opnieuw proberen bewijst niets.

Een verkeerde sleutel en een leeg saldo zien er ook anders uit in je dashboard. Zet ze op aparte alerts, zodat de persoon die oplaadt niet wordt gewekt door een typefout in de sleutel, en de persoon die sleutels roteert niet wordt gebeld voor een saldo.

Netwerkfouten en backoff

Een time-out of een verbinding reset kan vanzelf oplossen, dus dat zijn de enige gevallen die het proberen waard zijn. Wacht 1, 2, 4 en daarna 8 seconden, voeg een beetje jitter toe en stop na de vierde poging.

Die tijdschema's zijn ons advies, geen gedocumenteerde limiet. Houd je eigen plafond aan, log elke retry en alerteer wanneer retries toenemen, omdat een stijgend retry percentage meestal het eerste teken is van een probleem in de upstream.

Houd de time-out aan jouw kant expliciet, in een benoemde constante. Een impliciete standaard die verandert met een library upgrade is een veelvoorkomende reden waarom een nightly job op slechts één machine begint te falen.

Volg de upstream responstijd evenals het foutpercentage. Een trage respons die nooit faalt, kan nog steeds je workers vastzetten, en een retry loop maakt die vertraging erger.

Symptoom, oorzaak, respons

SymptoomOorzaakOpnieuw proberen?Wat te doen
HTTP 401Sleutel ontbreekt, verkeerd getypt of ingetrokkenNeeControleer de header of de key= waarde, en daarna de accountpagina
HTTP 402Credit is opgebruiktNeeLaad op in USDT (TRC-20) vanaf de accountpagina; dezelfde sleutel gaat door
ok is niet waar op HTTP 200Foute parameter, zoals een URL waar een domein hoortNeeValideer input; stuur example.com, niet https://example.com/page
Time-out of verbinding resetNetwerk of upstream piekJa, 3 tot 4 keerBackoff 1, 2, 4, 8 seconden met jitter
Leeg resultaat voor een nieuwe siteNog niet in de index; refresh is maandelijksNeeToon "nog niet geïndexeerd" met de indexdatum
Getal verschilt van een andere toolAndere index en een andere DR formuleNeeVergelijk trends binnen één tool, zie DR reference
Rijen stoppen bij 50.000Paginatie plafondNeeZie paging notes
Saldo daalt sneller dan geplandBetaalde actie in een lus, of een 3-credit call op een hot pathn.v.t.Log _credits, allow-list acties
Tip: test eerst met cURL

Voordat je je code de schuld geeft, plak de mislukte URL in cURL met dezelfde sleutel. Als het daar werkt, is de bug in je client. Als het daar ook faalt, is het antwoord in de tabel. Deze check heeft meer tickets opgelost dan elke log zoekopdracht.

Een debug run, in volgorde

  1. 1

    Reproduceer met curl

    Haal de mislukte URL uit je app en voer hem met de hand uit met dezelfde sleutel. Als curl werkt, is je code het probleem.

  2. 2

    Probeer een gratis actie

    overview op hetzelfde domein vereist geen sleutel. Als het antwoordt, is de index in orde en zit het probleem in auth of credit.

  3. 3

    Lees het saldo

    Een 402 is ondubbelzinnig, maar een mislukte betaalde call na een gratis succes wijst meestal op credit of een typefout in de sleutel.

  4. 4

    Controleer de input

    Kleine letters, geen scheme, geen path, geen trailing dot. De meeste ok fouten eindigen hier.

Handen schuren een ruwe tak tot een gladde vorm op een houten werkbank

Normaliseer het domein voordat je de call doet

De meeste mislukte calls beginnen in de input box, niet in het netwerk. Gebruikers plakken wat ze hebben gekopieerd, en je code moet dat omzetten in een plat domein voordat de API het ziet.

Verwijder het scheme en de path

Verwijder het scheme, elke path en de query string. Een geplakte artikel adres wordt zijn host, en alleen de host gaat upstream.

Maak de host ook lowercase. Houd de cleaning in één functie, zodat dezelfde regel loopt in het formulier, in de batch job en in de tests.

Test de cleaning met vijf of zes echte geplakte inputs, waaronder één met een trailing slash en één met een query string. Die gevallen onthullen de bugs die een schoon voorbeeld nooit laat zien.

Bepaal één keer wat je met www. doet.

Kies één regel voor www. en pas deze toe in één functie, zodat dezelfde site nooit onder twee schrijfwijzen wordt opgezocht.

Schrijf de regel neer naast de functie. De volgende developer die een stray www tegenkomt, vindt dan de beslissing, niet een tweede mening.

Welke regel je ook kiest, houd hem in één bestand en schrijf er één test voor. De test is het record van de beslissing, en het is kort.

Wijs af wat geen domein kan zijn

Wijs input af met spaties of lege labels, en toon een korte boodschap in het formulier. Een afgewezen string kost niets, terwijl een slechte een mislukte call en een verwarde gebruiker kost.

Trailing dots zijn het vreemde geval. Verwijder één aan het einde van de host en behandel alles anders als ongeldig.

Toon de afwijzing naast het veld, niet als een toast die verdwijnt. Een gebruiker die kan zien wat er mis was, lost het in één keer op.

Wat je een gebruiker moet tonen

Print nooit een ruwe upstream fout in de interface. Map 401 en 402 naar een generieke "service unavailable" en stuur de details naar je eigen log en een alert. Bezoekers kunnen je saldo niet oplossen, en de boodschap laat je tool kapot lijken.

Een kleine plantenscheut die uit droge aarde komt met een hand van een tuinder in de buurt

Lege resultaten en de index leeftijd

Wanneer iemand 'check my backlink' in je formulier typt en niets krijgt, is een leeg antwoord niet altijd een fout. Het betekent vaak dat het domein nieuw is, te klein of gewoon nog niet in de index, en het scherm moet zeggen welke.

Een gloednieuwe site

Een site die vorige week is gelanceerd, kan geen verwijzende domeinen in de index hebben. Toon 'nog niet geïndexeerd' samen met de indexdatum, en bied de gratis overview call aan als cross-check.

Cache dat lege antwoord niet te lang. Een paar uur is genoeg, en de volgende rebuild kan de site erin brengen.

Vertel de bezoeker wanneer de index voor het laatst is herbouwd, in gewone woorden. Een datum naast een leeg antwoord verklaart de kloof beter dan een langere boodschap.

Een eenregelige noot in je eigen UI is hier genoeg. Niemand verwacht een live index, en een gewone zin naast de indexdatum leest als eerlijk.

Een getal dat niet overeenkomt met een andere tool

Verschillende crawlers zien verschillende delen van het web. Lees de DR figuur als een positie binnen één tool, en wijs lezers naar de DR reference voor de formule.

Een korte noot onder het getal bespaart meer support tijd dan welke verontschuldiging ook achteraf.

Als twee metingen verschillen, vergelijk dan eerst de telling van verwijzende domeinen. De DR formule is eenvoudig, dus de meeste meningsverschillen komen neer op de telling.

Rijen die stoppen bij 50.000

Wanneer een lijst stopt bij het plafond, is het antwoord correct voor wat de API toestaat. Label de cutoff en link de paging notes in plaats van te proberen een dieper pagina.

Diepere pagina's voorbij dat punt zijn geen retry. Ze zijn een andere query, en ze als één te behandelen is hoe een lus uren kan draaien.

Houd de cutoff zichtbaar in de export ook, zodat een spreadsheet die een maand later wordt geopend nog steeds laat zien dat de lijst was afgekapt.

Het tonen van het aantal rijen naast de tabel maakt een cutoff tot een zichtbaar feit. Een lezer die 50.000 rijen ziet, weet een smalere vraag te stellen.

Voordat de retry code shipping gaat

  • 401 en 402 worden nooit opnieuw geprobeerd
  • Time-outs retryen met backoff en een vast aantal pogingen
  • Elk antwoord wordt gecontroleerd op ok, ongeacht de HTTP status
  • Input wordt genormaliseerd voordat de call wordt gedaan, niet nadat deze faalt
  • Upstream fouten gaan naar je eigen log, en bezoekers zien een generieke boodschap
  • Een leeg resultaat toont de indexdatum in plaats van een leeg scherm

Gerelateerde vragen

Kunnen mijn gebruikers elke URL in de box typen?
Laat ze, normaliseer het dan zelf. Verwijder het scheme, de path, query string en www. als je kiest om te, lowercase de host, en roep pas de API aan. De upstream verwacht een plat domein, dus ongereinigde input is de meest voorkomende oorzaak van een mislukte call.
Moet ik fouten cache?
Cache een leeg "niet geïndexeerd" resultaat voor een paar uur, omdat de index alleen maandelijks verandert. Cache een 401 of 402 nooit lang. Die lossen op zodra de sleutel of het saldo is opgelost, en een geforceerde fout zou de oplossing verbergen.
Tellen gratis acties mee?
Ze kosten geen credits. De vier gratis zijn domain, overview, stats en suggest. Cache ze toch, omdat beleefdheid niets kost en je eigen latency laag houdt.