真正影响第三方平台卡片生成效率的是页面<head>中的Open Graph和Twitter Card元数据,爬虫不执行JS只解析静态HTML;og:url必须与分享链接完全一致且为HTTPS绝对路径,og:image需含宽高并可被平台UA正常访问,CSR页面须服务端注入标签。

社交分享按钮本身不被爬虫抓取,真正影响第三方平台(微信、Facebook、Twitter 等)卡片生成效率的,是页面 <head> 中的 Open Graph 和 Twitter Card 元数据——爬虫根本不会执行你的按钮 JS,只解析静态 HTML。
og:url 必须和用户实际分享的链接完全一致
这是卡片静默失效最常见原因。平台会用你声明的 og:url 重新发起 HTTP 请求,哪怕只差一个尾部斜杠、大小写或 UTM 参数,就可能抓到首页、404 或缓存旧版本。
-
og:url必须是 HTTPS 绝对路径,不能是/article/123或//example.com/article/123 - 动态页(如带
?utm_source=weibo)需服务端过滤非语义参数,只保留 canonical 路径 - 测试时必须用真实分享链接跑 Facebook Sharing Debugger 或 LinkedIn Post Inspector,别只看本地源码
- Nginx/Apache 反向代理若启用了安全策略,要确认没 strip 掉
property="og:xxx"这类属性
og:image 不是贴个链接就行,关键在可访问性
90% 的“图片不显示”问题,不是链接打不开,而是平台在发起请求前就因格式校验失败跳过了——它根本不等加载完成。
-
og:image值必须是完整 HTTPS 开头的绝对 URL,/img/cover.jpg、//cdn.example.com/xxx.jpg、data:image/png;base64,...全部无效 - 必须显式声明
og:image:width和og:image:height(推荐1200×630),否则 Slack、LinkedIn 可能降级为占位图 - 图片服务器需允许
facebookexternalhit/1.1、Twitterbot等 UA 的 HEAD/GET 请求,禁用 Referer 白名单(微信 X5 内核不带 Referer) - 响应状态码必须是
200 OK,禁止302重定向、403防盗链、或Transfer-Encoding: chunked(Express 默认启用,需手动设res.setHeader('Transfer-Encoding', 'identity'))
Twitter 和微信不读 og:description,得单独配
Facebook 和 LinkedIn 读 og:description,但 Twitter 只认 twitter:description,微信则基本忽略所有 og: 描述字段,优先取页面第一个 <p> 或 <meta name="description">。
立即学习“前端免费学习笔记(深入)”;
- 必须同时写:
<meta name="twitter:description" content="...">和<meta name="description" content="..."> -
twitter:description建议 ≤200 字符;微信实际预览常只显示前 50–80 字,关键信息务必前置 - 中文内容必须用 UTF-8 编码硬写死,避免模板变量拼出空字符串或未转义 HTML(如
<script></script>),否则整个<head>解析失败 - CSR 页面(React/Vue)必须服务端注入这些标签,
document.head.appendChild()动态加的 meta 对爬虫完全无效
最容易被忽略的是:改完 HTML 后,平台缓存长达 24–72 小时,不强制刷新调试工具里的缓存,就永远看不到效果。



















