[{"data":1,"prerenderedAt":339},["ShallowReactive",2],{"blog-js-rendered-site-crawl-check":3,"blog-prev-js-rendered-site-crawl-check":105,"blog-next-js-rendered-site-crawl-check":189},{"id":4,"title":5,"author":6,"body":7,"canonical":89,"category":90,"cover":89,"date":91,"description":92,"draft":93,"extension":94,"keywords":89,"meta":95,"navigation":96,"noindex":93,"ogImage":89,"path":97,"seo":98,"seoDescription":89,"seoTitle":89,"stem":99,"tags":100,"updated":89,"__hash__":104},"blog\u002Fblog\u002Fjs-rendered-site-crawl-check.md","前端渲染的站，工具爬不到的内容怎么查","元析智能",{"type":8,"value":9,"toc":79},"minimark",[10,14,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76],[11,12,13],"p",{},"2026 年 1 月我们看一个 React 写的文档站，用 curl 抓首页 HTML，正文里一个标题都找不到，浏览器渲染完却有 42 个标题。这类站不是不能做 SEO，但前提是先搞清楚搜索引擎到底能看到什么。",[15,16,18],"h2",{"id":17},"两个视角先分清","两个视角，先分清",[11,20,21],{},"源码视角：curl 或者查看页面源代码，看到的是服务器返回的原始 HTML。渲染视角：浏览器执行 JS 之后的 DOM。",[11,23,24],{},"搜索引擎两个都看，先看源码，再排队渲染。渲染要花资源，所以有预算限制，页面越多、越深，越容易被漏掉。",[11,26,27],{},"我的做法是两个都抓一遍。curl 下来的 HTML 里搜 h1、正文关键词、内链，渲染后的 DOM 里再搜一遍，缺什么一目了然。",[15,29,30],{"id":30},"三种常见缺失",[11,32,33],{},"第一种，整站客户端渲染。源码里只有一个空的 div 加一段脚本，所有内容都靠 JS 生成。这类站被抓到的概率取决于渲染预算，首页和热门页问题不大，长尾页经常抓不到。",[11,35,36],{},"第二种，懒加载。图片和正文要滚动才加载，蜘蛛不滚动。首屏以下的内容经常抓不到，或者抓到的是占位符。",[11,38,39],{},"第三种，折叠内容。tab 切换、展开更多里的文字，源码里没有，渲染后要点击才出现。蜘蛛不会点。",[15,41,42],{"id":42},"怎么查",[11,44,45],{},"先 curl 抓 5 个不同类型的页面：首页、产品页、文档页、博客文章、列表页。统计每个页面的标题数、正文字数、内链数，再和浏览器渲染后的数字对比。",[11,47,48],{},"GSC 的 URL 检查里有一个已渲染 HTML 的查看入口，能直接看到 Google 拿到的版本。这个比任何第三方工具都准。",[11,50,51],{},"最后看日志。如果 Googlebot 抓了 URL 但不抓 JS 和 CSS 资源，渲染一定不完整。日志里按资源类型统计一下就能看出来。",[15,53,54],{"id":54},"怎么改",[11,56,57],{},"能上服务端渲染就上，改造成本一次性，收益长期。改不动的话，至少把首屏关键内容和内链放进原始 HTML。",[11,59,60],{},"还有个便宜办法，用预渲染服务给蜘蛛返回渲染好的 HTML，用户仍然走 JS。这个方案适合内容为主的站，不适合交互复杂的应用。",[15,62,63],{"id":63},"预渲染的代价",[11,65,66],{},"预渲染服务按页面数收费，几千页的站一个月几十美元，页面多的要上百。它能解决被抓到的问题，解决不了体验问题。",[11,68,69],{},"我们用它做过两个内容型站点，效果还行。交互重的应用不建议用，预渲染出来的页面和真实应用差太多，用户点进去会觉得是另一个页面。",[11,71,72],{},"还有一点，预渲染要按 UA 判断，别把真实用户也导到预渲染版本上。配错了会出现用户看到旧内容的事故。",[15,74,75],{"id":75},"我们的判断",[11,77,78],{},"完全依赖客户端渲染、又不肯改架构的 B2B 站，我们不接 SEO 项目。内容做得再好，蜘蛛看不到就是零。先花两个月改架构，比后面两年补内容便宜。",{"title":80,"searchDepth":81,"depth":81,"links":82},"",2,[83,84,85,86,87,88],{"id":17,"depth":81,"text":18},{"id":30,"depth":81,"text":30},{"id":42,"depth":81,"text":42},{"id":54,"depth":81,"text":54},{"id":63,"depth":81,"text":63},{"id":75,"depth":81,"text":75},null,"技术SEO","2026-01-17","一个 React 文档站首屏 HTML 里一个标题都没有，渲染后有 42 个。这篇写源码和渲染后 DOM 怎么对比、三种常见缺失，以及改架构还是改内容。",false,"md",{},true,"\u002Fblog\u002Fjs-rendered-site-crawl-check",{"title":5,"description":92},"blog\u002Fjs-rendered-site-crawl-check",[101,102,103],"JavaScript渲染","抓取","技术检测","lUfzeCkh4UTT-pF0e5AfL3OzlpnNOjAsPSjIxGtREyI",{"id":106,"title":107,"author":6,"body":108,"canonical":89,"category":90,"cover":89,"date":178,"description":179,"draft":93,"extension":94,"keywords":89,"meta":180,"navigation":96,"noindex":93,"ogImage":89,"path":181,"seo":182,"seoDescription":89,"seoTitle":89,"stem":183,"tags":184,"updated":89,"__hash__":188},"blog\u002Fblog\u002Fgoogle-baidu-crawl-budget.md","Google 和百度的抓取预算，逻辑完全不同",{"type":8,"value":109,"toc":171},[110,113,117,120,123,126,129,132,135,138,141,144,147,150,153,156,159,162,165,168],[11,111,112],{},"Google 的抓取预算按站点健康度和页面价值分配，百度按站点评价和更新频率分配。两边对低价值页面的处理方式几乎相反，同一套优化动作在两边可能得到相反结果。",[15,114,116],{"id":115},"google-的抓取预算怎么算","Google 的抓取预算怎么算",[11,118,119],{},"Google 公开的说法是抓取预算等于抓取容量和抓取需求，实际影响最大的是站点健康度：服务器响应速度、5xx 错误率、重复内容、软 404。",[11,121,122],{},"我们测过一个 8 万页的电商站，抓取预算被大量参数页吃掉，核心产品页平均 11 天才被抓一次。后来用 robots 屏蔽参数页，核心页抓取频率提到 2 天一次。",[11,124,125],{},"Google 的逻辑是\"你值得抓多少，取决于你有多健康、页面有多重要\"。低价值页面不会直接拖累别的页面，但会占预算。去年 10 月我们给一个客户做完参数页屏蔽，Googlebot 对核心页的抓取量两周涨了 60%。",[15,127,128],{"id":128},"百度的逻辑",[11,130,131],{},"百度的抓取频次更看站点整体评价和更新频率。它喜欢\"稳定更新、结构清楚、有备案\"的站。",[11,133,134],{},"我们观察到：同样规模的两个站，一个每天更新 3 篇、一个每周更新 1 篇，前者抓取频次是后者的 4 倍。百度对\"活跃度\"的敏感度比 Google 高，这条在 2025 年下半年几次波动里都能验证。",[11,136,137],{},"另一个差别：百度对低质页面的容忍度更低。站内堆大量采集页，百度可能直接压整站抓取频次；Google 更多是忽略那些页面，不牵连整站。",[15,139,140],{"id":140},"一个对照观察",[11,142,143],{},"去年我们同时接了 2 个内容结构几乎一样的站，A 站 2 千页、B 站 8 万页。",[11,145,146],{},"A 站：Google 抓取频次每天 400 多次，收录率 92%。B 站：Google 每天抓 2000 多次，收录率只有 31%，大量页面收了不排。百度那边，A 站抓取频次反而比 B 站高。",[11,148,149],{},"结论很清楚：页面多不等于抓得多、收得好。B 站后来砍到 1.2 万页，收录率提到 67%。",[15,151,152],{"id":152},"两边都能用的三件事",[11,154,155],{},"一，砍掉没价值的页面。两边都受益，Google 省预算，百度提评价。",[11,157,158],{},"二，修 5xx 和 404。Google 看重健康度，百度看重抓取体验，两边都在意。",[11,160,161],{},"三，给重要页面更多内链。这是唯一能明确\"告诉\"两边爬虫哪个页面重要的手段。",[15,163,164],{"id":164},"一个判断",[11,166,167],{},"补充一句：抓取预算别只看总量。我们每周看的是“核心页面被抓频次”和“被抓后收录率”，这两个数比日志里的总抓取量有用得多。总量涨了但核心页没动，说明涨的都是低质页，没意义。",[11,169,170],{},"别用同一套\"收录量\"指标衡量两边。Google 看有效收录，百度看抓取频次和索引量趋势，指标混着看，会得出错误的结论。",{"title":80,"searchDepth":81,"depth":81,"links":172},[173,174,175,176,177],{"id":115,"depth":81,"text":116},{"id":128,"depth":81,"text":128},{"id":140,"depth":81,"text":140},{"id":152,"depth":81,"text":152},{"id":164,"depth":81,"text":164},"2026-01-16","Google 的抓取预算按站点健康度和页面价值分配，百度按站点评价和更新频率分配。两边对低价值页面的处理方式几乎相反，同一套优化动作在两边效果可能相反。我们做了个对照观察，结果和很多教程说的不一样。",{},"\u002Fblog\u002Fgoogle-baidu-crawl-budget",{"title":107,"description":179},"blog\u002Fgoogle-baidu-crawl-budget",[185,186,187],"抓取预算","爬虫","百度与Google","EnSOLTN57ZcNZI9A3DhIn3Qm-1p6PikhdEuoppXs1pg",{"id":190,"title":191,"author":6,"body":192,"canonical":89,"category":90,"cover":89,"date":329,"description":330,"draft":93,"extension":94,"keywords":89,"meta":331,"navigation":96,"noindex":93,"ogImage":89,"path":332,"seo":333,"seoDescription":89,"seoTitle":89,"stem":334,"tags":335,"updated":89,"__hash__":338},"blog\u002Fblog\u002Frobots-block-vs-noindex.md","robots 屏蔽和 noindex，选错会让页面彻底消失",{"type":8,"value":193,"toc":321},[194,197,200,203,206,209,286,289,292,295,298,301,309,312,315,318],[11,195,196],{},"robots 拦的是\"来不来抓\"，noindex 拦的是\"进不进库\"。想让页面从搜索结果里消失，用 noindex；想省抓取预算、不想让蜘蛛为它浪费请求，用 robots。最危险的做法是两个一起上。",[15,198,199],{"id":199},"为什么叠在一起会出事",[11,201,202],{},"被 robots 屏蔽的 URL，蜘蛛不会去读页面上的 noindex。如果站内或外站有链接指向它，它仍然可能被收录，只是收录成一个没有摘要、标题是 URL 本身的条目。用户搜到它，看不到内容，也不知道它是什么。2025 年 11 月一个开发者工具站就踩了这个坑：老版本文档页同时写了 robots 和 noindex，侧边栏链接还删了，半年后这批页面仍挂在搜索结果里，点击率 0.4%。",[11,204,205],{},"清理的时候我们花了两步：先把侧边栏链接加回去，删掉 robots 里的那行规则，保留 noindex。六周后这批页面才从搜索结果里消失。",[15,207,208],{"id":208},"选择标准",[210,211,212,228],"table",{},[213,214,215],"thead",{},[216,217,218,222,225],"tr",{},[219,220,221],"th",{},"场景",[219,223,224],{},"用什么",[219,226,227],{},"原因",[229,230,231,243,254,265,276],"tbody",{},[216,232,233,237,240],{},[234,235,236],"td",{},"后台、API、测试环境",[234,238,239],{},"robots",[234,241,242],{},"没有内容价值，也不该被访问",[216,244,245,248,251],{},[234,246,247],{},"已下线但保留给用户看的老页面",[234,249,250],{},"noindex",[234,252,253],{},"保留内链，权重还能流动",[216,255,256,259,262],{},[234,257,258],{},"分页的深层页",[234,260,261],{},"canonical 或 noindex",[234,263,264],{},"用 robots 会切断内链发现",[216,266,267,270,273],{},[234,268,269],{},"参数筛选页",[234,271,272],{},"canonical 优先",[234,274,275],{},"必要时 robots 拦组合参数",[216,277,278,281,283],{},[234,279,280],{},"站内搜索结果页",[234,282,250],{},[234,284,285],{},"大量低质重复页",[15,287,288],{"id":288},"验证方法",[11,290,291],{},"GSC 的网址检查会明确告诉你页面处于哪种状态：\"已被 robots.txt 屏蔽\"和\"已排除，被 noindex 标记\"是两个不同的结论，别混。curl 一下页面看 meta 里到底写了什么，再看 robots.txt 里有没有匹配规则。",[11,293,294],{},"还有一个容易忽略的点：noindex 要保留至少几周再撤内链。搜索引擎需要重新抓一次才能读到标记，撤太快等于什么都没做。",[15,296,297],{"id":297},"两个常见误解",[11,299,300],{},"第一个误解：以为 robots 屏蔽后页面就不占索引位置了。实际上它可能还在索引里，只是没有摘要，这种条目对品牌形象是负分。第二个误解：以为 noindex 页面会被立刻删除。搜索引擎要重新抓取才会读到标记，页面多的时候排期很长，所以别在上线第二天就催结果。",[11,302,303,304,308],{},"还有个反直觉的点：对分页的深层页用 robots 屏蔽，会让蜘蛛找不到更早的列表内容，反而伤害收录。这类页面交给 canonical 更合适，实在要挡，只挡 ",[305,306,307],"code",{},"?page="," 超过某一页的参数。",[15,310,311],{"id":311},"我们给客户的默认配置",[11,313,314],{},"后台和 API 路径进 robots；测试环境整站加 Basic Auth，不用 robots；老页面保留 noindex 并留在导航的归档区；站内搜索结果页 noindex；参数页先配 canonical，再按抓取量决定是否屏蔽。这套配置几年不用改。",[15,316,317],{"id":317},"立场",[11,319,320],{},"一个页面只用一种控制指令。要它消失，用 noindex，别加 robots；要蜘蛛别来，用 robots，但它不会从索引里消失。想让两者同时成立，那你其实想要的是 404 或 410——直接删除，比掖着藏着干净。",{"title":80,"searchDepth":81,"depth":81,"links":322},[323,324,325,326,327,328],{"id":199,"depth":81,"text":199},{"id":208,"depth":81,"text":208},{"id":288,"depth":81,"text":288},{"id":297,"depth":81,"text":297},{"id":311,"depth":81,"text":311},{"id":317,"depth":81,"text":317},"2026-01-18","两个指令管的事不一样：robots 拦抓取，noindex 拦索引。我们用 2025 年 11 月一个文档页同时加上两者的案例，讲清选择标准、叠加的风险，以及替代方案。",{},"\u002Fblog\u002Frobots-block-vs-noindex",{"title":191,"description":330},"blog\u002Frobots-block-vs-noindex",[336,250,337],"robots.txt","收录","EUaWViqpniycoAnj_FAX3ukYru8ioOlzUyfs1aHj3WE",1794088109146]