robots.txt那87行,33个站一个字都没改过
本文目录
- 你的站对爬虫说的那些话,有几句是你自己写的?
- 这和站内已经写过的那几件事不一样
- 这次量了什么?先把尺子说清楚
- 98个首页里,有多少写了抓取声明?
- 那三个数值配额,基本没人用
- 那87行规则,到底是谁写的?
- 唯一那个真动过手的站,改的是什么
- 出厂件里有一条反直觉的规则:登录页是被明确放行的
- 购物车、登录页、站内搜索,最后挡住了几个?
- “允许抓”这三个字是谁决定的
- 为什么noindex写了也可能白写?
- bugaboo那五个页面
- 那句noindex,是你说的还是平台替你说的?
- 那串指令里混进了一个不存在的词
- 响应头这一层几乎是空的
- 到今天为止,还有谁会重新打开这个文件?
- Sitemap那一行,14个站压根没写
- 我的尺子错在哪?
- 第一处:页面类型判错了44个
- 第二处:HTTP 200不等于拿到了robots.txt
- 第三处:排版精致,不代表是人写的
- 第四处:匹配器本身有没有资格下结论
- 自己站上怎么查,按什么顺序?
- 第一步:列出本来就不该进搜索结果的页面
- 第二步:对每个地址,先问能不能抓
- 第三步:再问准不准收
- 第四步:落进四个格子,只处理两类
- 第五步:过一遍那三个数值配额
- 第六步:把这件事变成定期动作
- 常见问题解答
- 购物车页面被搜索引擎收录了,会影响排名吗?
- robots.txt的Disallow和页面的noindex,到底该用哪个?
- 我用的是SaaS建站平台,robots.txt改不了怎么办?
- 在robots.txt里屏蔽GPTBot、ClaudeBot这些,有用吗?
- 为什么131个站只有98个进了页面统计?
- meta robots写成index,follow有没有必要?
- 权威参考资料
摘要:把131个海外品牌站的robots.txt和450个页面的抓取声明放在一起对了一遍账。34个八竿子打不着的品牌共用同一份87行的robots.txt,出厂68行一行没删,各自新增的那1行是平台自动写进去的店铺编号——真正动过手的只有1个站,它加的12行全是给AI爬虫开的。页面这一层,98个首页里61个什么都没写,写了的37个有25个写的是默认值本身。而购物车页面按四象限拆开,真正被挡住的只有4个。另有36个站的文件顶部挂着一段写给AI购物代理的条款,联系邮箱清一色是平台的。
aloyoga卖瑜伽服,snowpeak卖露营炉具,liquiddeath卖罐装水,wusthof卖德国厨刀。四家公司在四个国家做四门生意,客单价差着一个数量级,网站上唯一完全相同的东西,是一份87行的文本文件。
不是相似,是一字不差。连规则的先后顺序都一样。
这份文件叫robots.txt,放在域名根目录下,是网站对搜索引擎爬虫说的第一句话。按理说它该是一份带着生意判断的东西——哪些页面欢迎收录、哪些页面不值得浪费抓取额度、哪些目录压根不该被外人看见。可这34个站里有33个,除了建站时自动生成的那一行,从上线到今天没动过一个字。
你的站对爬虫说的那些话,有几句是你自己写的?
一个页面能不能进搜索结果,中间隔着两道独立的闸门,分别由两份声明把守。
第一道在域名根上,就是robots.txt。它管的是能不能来抓。爬虫在请求任何页面之前先读它,被Disallow挡住的路径,爬虫不会去请求。
第二道在页面自己身上,是HTML里那行<meta name="robots">,或者HTTP响应头里的X-Robots-Tag。它管的是抓到了准不准收。写着noindex,搜索引擎抓完就把这一页丢掉,不放进索引。
两道闸门的顺序不能颠倒,这是理解后面所有数字的前提:第二道闸门的指令写在页面里,爬虫必须先过第一道闸门、把页面抓回去,才能读到它。第一道把路堵死了,第二道说什么都没人听见。
这个顺序关系在实操里天天被写反,所以我想把它量一量:这两份声明在真实站点上到底长什么样、是谁写的、加在一起有没有真的挡住那些不该被收录的页面。
这和站内已经写过的那几件事不一样
robots.txt这个文件本身,我此前拆过几层:两条规则撞车时按路径长度裁决、给某个爬虫单开一组反而让它脱离通配组、Crawl-delay这类字段今天还有没有人读、星号规则对AdsBot无效。页面这一层也写过响应头和meta打架时谁说了算与同一个字段写两遍谁算数。
那几篇讲的都是同一件事的不同侧面——一条规则该怎么被解读。这一篇往前退一步,问的是另外两个问题:这些规则是谁写下的,以及两份声明加在一起,结果是什么。
这次量了什么?先把尺子说清楚
取样是131个海外品牌独立站,覆盖服装、家居、户外、美妆、小家电、消费电子几个大类,既有做了二十年的老牌子,也有近几年出海的新品牌。
东西分两头采:
- 域名这一层:请求每个站的
/robots.txt,原样存下来,自己实现一遍规则匹配。 - 页面这一层:每个站取首页加最多5个内页,覆盖商品页、类目页、文章页、购物车、账户登录、站内搜索,记下HTML里的
meta robots、响应头里的X-Robots-Tag,以及正文里的data-nosnippet属性。
实际到手:robots.txt有122个站返回200,页面这边拿到98个站的首页共450个页面。差额那33个站是被防护层挡在门外的,取不回首页——它们在结论里全部缺席,不进任何分母。
规则匹配这件事我不敢直接用现成的库。robots协议的裁决规则有几处很反直觉:按路径长度取最长匹配而不是按行号先后,同样长度时Allow胜过Disallow,给某个爬虫单开的分组一旦存在就完全屏蔽掉通配分组。这几条RFC 9309里写得很清楚,但实现起来容易漏。
所以我先给自己的匹配器出了18道题——全部来自规范里的经典用例,包括Disallow: /cart会不会误伤/cartoon(会,这是规范定的,前缀匹配不看词边界)、$结尾锚碰上带参数的地址算不算命中、有googlebot专组时通配组是不是彻底不看。18题全过,我才敢拿它去数后面那些百分比。
这一步不能省。任何一句“有多少个站没挡住”,本质上是尺子说了算的,尺子错了,后面全是错的。这次的四处尺子问题我单独写了一节,放在文章靠后的位置。
98个首页里,有多少写了抓取声明?
先看页面这一层最干净的一个切面:首页。
98个首页里,61个什么都没写,占62.2%。没有meta robots,没有X-Robots-Tag,一条都没有。
这本身不是错。什么都不写,等于告诉搜索引擎按默认来——可以收录、可以跟随链接。首页本来就该被收录,不写反而是最省事的正确做法。
有意思的是剩下那37个写了的。它们里面,25个写的是默认值本身:index,follow,或者带个空格写成index, follow。这句话的信息量是零,它和什么都不写的效果完全一致。
换句话说,98个首页里,真正写了一句能改变搜索引擎行为的话的,只有12个,12.2%。
那三个数值配额,基本没人用
2019年之后,robots meta里多了三个带数值的指令,用来管搜索结果里能露出多少东西:max-snippet控制摘要能引用多少字符,max-image-preview控制缩略图能放多大,max-video-preview控制视频能预览多少秒。写-1是不限制(三个指令的合法取值与默认行为,Google的robots meta指令清单里一页就列全了)。
在AI搜索开始大规模引用网页内容的今天,这三个数按说该被重新讨论一遍——它们是少数几个能直接约束你的内容以多大篇幅出现在别人的界面里的开关。
实际用的人有多少:
max-image-preview:12个站用过,占12.2%。其中10个写large,1个写standard(fiskars),只有insta360写了none——它是唯一一个明确说“别放我的图”的。max-snippet:3个站,braun、fiskars、ouraring,全部写-1。max-video-preview:4个站,也全是-1。
写-1的含义是“随便你引用多少”。所以这三个配额在131个站里的真实使用情况是:一个站主动收紧,其余全部主动放开或者根本没想过。争论了两年的AI引用边界问题,在这一层上几乎没有留下任何痕迹。
那87行规则,到底是谁写的?
回到开头那件事。
我把122份robots.txt做了归一化处理——丢掉注释、丢掉Sitemap行、把规则排序后算指纹,为的是让“内容一样但顺序不同”的文件能被认出来是同一份。
结果里跳出一个34个站的族群。这34个站的robots.txt,规则集的相似度超过0.8。再细看,其中33个的规则行数完全相同:87行,一行不多一行不少。
把这34个站的规则逐行统计出现率,出现率超过九成的有68行,可以认定是出厂内容。然后看每个站在这68行之外还有什么:
- 每个站自定义的行数:1行。中位数1,最大值也是1,除了一个例外。
- 删掉过出厂行的站:0个。68行原封不动。
那唯一的1行是什么?aloyoga是Disallow: /21852813,glossier是Disallow: /62791647477,decathlon是Disallow: /13306287。一串数字,是平台的店铺内部编号,建站时自动写进去的。
也就是说,这33个站的robots.txt里,没有一行是人写的。
唯一那个真动过手的站,改的是什么
34个里只有brooklynbedding不一样,它有109行,比出厂多了12行。这12行全是User-agent:ClaudeBot、GPTBot、OAI-SearchBot、OAI-AdsBot、ChatGPT-User、PerplexityBot、Google-Extended、Applebot-Extended、Googlebot-Image,还有一个我没见过的Magus Bot 1.0。
一份文件放着多年没人碰,最后把人叫回来打开它的,是AI爬虫。这个站的购物车规则、账户规则、抓取频率,全都还是出厂的样子,唯独多出这12行。
出厂件里有一条反直觉的规则:登录页是被明确放行的
这份出厂robots.txt里跟结账、账户有关的规则,34个站保留率都是100%。挑几条关键的看:
Disallow: /cart/、Disallow: /checkout、Disallow: /checkouts/、Disallow: /orders——购物流程全部禁止抓取,很合理。Disallow: /account——账户区禁止抓取,也合理。Allow: /account/login——然后又专门给登录页开了个口子。
按最长匹配的裁决规则,/account/login这条Allow比/account更长,所以登录页是被明确允许抓取的。平台这么设计有它的道理,登录页往往承担一部分品牌词流量。但它带来的后果要连着下一节看:既然robots.txt放行了,登录页收不收得进索引,就全看页面自己那行meta robots了。
购物车、登录页、站内搜索,最后挡住了几个?
这是这次对账的核心。把两份声明放在一起,每个页面落进四个格子中的一个:
- A格:robots.txt允许抓,页面写了noindex。爬虫抓得到、也读得到那句话——真正挡住了。
- B格:robots.txt允许抓,页面什么都没写。默认可收录。
- C格:robots.txt禁止抓,页面却写了noindex。爬虫根本读不到这句话——自相矛盾。
- D格:robots.txt禁止抓,页面没写。只靠第一道闸门挡着。
442个可判定的页面整体落点是:A格27个(6.1%),B格388个(87.8%),C格11个(2.5%),D格16个(3.6%)。
B格占了近九成,但这不叫问题——商品页、类目页、文章页本来就该被收录,什么都不写正是对的。所以只看那三类天生不该进搜索结果的页面:
- 购物车:26个可判定,A格只有4个。裸奔在B格的11个(42.3%),靠robots.txt挡在D格的8个,落进自相矛盾的C格3个。
- 账户与登录:32个可判定,A格9个,B格17个,占53.1%。
- 站内搜索:9个可判定,A格2个,B格4个,C格1个,D格2个。样本最小,但它是三类里唯一一个四格全占的。
购物车这一格值得多说一句。26个里真正被两道闸门配合挡住的只有4个,而11个是完全敞开的——robots.txt说随便抓,页面自己也没说别收。站内搜索结果页那次实测里我提过,这类页面进了索引未必立刻出事,它更像慢性病:占着抓取额度、稀释站内主题、偶尔在品牌词下面冒出来一条空购物车。
“允许抓”这三个字是谁决定的
把B格里那些登录页的判定依据拉出来看,命中的规则是Allow: /account/login——正是上一节那条出厂规则。aloyoga、dollarshaveclub、drinkolipop、fahertybrand、magicspoon的登录页,全部因为这一行被判为允许抓取,而它们的页面上又没有noindex。
一条平台默认放行的规则,加上一个没人补写的声明,两个“没做决定”凑在一起,凑出了一个决定。
为什么noindex写了也可能白写?
C格那11个页面,是这次最想单独拎出来说的。它们的共同点是:运维明显是想挡住这些页面的,两道闸门都动了手,结果反而互相抵消。
典型的几个:
- burrow的
/cart:robots.txt里有Disallow: /cart,页面上又写了noindex, nofollow。 - suitsupply的购物车和登录页:robots.txt写
Disallow: */cart*和Disallow: */login*,页面同时写noindex, nofollow。 - allbirds的
/search:Disallow: /search加页面noindex, nofollow。 - cybex的登录页、dreametech的结账页,同一个套路。
问题出在哪:既然robots.txt已经不让抓了,爬虫就不会去请求这个页面,也就永远读不到页面里那句noindex。这句话写了等于没写。
而Google对这种情况有明确说法——被robots.txt挡住的地址,如果有足够多的外部链接指向它,仍然可能以“无摘要”的形式出现在搜索结果里,因为搜索引擎知道这个地址存在,只是不知道里面写了什么。想让一个页面确定不出现在结果里,正确做法恰恰相反:要允许抓取,让爬虫读到那句noindex。
bugaboo那五个页面
C格11个里有5个来自同一个站。bugaboo的robots.txt里有一行Disallow: /sg-en——整个新加坡站被禁止抓取。同时,这个站点下的首页、博客页、商品页,每一页的HTML里都写着noindex,nofollow。
两套机制都在做同一件事,而第一套让第二套失效了。更麻烦的是,这种配置下你在搜索控制台里几乎看不出问题:页面没被收录,符合预期;robots.txt测试工具说被挡住了,也符合预期。只有把两份声明并排放在一起看,才会发现它们在互相打架。
要判断自己站上有没有这种情况,可索引性体检那套流程里的顺序是对的:先问能不能抓,再问准不准收,两个答案凑齐才有结论。单看任何一边都会得出相反的判断。
那句noindex,是你说的还是平台替你说的?
采集时我保留了每个页面的最终落地地址,这一步意外掀开了另一层。
450个页面里有29个,最终落在了品牌自己域名之外。全部是账户登录页——点进去之后跳到了电商平台自己的认证域名上,地址形如shopify.com/authentication/<店铺编号>/login。
baseus、burrow、govee、hellotushy、ice-watch、italic、liquiddeath这些站的登录页,页面上确实写着noindex, nocache, noarchive, nofollow,响应头里也发了一模一样的一份。看上去挺规范。
但这句话不是这些品牌说的,是平台在它自己的域名上说的。品牌方对这段声明没有任何控制权,改不了也不需要改——同时也意味着,它随时可能因为平台改版而变,而你不会收到通知。
那串指令里混进了一个不存在的词
上面那串指令里的nocache,根本不是robots meta的合法指令。robots协议这一层从来没有这个词,它是从HTTP缓存控制那边串过来的(一个词属不属于这一层,查MDN列的meta name字段最快)。8个站的登录页都带着它——因为它们用的是同一个平台,同一段模板。
写一个不存在的指令没有副作用,爬虫会直接忽略它,跟那些收件人早已不在的字段是一个道理。但它是个很好的指纹:当你在一份声明里看到明显不属于这一层的词,基本可以断定这段东西是从别处复制过来的,没人逐条核对过。
响应头这一层几乎是空的
450个页面里,发出X-Robots-Tag响应头的只有17个,来自12个站,其中还有一多半就是刚才那些平台登录页。
brompton的5个页面发的是X-Robots-Tag: all。all是合法值,含义是“不做任何限制”——跟不发这个头完全等价。有人特意在服务器上配了一行,用来说一句什么都没说的话。
meta和响应头同时存在的页面有10个,8个内容一致。剩下2个来自shopify.com自己:meta写max-image-preview:large,响应头写noindex, follow。这两层打架时的裁决顺序此前单独测过,这里不重复,只说一句:连平台自己都会让这两层说出不同的话。
到今天为止,还有谁会重新打开这个文件?
核对出厂件原文的时候,我在文件顶部撞见了一段不是规则的东西。
它是一段注释,二十来行,用#开头,所以对爬虫的规则解析没有任何作用。但它写的内容是这样的:先给出这个站的agents.md地址、.well-known/ucp发现地址和一个MCP端点,然后直接对读它的人喊话——如果你是以个人助理或者代购身份在读这份文件,请建议你的用户装上购物技能,这样你就能直接下单、比价、查物流。
再往下一段,语气变了:
Checkouts are for humans.——结账是人的事。不允许脚本填单、不允许浏览器自动化、不允许任何在没有当场人工确认的情况下走完付款的流程。要接,就走官方的结账套件。末尾附上服务条款链接和一个联系邮箱:bots@shopify.com。
这段话覆盖了36个站,占30.5%。它出现在瑜伽服品牌、露营炉具品牌、宠物食品品牌的域名根目录下,措辞一字不差,联系邮箱清一色是平台的。正在替这36个品牌跟AI购物代理划边界的,是一段他们多半不知道存在的注释。
带这段条款的文件,注释行数中位21行,整份文件中位116行,注释占了18%的篇幅。也就是说,这份文件今天有近五分之一的内容不是写给爬虫的规则解析器看的,是写给读得懂英文的东西看的。这个变化发生在什么时候、经过谁同意,站长这一侧没有任何记录。
回到爬虫本身。118份可用的robots.txt里,点名过至少一个AI爬虫的有19个站,占15.6%。
被点名最多的是PerplexityBot,12个站;然后是GPTBot和OAI-SearchBot各11个,ClaudeBot 10个,Google-Extended和ChatGPT-User各9个,CCBot、anthropic-ai、Amazonbot各7个,Applebot-Extended和Bytespider各5个,meta-externalagent 4个。
点名密度最高的四个站是arcteryx和framebridge各12个、awaytravel和flyingtiger各11个。
但点名多少不等于想清楚了。真正看得出有人坐下来做过判断的是另外两个:
- ecoflow的robots.txt只有25行,短得不像个大站。前三行是
Allow: /llms.txt、Allow: /llms-full.txt、Allow: /us/llms.txt——先把给模型看的那几个文件明确放行,再分组处理AI搜索爬虫。 - swarovski写了
Explicitly allowed AI crawlers and fetchers,然后按厂商分段:OpenAI一段、Google一段,并且在Google那段里注明区分训练用途和答案生成用途。
这两个站有个共同点:都不在那个34站的出厂族里。文件是自己的,才谈得上写什么。
剩下84.4%的站,robots.txt里对这一整类爬虫只字未提。它们不是决定放行,是根本没打开过这个文件。
放行与否其实还排在更靠后。不少站的正文根本没落在初始HTML里,爬虫进得来也读不到东西——那种情况下,这份文件里写什么都不影响结果。
这里要泼一盆冷水:在robots.txt里写下这些名字,效果比多数人以为的小得多。内容进入模型的路径不止抓取这一条,还有一整类由用户触发的抓取器天然不受这份文件约束。真要拦,得往边缘层走,Cloudflare这类服务商已经把托管robots.txt和AI爬虫拦截做成了开关。
而且照抄清单是有代价的。爬虫名单实测那次算过一笔账:网上流传的令牌里只有很小一部分真的来访过,剩下的写进去纯属给文件增肥,还容易连正经流量一起误伤。brooklynbedding那份12行的清单里就有一个我完全查不到来路的Magus Bot 1.0,它大概率是从某个模板里抄来的。
Sitemap那一行,14个站压根没写
118个站里,14个的robots.txt里一条Sitemap都没写。61个写了1条,47个写了2条以上,uniqlo一口气写了172条。
这一行是可选的,不写不算错,但它是搜索引擎发现站点地图最省事的入口之一。站点地图里那些地址跟页面自己的身份声明对不对得上是另一件事,这里只说:文件都建了,顺手加一行的事。
我的尺子错在哪?
这次有四处尺子问题,三处会直接改变结论。
第一处:页面类型判错了44个
采集脚本用/cart这样的裸字符串判断页面类型,结果把casetify的/print-style/cartoon判成了购物车页,把charleskeith的/customer-care/faq判成账户页,把arcteryx的/find-a-store判成站内搜索页。
这个错偏的方向最要命:它会把“购物车裸奔率”抬高,因为一个卡通图案类目页当然不会写noindex。改成按路径分段匹配、并把FAQ、隐私政策、门店查询这类显式排除之后,450个页面里有44个的类型被改判,购物车样本从27个变成26个,账户页从42个变成32个。
说起来有点难堪:前面那条Disallow: /cart会误伤/cartoon的规范行为,跟我自己写错的这个bug,是同一个形状的错误。区别只在于,规范那个是故意的,我这个是疏忽。
第二处:HTTP 200不等于拿到了robots.txt
philips的/robots.txt返回200,638KB。zalando返回200,48KB。narwal和temu也是200。
四份全是HTML。philips那份直接跳到了首页,temu那份是一段混淆过的反爬脚本,另外两个是单页应用的空壳。
如果只看状态码,这四个站会被算成“有robots.txt且规则为空”,进而被当成“主动放行全站”。实际情况是它们根本没有一份能用的robots.txt——而按协议,解析不出任何规则的响应等同于允许抓取一切,所以最终结论的方向没错,理由却完全不同。加上内容特征判断之后,可用样本从122份收敛到118份。
这一条值得记成通则:拿状态码当成功标志,是采集脚本最常见的一种自欺。之前吃过一次亏——人机验证屏也是返回200的,还被搜索引擎当正文收了进去。
第三处:排版精致,不代表是人写的
framebridge和stanley1913的robots.txt顶上,那段条款是用制表符画了个框的,标题居中,条目对齐,看着就是有人认真排过版。我最初把它们记成了“自己写了代理条款的两个站”。
然后我看了框里的联系邮箱:bots@shopify.com。条款链接指向平台的服务条款,推荐的结账套件也是平台的。这是同一份出厂条款的另一个版本,模板不同而已,跟手写没有关系。
这个错误如果留着,全篇最重要的那个结论就会从“36个站,没有一个是自己写的”变成“36个站里有2个自己写了”——方向完全反了。看起来花过心思的东西,往往只是另一套默认值。
第四处:匹配器本身有没有资格下结论
这不算错误,是主动做的一次自检。前面提过的18道题,覆盖了最长匹配、同长度时Allow优先、$锚点、通配符、专组屏蔽通配组这几处最容易写错的地方,还特意放了两道反例——空文件和HTML内容都必须判成“全部允许”。
18道全过之后,那些百分比才被我写进正文。任何一个“全部”或者“一个都没有”的结论,发表前都该先证明尺子能测出反例。
自己站上怎么查,按什么顺序?
这套对账不需要什么工具,顺序对了就行。
第一步:列出本来就不该进搜索结果的页面
购物车、结账流程、账户与登录、订单查询、站内搜索结果、优惠券领取页、只给邮件订阅者看的落地页。每类挑一个真实地址,别用首页代替。
第二步:对每个地址,先问能不能抓
动手之前先花一分钟认一下自己那份是不是出厂原样:把文件里的注释和Sitemap行去掉,剩下的行数如果正好落在80到90之间,规则从Disallow: /admin开头、中间大段是/*/products/*这种带地区前缀的重复写法,那基本就是平台生成的,你只是继承了它。继承不是错,把继承当成决定才是。
然后拿自己的robots.txt跑一遍匹配,注意是按最长匹配裁决,不是按行号。用生成器或校验器的时候尤其要留神,不少工具的通配符判定和规范并不一致。
第三步:再问准不准收
把页面抓下来看HTML里的meta robots和响应头里的X-Robots-Tag。注意两件事:登录页很可能跳到了平台域名上,你看到的声明未必是自己写的;用无头浏览器渲染后再看会引入额外变量,先用原始HTML对一遍。
第四步:落进四个格子,只处理两类
- 落进C格(禁止抓却写了noindex)的:把robots.txt里那条Disallow删掉,让爬虫进来读那句noindex。反直觉,但这是唯一有效的顺序。
- 落进B格且属于第一步清单的:补上
noindex。只补meta就够,除非是PDF、图片这类没有HTML的资源,那才需要用响应头。
A格和D格暂时不用动。D格(只靠robots.txt挡)不是最优解,但也不算事故,可以排在后面处理。
补一句常被问到的:给这些页面加了noindex之后,还要不要再配一个指向别处的canonical?不要。canonical是提示不是命令,两个方向不同的信号放在一起,只会让搜索引擎自己挑一个,而它挑的常常不是你写的那个。
第五步:过一遍那三个数值配额
max-snippet、max-image-preview、max-video-preview这三个,现在就该有一次明确的决定,而不是继续默认。判断标准很简单:你的内容被大段引用之后,用户还有没有理由点进来。做工具类、报价类、清单类内容的,值得认真想想收紧摘要长度;做品牌故事和视觉内容的,图片预览放大反而是好事。
保哥手上一个做户外装备的站去年做过一轮:产品页放开图片预览,把几篇纯参数对照的长文摘要收到180字符,三个月后那几篇的展示次数掉了一些,点击率反而上来了。样本太小,只能算一个方向,不能当结论。
第六步:把这件事变成定期动作
这次实测里最扎眼的不是哪个具体错误,而是那33个一字未改的文件。默认值不会自己出错,但它是别人在别的语境下替你做的决定。日志里能看到哪些爬虫真的来过,拿真实来访名单去核对声明,比照抄一份清单有用得多。
常见问题解答
购物车页面被搜索引擎收录了,会影响排名吗?
不会有直接的排名惩罚。真正的代价有三处:一是占用抓取额度,站点越大越明显;二是这类页面内容高度雷同,会稀释站内的主题信号;三是它偶尔会在品牌词搜索下面冒出来,用户点进去看到一个空购物车。这三件事都不致命,但都属于本可以避免的损耗。真发现收进去了也别急着去后台提交移除,手动提交这件事的实际作用比传说中小,改完声明等它自己重抓更省事。
robots.txt的Disallow和页面的noindex,到底该用哪个?
看目的。不想让页面出现在搜索结果里,用noindex,并且必须允许抓取,否则爬虫读不到这句话。不想让爬虫浪费额度去抓某一大片地址(比如带无数筛选参数的地址),用Disallow。两个一起用只有在极少数情况下才对,多数时候是自相矛盾,这次实测的442个页面里有11个踩在这上面。
我用的是SaaS建站平台,robots.txt改不了怎么办?
大部分平台现在都开放了定制入口,只是藏得比较深。以Shopify为例,主题里可以加一个robots.txt.liquid模板,在出厂规则的基础上增删。真的改不了的平台,退一步用页面级的meta robots也能解决大部分问题——毕竟第二道闸门才是决定收不收录的那道。
在robots.txt里屏蔽GPTBot、ClaudeBot这些,有用吗?
对遵守协议的抓取器有用,但覆盖面比想象中小。内容进入模型有好几条路径,抓取只是其中一条;另外还有一整类由用户主动触发的抓取器,按设计就不读这份文件。如果诉求是真的拦住,得在边缘层或WAF上做。如果诉求是表明立场、留下可追溯的书面记录,那么写进robots.txt是有意义的。
为什么131个站只有98个进了页面统计?
33个站的首页在采集时被防护层挡住了,拿不到HTML。它们不进任何分母,所有百分比都是基于实际拿到的样本算的。这也意味着结论里存在一层筛选偏差:防护做得严的站往往技术投入也更多,它们缺席可能让整体表现看起来比真实情况差一点。
meta robots写成index,follow有没有必要?
没有必要,但也无害。它和不写完全等价。这次98个首页里有25个这么写,占了写了声明的站的三分之二。唯一的实际价值是让接手的人知道“这里有人想过”,代价是它会让人误以为这一页的收录策略已经被处理过了。
权威参考资料
本文标题:《robots.txt那87行,33个站一个字都没改过》
本文链接:https://zhangwenbao.com/robots-declaration-ownership-audit.html
版权声明:本文原创,转载与引用请注明作者与原文链接。许可协议: CC BY 4.0