Weryfikacja witryny w Baidu: plik HTML, metatag i rekord CNAME

Ktoś zlecił Ci zadanie związane z Baidu i pierwszą przeszkodą okazuje się ekran weryfikacji. Baidu nie przyjmie mapy witryny, nie otworzy raportów indeksowania i nie pozwoli przesłać ani jednego adresu URL, dopóki nie upewni się, że domena należy do Ciebie. Udowodnić to można na trzy sposoby, każdy zachowuje się inaczej, a błędy wyglądają zupełnie inaczej niż te znane z Google Search Console.
Poniżej szczegóły wdrożenia każdej z metod, powody, dla których weryfikacja zwykle się nie udaje, i sposób na sprawdzenie każdej z nich z poziomu terminala.
Gdzie znajduje się weryfikacja
Narzędzie Baidu dla webmasterów to Baidu Search Resource Platform (百度搜索资源平台) pod adresem ziyuan.baidu.com, wciąż powszechnie nazywane Baidu Zhanzhang. Dodajesz witrynę, wybierasz metodę weryfikacji, a Baidu pobiera coś z Twojej domeny, żeby potwierdzić kontrolę nad nią. Dopiero wtedy odblokowują się zgłaszanie linków, przesyłanie mapy witryny i diagnostyka indeksowania.
Dwie rzeczy w modelu witryn zaskakują ludzi, zanim jeszcze wybiorą metodę:
- Protokół i host są częścią tożsamości.
https://example.comihttps://www.example.comto dla Baidu dwie różne witryny, podobnie jak ich wersjehttp://. Dodaj dokładnie ten origin, którego używają Twoje kanoniczne adresy URL. Weryfikacja niewłaściwego oznacza, że wszystko, co potem zgłosisz, dotyczy witryny, przez którą nie przechodzi żaden Twój ruch. - Pobranie następuje z Chin kontynentalnych. Cokolwiek ma potwierdzać własność, musi być stamtąd dostępne, przez publiczny internet, bez strony zabezpieczającej po drodze. Ten jeden fakt tłumaczy większość błędów opisanych na końcu artykułu.
Zanim jednak dojdzie do czegokolwiek, potrzebne jest konto. Bez konta Baidu w ogóle nie dotrzesz do ekranu weryfikacji, a rejestrację potwierdza SMS na numer komórkowy z Chin kontynentalnych. Dla firmy w Europie czy Wielkiej Brytanii to realna ściana i warto o niej wiedzieć, zanim poświęcisz całe popołudnie na DNS. Więcej o tym na końcu.
Metoda 1: plik weryfikacyjny HTML
Najczęściej stosowana i ta, po którą warto sięgnąć, jeśli możesz wdrożyć plik statyczny.
Baidu generuje plik dla Twojej witryny i udostępnia go do pobrania. Nazwa wygląda tak:
baidu_verify_codeva-XXXXXXXXXX.html
Starsze witryny dostawały nazwy w formie baidu_verify_XXXXXXXXXX.html, a niektóre panele pokazują przedrostek code- zamiast codeva-. Nie próbuj odtwarzać nazwy ani tokenu na podstawie wpisu na blogu: pobierz plik, który daje Ci Baidu, albo skopiuj ciąg z panelu znak po znaku. Treść pliku jest krótka, zwykle sam token i nic poza tym.
Plik musi być serwowany z katalogu głównego zarejestrowanego origin:
https://example.com/baidu_verify_codeva-XXXXXXXXXX.html
Nie w podkatalogu, nie za prefiksem językowym, nie na innym hoście.
Gdzie trafia plik, zależnie od stacku
| Stack | Lokalizacja |
| --- | --- |
| Vite, Create React App, SvelteKit (static), Nuxt | public/ lub static/ w katalogu głównym projektu |
| Next.js (oba routery) | public/ |
| Hugo, Astro | odpowiednio static/ i public/ |
| Laravel | public/ |
| Django | katalog static/ zbierany przez collectstatic albo serwowany bezpośrednio przez nginx |
| ASP.NET Core | wwwroot/ |
| WordPress | katalog główny obok wp-config.php, przez SFTP |
| Zwykły nginx lub Apache | katalog dokumentów |
Sprawdź to tak, jak zrobi to Baidu
curl -sSI https://example.com/baidu_verify_codeva-XXXXXXXXXX.html
curl -sS https://example.com/baidu_verify_codeva-XXXXXXXXXX.html
Oczekujesz HTTP/2 200, nagłówka content-type o wartości text/html, braku nagłówka location i treści, która jest dokładnie tokenem. Trzy wyniki oznaczają, że praca nie jest skończona:
- Kod 301 lub 302. Coś normalizuje ścieżkę, najczęściej reguła ukośnika na końcu albo przekierowanie językowe, które wysyła każdą niedopasowaną ścieżkę do
/en/.... Dodaj wyjątek przed regułą łapiącą wszystko. - Kod 200 zwracający powłokę aplikacji. To najczęstszy fałszywy sukces. Aplikacja jednostronicowa z trasą łapiącą wszystko odpowiada na każdą ścieżkę plikiem
index.htmli statusem 200, więc plik „istnieje”, tylko jego treścią jest Twój kod React. Baidu czyta treść, nie znajduje tokenu i odrzuca weryfikację. Serwuj plik statyczny przed fallbackiem SPA. - Kod 404 utrzymujący się po wdrożeniu. Zwykle winny jest CDN, który zapisał w pamięci podręcznej odpowiedź negatywną. Wyczyść dokładnie tę ścieżkę, a potem sprawdź ponownie przez
curl -H 'Cache-Control: no-cache'.
Zostaw plik w repozytorium. Baidu okresowo sprawdza własność ponownie, a witryna, która straci plik weryfikacyjny, po cichu znika z panelu.
Metoda 2: metatag HTML
Wybierz ją, gdy możesz edytować szablony, ale nie możesz wrzucać plików do katalogu głównego, czyli w typowej sytuacji na zarządzanym CMS-ie albo hostingu platformowym.
Baidu daje tag o takim kształcie, do umieszczenia w sekcji <head> strony głównej:
<meta name="baidu-site-verification" content="codeva-XXXXXXXXXX" />
Atrybut name to zawsze baidu-site-verification, zapisane dokładnie tak, z myślnikami. Wartość content to token z panelu.
O tym, czy zadziała, decydują trzy zasady:
- Musi być wewnątrz
<head>. Parser, który znajdzie go w<body>, uznaje sekcję head za już zamkniętą. Wszystko wstrzyknięte po pierwszym elemencie spoza head przychodzi za późno. - Musi być w kodzie HTML wysyłanym przez serwer. Otwórz
view-source:albo, lepiej,curl -sS https://example.com | grep baidu-site-verification. Jeśli tag pojawia się wyłącznie w inspektorze elementów w DevTools, dodał go JavaScript po hydracji i nie liczy się. To właśnie psuje sprawę w aplikacjach React i Vue renderowanych po stronie klienta i dlatego w SPA prościej jest użyć metody z plikiem. - Musi przetrwać framework. Menedżery sekcji head deduplikują i czyszczą tagi. Next.js oczekuje go w eksporcie metadata, a nie jako luźnego
<meta>w komponencie. React Helmet usuwa tagi renderowane poza swoim providerem. Niektóre wtyczki bezpieczeństwa w CMS-ach wycinają metatagi o nieznanych nazwach. Menedżer tagów go nie umieści, bo działa po stronie klienta.
Umiejscowienie w konkretnych frameworkach:
// Next.js App Router, app/layout.js
export const metadata = {
other: { 'baidu-site-verification': 'codeva-XXXXXXXXXX' },
}
// WordPress, functions.php motywu potomnego
add_action('wp_head', function () {
echo '<meta name="baidu-site-verification" content="codeva-XXXXXXXXXX" />' . "\n";
}, 1);
Na stronie renderowanej po stronie serwera wstaw go do szablonu bazowego, obok tagów charset i viewport, i zapomnij o nim. W Hugo to layouts/_default/baseof.html, w Django szablon bazowy, który rozszerzają wszystkie strony.
Metoda 3: rekord CNAME
Po metodę DNS sięga się wtedy, gdy nie możesz nic wdrożyć, gdy witryna stoi za urządzeniem, nad którym nie masz kontroli, albo gdy chcesz, żeby weryfikacja przetrwała każde kolejne wdrożenie. Potwierdza też kontrolę nad całą domeną, a nie nad jednym dokumentem.
Baidu pokazuje losową etykietę hosta do utworzenia w Twojej domenie, wskazującą na Baidu:
abcdef123456.example.com. 3600 IN CNAME ziyuan.baidu.com.
W większości paneli DNS wpisuje się tylko lewą etykietę, bo strefa jest domyślna:
| Pole | Wartość |
| --- | --- |
| Typ | CNAME |
| Nazwa / Host | abcdef123456 |
| Wartość / Cel | ziyuan.baidu.com |
| TTL | 3600 albo najniższy, na jaki pozwala panel podczas testów |
Cztery rzeczy psują się tu raz za razem:
- Domena zostaje doklejona dwa razy. Wpisanie
abcdef123456.example.comw panelu, który strefę już dodaje, tworzyabcdef123456.example.com.example.com. Jeśli panel po zapisaniu pokazuje pełną nazwę, przeczytaj ją. - Kropka na końcu celu. W surowym pliku strefy
ziyuan.baidu.combez końcowej kropki jest interpretowane względem strefy i staje sięziyuan.baidu.com.example.com. Panele załatwiają to za Ciebie, plikinamedi Terraform nie. - Proxy przed rekordem. W Cloudflare rekord z włączonym proxy (pomarańczowa chmurka) nie rozwiązuje się już z zewnątrz jako CNAME: autorytatywną odpowiedzią stają się rekordy A Cloudflare. Ustaw rekord weryfikacyjny na DNS only.
- Krótsze czekanie niż TTL. Jeśli resolver ma już zapisaną negatywną odpowiedź dla tej nazwy, obowiązuje stary TTL. Sprawdź, co widzi świat, a nie co pokazuje Twój panel.
dig +short abcdef123456.example.com CNAME
# ziyuan.baidu.com.
dig +short @8.8.8.8 abcdef123456.example.com CNAME
Zostaw rekord na miejscu. Usunięcie go po udanej weryfikacji to proszenie się o błąd przy późniejszym ponownym sprawdzeniu.
Dlaczego weryfikacja się nie udaje, choć konfiguracja wygląda poprawnie
Plik sprawdzony curlem, zwraca 200, a Baidu nadal mówi nie. Przejdź po tej liście:
- Test botowy albo reguła WAF. Cloudflare Bot Fight Mode, zarządzane reguły AWS WAF i większość trybów „pod atakiem” zwracają stronę pośrednią z JavaScriptem i kodem 403 lub 503 każdemu klientowi, który nie wykonuje skryptów. Pobieracz Baidu ich nie wykonuje. Dodaj wyjątek dla ścieżki weryfikacyjnej albo dla samego robota.
- Blokada geograficzna. Sporo europejskich witryn blokuje albo ogranicza ruch z Chin kontynentalnych, żeby ukrócić scraping. Pobranie weryfikacyjne przychodzi dokładnie z tego zakresu. Upewnij się, że nic na brzegu sieci go nie odrzuca.
- Filtrowany user agent. Robot przedstawia się jako
Baiduspider. Niektóre systemy bezpieczeństwa traktują nieznane ciągi robotów jak scrapery. Jeśli chcesz potwierdzić autentyczność żądania przed dodaniem wyjątku: odwrotny DNS na adresie źródłowym rozwiązuje się do*.baidu.comlub*.baidu.jp, a zapytanie w przód musi się zgadzać. - Blokada w
robots.txt.Disallow: /pod user-agentem z gwiazdką albo zostawiony przez kogoś jawny blokUser-agent: Baiduspiderzatrzymuje pobranie, zanim się ono zacznie. - Problem z TLS, którego przeglądarki nie pokazują. Brakujący certyfikat pośredni przeglądarki na komputerze naprawiają po cichu, a proste klienty HTTP nie. Przepuść domenę przez zewnętrzny tester TLS zamiast ufać zielonej kłódce.
- Weryfikacja niewłaściwego origin. Plik leży na
www.example.com, a witryna w Baidu toexample.com. Komunikat o błędzie nie powie Ci o tym ani słowa. - Wolny czas do pierwszego bajtu. Serwery w Europie bez obecności w Chinach odpowiadają na żądanie z Pekinu powoli, a zimny start funkcji serverless może do tego przekroczyć limit czasu pobrania. Ponowna próba o innej porze naprawdę pomaga.
Którą metodę wybrać
Wdróż plik statyczny, jeśli masz pipeline budowania: najtrudniej go zepsuć i najłatwiej przetestować. Weź metatag, jeśli żyjesz w CMS-ie, a strony są renderowane po stronie serwera. Weź CNAME, jeśli w ogóle nie możesz ruszyć witryny albo chcesz raz udowodnić własność na poziomie domeny i nigdy do tego nie wracać.
Cokolwiek wybierzesz, zostaw to na stałe i zapisz w dokumentacji infrastruktury, obok pozostałych rekordów DNS. Osobą, która za półtora roku usunie tajemniczy plik, będziesz Ty.
Czego te metody nie rozwiązują
Każda z tych trzech metod zakłada, że jesteś już zalogowany na konto Baidu. Rejestrację potwierdza SMS na numer komórkowy z Chin kontynentalnych, a przy wielu witrynach Baidu prosi dodatkowo o weryfikację tożsamości (实名认证) chińskim dowodem osobistym albo chińską licencją firmową. Firma we Frankfurcie czy Manchesterze z bezbłędnie skonfigurowaną strefą DNS i tak nie dotrze do ekranu weryfikacji.
I tu wchodzi nasza usługa zgłoszenia do Baidu. Wskazujesz nam domenę, po swojej stronie przechodzisz jedno potwierdzenie własności domeny, a my przeprowadzamy zgłoszenie i raportujemy, co Baidu faktycznie zaindeksowało, za stałą cenę od domeny. Bez chińskiego numeru telefonu, bez chińskiej spółki, bez własnego konta Baidu.
Jeśli wolisz najpierw szerszy obraz, pełny przewodnik po zgłaszaniu do Baidu omawia mapy witryn, API push i to, co ranking Baidu naprawdę nagradza. A jeśli wolisz o tym porozmawiać, umów rozmowę.
Usługa
Możemy zrobić to wszystko za Ciebie
Potwierdzenie własności domeny, przesłanie mapy witryny i adresów URL oraz raport indeksowania po dwóch tygodniach. Jedna domena, stała cena, bez chińskiego numeru telefonu, bez chińskiej spółki i bez własnego konta Baidu.
Zobacz usługę zgłoszenia do Baidu