Narzędzie do backlinków zwróciło puste wyniki: tabela błędów
Twoje narzędzie jest tak stabilne, jak jego obsługa błędów. Poniżej znajdziesz błędy, które faktycznie występują, ich dokładne przyczyny oraz informacje o tym, czy ponowienie próby ma sens.

Zasada pokrywająca większość przypadków
Ponawiaj próby w przypadku błędów sieciowych. Nigdy nie ponawiaj prób przy kodach 401 lub 402. Pierwszy przypadek rozwiązuje się sam w ciągu kilku sekund; drugi wymaga interwencji człowieka, a nadmierne wysyłanie żądań tylko zaśmieca logi.
Każda odpowiedź JSON zawiera pole ok, a odpowiedzi uwierzytelnione zawierają additionally _credits z kosztem wywołania i pozostałym saldem. Sprawdzaj pole ok w ciele odpowiedzi nawet wtedy, gdy status HTTP wygląda poprawnie.
Poniższe czasy ponawiania prób to nasza porada inżynieryjna, a nie udokumentowane limity. Dokumentacja API, którą posiadamy, nie publikuje limitu częstości żądań, więc wyznacz własny próg i utrzymuj go na rozsądnym poziomie.
Dlaczego kodów 401 i 402 nie ponawiamy
Kod 401 oznacza problem z kluczem, a 402 – problem z saldem. Żaden z tych przypadków nie rozwiązuje się sam w odstępie jednej sekundy między próbami, więc ponowienie próby tylko wprowadza szum do logów.
Czekanie również nie rozwiązuje problemu z kodem 402. Saldo pozostaje niezmienione do momentu doładowania go ze strony konta, więc jedyną przydatną reakcją jest wyświetlenie jasnej wiadomości i alertu do osoby odpowiedzialnej za budżet.
Przypadek 401 wymaga sprawdzenia nagłówka lub parametru klucza oraz upewnienia się, że klucz nie został zmieniony. Wielokrotne ponawianie próby z tym samym niepoprawnym kluczem nic nie wnosi.
Nieprawidłowy klucz i puste saldo wyglądają inaczej w Twoim panelu. Ustaw osobne alerty, aby osoba doładowująca konto nie była budzona z powodu literówki w kluczu, a osoba odpowiedzialna za rotację kluczy nie była powiadamiana o problemach z saldem.
Usterki sieci i mechanizm backoff
Przekroczenie limitu czasu lub reset połączenia mogą zostać naprawione automatycznie, dlatego tylko w tych przypadkach warto podjąć kolejną próbę. Odczekaj 1, 2, 4, a następnie 8 sekund, dodaj niewielki jitter i zakończ operację po czwartej próbie.
Podane czasy to nasza rekomendacja, a nie udokumentowany limit. Utrzymaj własny próg, loguj każdą ponowną próbę i ustaw alert, gdy liczba retry wzrośnie, ponieważ rosnąca liczba ponownych prób jest zwykle pierwszym sygnałem problemu po stronie dostawcy.
Utrzymuj limit czasu po swojej stronie jako jawną, nazwaną stałą. Domyślna wartość ukryta w bibliotece, która zmienia się podczas aktualizacji, to częsty powód, dla którego zadanie wykonywane w nocy zaczyna zawodzić tylko na jednej maszynie.
Obserwuj zarówno czas odpowiedzi dostawcy, jak i wskaźnik błędów. Wolna odpowiedź, która nie generuje błędów, może nadal blokować Twoje wątki, a pętla retry pogarsza ten spadek wydajności.
Objaw, przyczyna, reakcja
| Objaw | Przyczyna | Retry? | Co zrobić |
|---|---|---|---|
| HTTP 401 | Klucz nieznaleziony, wpisany błędnie lub unieważniony | Nie | Sprawdź nagłówek lub wartość key=, a następnie stronę konta |
| HTTP 402 | Kredyt został wyczerpany | Nie | Doładuj w USDT (TRC-20) ze strony konta; klucz zostaje wznowiony |
ok nie jest prawdą przy statusie HTTP 200 | Nieprawidłowy parametr, np. URL zamiast domeny | Nie | Zweryfikuj dane wejściowe; podaj example.com, a nie https://example.com/page |
| Przekroczenie czasu oczekiwania lub zerwanie połączenia | Chwila awarii sieci lub serwera upstream | Tak, 3 do 4 razy | Zastosuj backoff: 1, 2, 4, 8 sekund z jitterem |
| Pusty wynik dla nowej witryny | Jeszcze nie zaindeksowana; odświeżanie następuje raz w miesiącu | Nie | Wyświetl komunikat „jeszcze nie zaindeksowana” wraz z datą indeksowania |
| Liczba różni się od wyniku innego narzędzia | Inny indeks i inna formuła DR | Nie | Porównuj trendy w ramach jednego narzędzia, zobacz odniesienie do DR |
| Wiersze kończą się na 50 000 | Limit paginacji | Nie | Zobacz uwagi dotyczące paginacji |
| Saldo spada szybciej niż planowano | Płatna akcja w pętli lub wywołanie kosztujące 3 kredyty w krytycznej ścieżce | n/a | Loguj _credits, zdefiniuj listę dozwolonych akcji |
Zanim obwinisz swój kod, wklej niepoprawny URL do cURL z tym samym kluczem. Jeśli tam zadziała, błąd jest po stronie Twojego klienta. Jeśli nie zadziała, odpowiedź znajdziesz w tabeli. To sprawdzenie rozwiązało więcej zgłoszeń niż jakiekolwiek przeszukiwanie logów.
Uruchomienie debugowania, krok po kroku
- 1
Odtworzenie błędu za pomocą curl
Wyjmij niepoprawny URL z aplikacji i uruchom go ręcznie z tym samym kluczem. Jeśli curl zadziała, problem jest w Twoim kodzie.
- 2
Wypróbuj darmową akcję
overviewna tej samej domenie nie wymaga klucza. Jeśli zwraca wynik, indeks jest poprawny, a problem leży w autoryzacji lub kredytach. - 3
Sprawdź saldo
Błąd 402 jest jednoznaczny, ale niepowodzenie płatnego wywołania po udanej darmowej operacji zwykle wskazuje na brak kredytów lub literówkę w kluczu.
- 4
Sprawdź dane wejściowe
Małe litery, bez schematu, bez ścieżki, bez kropki na końcu. Większość niepowodzeń
okkończy się właśnie tutaj.

Znormalizuj domenę przed wywołaniem
Większość nieudanych wywołań zaczyna się w polu danych wejściowych, a nie w sieci. Użytkownicy wklejają wszystko, co skopiowali, a Twój kod musi zamienić to na samą domenę zanim API ją zobaczy.
Usuń schemat i ścieżkę
Usuń schemat, dowolną ścieżkę i ciąg zapytania. Wklejony adres artykułu zamienia się na jego hosta, a tylko host jest przesyłany dalej.
Zamień host na małe litery. Zachowaj czyszczenie w jednej funkcji, aby ta sama reguła działała w formularzu, w zadaniu wsadowym i w testach.
Przetestuj czyszczenie na pięciu lub sześciu rzeczywistych danych wejściowych, w tym jednym z ukośnikiem na końcu i jednym z ciągiem zapytania. Te przypadki ujawniają błędy, których nie pokaże czysty przykład.
Zdecyduj raz, co zrobić z www.
Wybierz jedną regułę dla www. i zastosuj ją w jednej funkcji, aby ta sama strona nigdy nie była wyszukiwana pod dwoma różnymi zapisami.
Zapisz regułę obok funkcji. Następny programista, który napotka przypadkowe www, znajdzie decyzję, a nie drugą opinię.
Niezależnie od wybranej reguły, trzymaj ją w jednym pliku i napisz do niej jeden test. Test jest zapisem decyzji i jest krótki.
Odrzuć to, co nie może być domeną
Odrzuć dane z spacjami lub pustymi etykietami i pokaż krótkią wiadomość w formularzu. Odrzucony ciąg nic nie kosztuje, podczas gdy błędny kosztuje nieudane wywołanie i zdezorientowanego użytkownika.
Kropki na końcu to wyjątkowy przypadek. Usuń jedną kropkę na końcu hosta i traktuj wszystko inne jako nieprawidłowe.
Pokaż odrzucenie obok pola, a nie jako znikający komunikat toast. Użytkownik, który widzi, co było nie tak, naprawi to w jednej próbie.
Nigdy nie wyświetlaj surowego błędu upstream w interfejsie. Przemapuj 401 i 402 na ogólne "usługa niedostępna" i wyślij szczegóły do własnego logu i alertu. Odwiedzający nie naprawią Twojego salda, a komunikat sprawi, że Twoje narzędzie będzie wyglądać na zepsute.

Puste wyniki i wiek indeksu
Gdy ktoś wpisze check my backlink w formularzu i otrzyma pusty wynik, pusta odpowiedź nie zawsze jest błędem. Często oznacza to, że domena jest nowa, zbyt mała lub po prostu nie jest jeszcze w indeksie, a ekran powinien to wyjaśniać.
Całkowicie nowa strona
Strona uruchomiona w zeszłym tygodniu może nie mieć domen odsyłających w indeksie. Pokaż 'nie zaindeksowano jeszcze' wraz z datą indeksu i zaoferuj darmowe wywołanie overview jako kontrolę.
Nie buforuj tego pustego wyniku przez długi czas. Kilka godzin wystarczy, a kolejne przebudowanie może dodać stronę do indeksu.
Poinformuj odwiedzającego, kiedy indeks był ostatnio przebudowany, prostymi słowami. Data obok pustego wyniku wyjaśnia lukę lepiej niż dłuższa wiadomość.
Wystarczy jednowierszowa notatka w Twoim UI. Nikt nie oczekuje żywego indeksu, a zwykłe zdanie obok daty indeksu brzmi uczciwie.
Liczba, która nie zgadza się z innym narzędziem
Różne crawle widzą różne fragmenty sieci. Traktuj wynik DR jako pozycję w ramach jednego narzędzia i wskaż czytelnikom tłumaczenie pola DR dla formuły.
Krótka notatka pod liczbą oszczędzi więcej czasu wsparcia niż jakiekolwiek przeprosiny po fakcie.
Jeśli dwa odczyty się różnią, porównaj najpierw liczbę domen odsyłających. Formuła DR jest prosta, więc większość rozbieżności sprowadza się do tej liczby.
Wiersze zatrzymujące się na 50 000
Gdy lista zatrzymuje się na limicie, odpowiedź jest poprawna dla tego, co pozwala API. Oznacz punkt odcięcia i podlinkuj notatki o paginacji zamiast próbować głębszej strony.
Głębsze strony po tym punkcie nie są ponowną próbą. Są to inne zapytanie, a traktowanie ich jako jednego to sposób, w jaki pętla może działać godzinami.
Zachowaj widoczność punktu odcięcia również w eksporcie, aby arkusz otwarty miesiąc później nadal pokazywał, że lista była ograniczona.
Pokazanie liczby wierszy obok tabeli zamienia punkt odcięcia w widoczny fakt. Czytelnik, który widzi 50 000 wierszy, wie, że powinien zadać węższe pytanie.
Przed wysłaniem kodu ponownych prób
- 401 i 402 nie są ponawiane
- Przekroczenia czasu oczekiwania są ponawiane z wykładniczym opóźnieniem i stałą liczbą prób
- Każda odpowiedź jest sprawdzana pod kątem
ok, niezależnie od statusu HTTP - Dane wejściowe są normalizowane przed wywołaniem, a nie po jego niepowodzeniu
- Błędy upstream trafiają do Twojego własnego logu, a odwiedzający widzą ogólny komunikat
- Pusty wynik pokazuje datę indeksu zamiast pustego ekranu
Powiązane pytania
- Czy moi użytkownicy mogą wpisać dowolny URL do pola?
- Pozwól im, a następnie znormalizuj go samodzielnie. Usuń schemat, ścieżkę, ciąg zapytania i
www.jeśli wybierzesz, zamień host na małe litery, a dopiero potem wywołaj API. Upstream oczekuje samej domeny, więc nieoczyszczone dane wejściowe są najczęstszą przyczyną nieudanego wywołania. - Czy powinienem buforować błędy?
- Buforuj pusty wynik "nie zaindeksowano" przez kilka godzin, ponieważ indeks zmienia się tylko raz w miesiącu. Nigdy nie buforuj 401 lub 402 przez długi czas. Te błędy znikają natychmiast po naprawieniu klucza lub salda, a zbuforowany błąd mógłby ukryć naprawę.
- Czy darmowe akcje liczą się do czegoś?
- Nie kosztują kredytów. Cztery darmowe to
domain,overview,statsisuggest. Nadal je buforuj, ponieważ bycie upróżnym nic nie kosztuje i utrzymuje niskie opóźnienia własne.