Baidu-siteverificatie: het HTML-bestand, de metatag en CNAME

Iemand heeft u een Baidu-klus gegeven, en het eerste obstakel is een verificatiescherm. Baidu accepteert geen sitemap, opent geen indexrapporten en laat u geen enkele URL indienen zolang niet vaststaat dat het domein van u is. Er zijn drie manieren om dat te bewijzen, ze gedragen zich anders, en de dingen die misgaan zijn niet de dingen die u van Google Search Console kent.
Hieronder staan de implementatiedetails per methode, plus de redenen waarom verificatie doorgaans mislukt en hoe u elk ervan vanuit een terminal controleert.
Waar de verificatie plaatsvindt
Het webmasterproduct van Baidu heet Baidu Search Resource Platform (百度搜索资源平台) en staat op ziyuan.baidu.com; in de wandelgangen heet het nog altijd Baidu Zhanzhang. U voegt een site toe, kiest een verificatiemethode, en Baidu haalt iets van uw domein op om te bevestigen dat u de controle heeft. Pas daarna komen linkindiening, sitemap-upload en de crawldiagnostiek beschikbaar.
Twee eigenaardigheden van het propertymodel zorgen voor problemen nog voordat u een methode kiest:
- Protocol en host horen bij de identiteit.
https://example.comenhttps://www.example.comzijn voor Baidu twee verschillende sites, en dat geldt ook voor dehttp://-varianten. Voeg precies de origin toe die uw canonieke URL's gebruiken. Verifieert u de verkeerde, dan verwijst alles wat u daarna indient naar een property waar geen bezoeker langskomt. - De ophaalactie komt vanaf het Chinese vasteland. Wat het eigendom ook bewijst, het moet van daaruit bereikbaar zijn via het publieke internet, zonder challengepagina ervoor. Dat ene feit verklaart de meeste storingen onderaan dit artikel.
En daarvoor komt nog een account. Zonder Baidu-account bereikt u het verificatiescherm überhaupt niet, en registratie is gekoppeld aan SMS-bevestiging op een mobiel nummer van het Chinese vasteland. Voor een bedrijf in Europa of het Verenigd Koninkrijk is dat een echte muur, en het is goed dat te weten voordat u een middag aan DNS besteedt. Daarover meer aan het slot.
Methode 1: het HTML-verificatiebestand
De meest gebruikte methode, en de methode van voorkeur zodra u een statisch bestand kunt uitrollen.
Baidu genereert een bestand voor uw site en biedt het aan als download. De naam ziet er zo uit:
baidu_verify_codeva-XXXXXXXXXX.html
Oudere properties kregen namen in de vorm baidu_verify_XXXXXXXXXX.html, en sommige panelen tonen het voorvoegsel code- in plaats van codeva-. Probeer de naam of het token niet te reconstrueren aan de hand van een blogbericht: download het bestand dat Baidu u geeft, of kopieer de tekenreeks teken voor teken uit het paneel. De inhoud van het bestand is kort, meestal alleen het token en verder niets.
Het moet worden geserveerd vanaf de hoofdmap van de origin die u heeft geregistreerd:
https://example.com/baidu_verify_codeva-XXXXXXXXXX.html
Niet in een submap, niet achter een taalprefix, niet op een andere host.
Waar het bestand hoort, per stack
| Stack | Locatie |
| --- | --- |
| Vite, Create React App, SvelteKit (static), Nuxt | public/ of static/ in de projecthoofdmap |
| Next.js (beide routers) | public/ |
| Hugo, Astro | respectievelijk static/ en public/ |
| Laravel | public/ |
| Django | een static/-map die collectstatic verzamelt, of rechtstreeks geserveerd door nginx |
| ASP.NET Core | wwwroot/ |
| WordPress | de webhoofdmap naast wp-config.php, via SFTP |
| Kale nginx of Apache | de documenthoofdmap |
Controleer het zoals Baidu dat doet
curl -sSI https://example.com/baidu_verify_codeva-XXXXXXXXXX.html
curl -sS https://example.com/baidu_verify_codeva-XXXXXXXXXX.html
U wilt HTTP/2 200 zien, een content-type van text/html, geen location-header, en een body die exact het token is. Drie uitkomsten betekenen dat u nog niet klaar bent:
- Een 301 of 302. Iets normaliseert het pad, meestal een regel voor afsluitende slashes of een taalredirect die elk niet-herkend pad naar
/en/...stuurt. Zet een uitzondering vóór de catch-all. - Een 200 die uw app-shell teruggeeft. Dit is verreweg het vaakst voorkomende valse succes. Een single-page app met een catch-all route beantwoordt elk pad met
index.htmlen status 200, dus het bestand "bestaat", maar de body is uw React-markup. Baidu leest de body, vindt geen token en wijst het af. Serveer het statische bestand vóór de SPA-fallback. - Een 404 die na het uitrollen blijft. Meestal heeft een CDN het negatieve antwoord gecachet. Leeg de cache voor precies dat pad en controleer opnieuw met
curl -H 'Cache-Control: no-cache'.
Laat het bestand daarna in de repository staan. Baidu controleert het eigendom periodiek opnieuw, en een site die zijn verificatiebestand kwijtraakt, verdwijnt geruisloos uit het paneel.
Methode 2: de HTML-metatag
Kies deze wanneer u wel templates kunt bewerken maar geen bestanden in de webhoofdmap kunt zetten, wat de normale situatie is bij een beheerd CMS of een platformhost.
Baidu geeft u een tag van deze vorm, bestemd voor de <head> van de homepage:
<meta name="baidu-site-verification" content="codeva-XXXXXXXXXX" />
Het name-attribuut is altijd baidu-site-verification, precies zo gespeld, streepjes inbegrepen. De content-waarde is het token uit het paneel.
Drie regels bepalen of het werkt:
- Hij moet binnen
<head>staan. Een parser die hem in de<body>aantreft, beschouwt de head al als gesloten. Alles wat na het eerste element buiten de head wordt ingevoegd, is te laat. - Hij moet in de HTML staan die de server verstuurt. Open
view-source:of, beter nog,curl -sS https://example.com | grep baidu-site-verification. Verschijnt de tag alleen in de elementinspector van de DevTools, dan is hij na hydratie door JavaScript toegevoegd en telt hij niet. Hierop lopen client-gerenderde React- en Vue-apps stuk, en daarom is de bestandsmethode bij een SPA eenvoudiger. - Hij moet het framework overleven. Head-managers ontdubbelen en schonen op. Next.js wil hem in de metadata-export zien en niet als verdwaalde
<meta>in een component. React Helmet gooit tags weg die buiten zijn provider worden gerenderd. Sommige beveiligingsplug-ins voor CMS'en strippen metatags met onbekende namen. Een tagmanager kan hem niet plaatsen, want die draait aan de clientkant.
Plaatsing per framework:
// Next.js App Router, app/layout.js
export const metadata = {
other: { 'baidu-site-verification': 'codeva-XXXXXXXXXX' },
}
// WordPress, functions.php van een child theme
add_action('wp_head', function () {
echo '<meta name="baidu-site-verification" content="codeva-XXXXXXXXXX" />' . "\n";
}, 1);
Op een server-gerenderde site zet u hem in het basistemplate naast de charset- en viewporttags, en dan vergeet u hem. Bij Hugo is dat layouts/_default/baseof.html, bij Django het basistemplate dat alle pagina's uitbreiden.
Methode 3: het CNAME-record
De DNS-methode is de juiste wanneer u helemaal niets kunt uitrollen, wanneer de site achter een appliance zit die u niet beheert, of wanneer u wilt dat de controle elke toekomstige deploy overleeft. Bovendien bewijst ze de controle over het hele domein in plaats van over één document.
Baidu toont u een willekeurig hostlabel dat u onder uw domein aanmaakt en naar Baidu laat wijzen:
abcdef123456.example.com. 3600 IN CNAME ziyuan.baidu.com.
In de meeste DNS-panelen vult u alleen het linkerlabel in, omdat de zone al besloten ligt:
| Veld | Waarde |
| --- | --- |
| Type | CNAME |
| Naam / Host | abcdef123456 |
| Waarde / Doel | ziyuan.baidu.com |
| TTL | 3600, of de laagste waarde die het paneel tijdens het testen toestaat |
Vier dingen gaan hier steeds weer mis:
- Het domein wordt er twee keer achter geplakt. Wie
abcdef123456.example.comintikt in een paneel dat de zone al aanvult, krijgtabcdef123456.example.com.example.com. Toont uw paneel na het opslaan de volledig gekwalificeerde naam, lees die dan terug. - De afsluitende punt achter het doel. In een ruw zonebestand wordt
ziyuan.baidu.comzonder die laatste punt relatief aan de zone gelezen en wordt hetziyuan.baidu.com.example.com. Panelen nemen u dat uit handen,nameden Terraform-bestanden niet. - Een proxy vóór het record. Bij Cloudflare lost een geproxyd record (oranje wolkje) van buitenaf niet meer op als CNAME: het gezaghebbende antwoord wordt dan het A-record van Cloudflare. Zet het verificatierecord op DNS only.
- Korter wachten dan de TTL. Heeft een resolver al een negatief antwoord voor die naam in de cache, dan geldt de oude TTL. Controleer wat de buitenwereld werkelijk ziet, niet wat uw paneel beweert.
dig +short abcdef123456.example.com CNAME
# ziyuan.baidu.com.
dig +short @8.8.8.8 abcdef123456.example.com CNAME
Laat het record staan. Wie het na een geslaagde controle verwijdert, vraagt om een mislukte herverificatie later.
Waarom verificatie mislukt terwijl de opzet klopt
U heeft het bestand gecurld, het geeft 200, en Baidu zegt nog steeds nee. Werk deze lijst af:
- Een botchallenge of een WAF-regel. Cloudflare Bot Fight Mode, de managed rules van AWS WAF en de meeste "under attack"-instellingen sturen elke client die geen scripts uitvoert een JavaScript-tussenpagina met een 403 of 503. De ophaaldienst van Baidu voert die niet uit. Zet het verificatiepad of de crawler op de allowlist.
- Geoblokkering. Heel wat Europese sites blokkeren of knijpen verkeer vanaf het Chinese vasteland af om scraping tegen te gaan. De verificatie-aanvraag komt precies uit dat bereik. Controleer of niets aan de edge hem laat vallen.
- De user agent wordt gefilterd. De crawler meldt zich als
Baiduspider. Sommige beveiligingsstacks zien onbekende crawlerstrings aan voor scrapers. Wilt u vóór het toelaten vaststellen dat een aanvraag echt is: de reverse DNS van het bron-IP komt uit op*.baidu.comof*.baidu.jp, en de forward lookup moet daarmee overeenkomen. robots.txtblokkeert het. EenDisallow: /onder een wildcard-user-agent, of een explicietUser-agent: Baiduspider-blok dat iemand anders heeft achtergelaten, stopt de ophaalactie voordat die begint.- Een TLS-probleem dat browsers verbergen. Een ontbrekend tussencertificaat wordt door desktopbrowsers geruisloos gerepareerd en door eenvoudige fetchers niet. Haal uw domein door een externe TLS-checker in plaats van op een groen slotje te vertrouwen.
- De verkeerde origin verifiëren. Het bestand staat op
www.example.com, de property in Baidu zegtexample.com. Geen enkele foutmelding zal u dat vertellen. - Een trage eerste byte. Servers in Europa zonder Chinese aanwezigheid beantwoorden een aanvraag uit Peking traag, en een koude serverless start daarbovenop kan de ophaaltimeout overschrijden. Het op een ander tijdstip opnieuw proberen helpt echt.
Welke methode u moet kiezen
Rol een statisch bestand uit als u een buildpipeline heeft: die wordt het minst snel verminkt en is het makkelijkst te testen. Neem de metatag als u in een CMS werkt en uw pagina's server-gerenderd zijn. Neem de CNAME als u de site helemaal niet kunt aanraken, of als u het eigendom één keer op domeinniveau wilt bewijzen en er nooit meer naar wilt omkijken.
Wat u ook kiest: laat het permanent staan en noteer het in uw infrastructuurdocumentatie, naast uw andere DNS-records. Degene die over achttien maanden een mysterieus bestand verwijdert, bent u zelf.
Wat de methoden niet oplossen
Alle drie de methoden gaan ervan uit dat u al bent ingelogd op een Baidu-account. Registratie wordt bevestigd per SMS naar een mobiel nummer van het Chinese vasteland, en voor veel properties vraagt Baidu daarnaast om verificatie van de echte naam (实名认证) met een Chinees nationaal identiteitsbewijs of een Chinese bedrijfsregistratie. Een bedrijf in Frankfurt of Manchester met een vlekkeloos geconfigureerde DNS-zone komt alsnog niet tot het verificatiescherm.
Daar komt onze Baidu-aanmeldingsdienst in beeld. U wijst ons het domein aan, doorloopt aan uw kant één controle van het domeineigendom, en wij voeren de aanmelding uit en rapporteren wat Baidu daadwerkelijk heeft geïndexeerd, voor een vaste prijs per domein. Geen Chinees telefoonnummer, geen Chinese entiteit, geen eigen Baidu-account.
Wilt u eerst het bredere plaatje, dan behandelt de volledige Baidu-aanmeldingsgids sitemaps, de push-API en waar Baidu's ranking werkelijk op beloont. Bespreekt u het liever, plan dan een gesprek.
Dienst
Wij kunnen dit volledig van u overnemen
Het eigendomsbewijs van het domein, het indienen van sitemap en URL's, en na twee weken een indexeringsrapport. Eén domein, een vaste prijs, zonder Chinees telefoonnummer, zonder Chinese entiteit en zonder eigen Baidu-account.
Bekijk de Baidu-aanmeldingsdienst