评论区头像是怎么跟着邮箱走的
Gravatar、WeAvatar、Cravatar、Libravatar 分属哪几个阵营,邮箱怎么变成头像 URL,以及国内该换哪个源。
在别人博客的评论区留言,有人顶着自己的头像,有人是一块默认头像。区别不在那个博客,它是你的邮箱解析的。
设置好之后,以后你在任何一个用了这套机制的站点留言,头像都会自己出现。这篇把原理、两个互不隶属的阵营、以及这么设置。
一、原理:邮箱 → 哈希 → 一个图片地址
评论系统拿到你填的邮箱后,做三件事:
1、去掉首尾空格
2、全部转成小写
3、算哈希,拼成一个图片地址
https://gravatar.com/avatar/<哈希>就这么简单。所以大小写、前后多敲的空格都不影响——Me@Example.com 和 me@example.com 归一化之后是同一个人。
哈希算法有个变化值得记一笔:Gravatar 官方文档现在写的是 SHA-256,而绝大多数评论系统里躺着的老代码用的是 MD5,两种都还认。
MD5 仍然工作。改用 SHA-256 的理由是隐私:MD5 短、算得快,拿常见邮箱撞库反推出原文比 SHA-256 容易得多。
还有一些参数配置,这几个最常用:
| 参数 | 作用 | 例子 |
|---|---|---|
s= | 尺寸,1~2048,不写默认 80 | ?s=160 |
d= | 没有头像时给什么 | ?d=identicon 几何图案、?d=mp 剪影、?d=404 干脆不给图 |
r= | 内容分级,默认只放 g 级 | ?r=pg |
f=y | 强制走默认图,用来调试 | ?f=y |
d= 还能填一个你自己的图片地址(要 URL 编码)。
二、三个阵营,互不隶属
三拨人马各自成体系:
| Automattic(国外) | 耗子科技(国内) | 文派(国内) | |
|---|---|---|---|
| 头像服务 | gravatar.com | weavatar.com | cravatar.cn / cn.cravatar.com |
三边的联系点在于:两家国内服务都会回源去 Gravatar 和 QQ 拉头像。所以它们既是替代品,也是增强版。
三、国内这两家怎么选
WeAvatar 和 Cravatar 做的是同一件事,也都不需要读者知道它们的存在,但取向不太一样。
Cravatar 的全名是「初认头像」,出自文派(WenPai.org)——做 WordPress 中文发行版那家,所以它的气质是「把 Gravatar 原样搬进中国」:参数、默认头像 ID、URL 格式几乎照抄,官方文档里备好了 WordPress、Typecho、Drupal、Joomla、Emlog、Gogs 的接入方法,换过去基本零学习成本。
WeAvatar 出自天津耗子科技,走的是「超过 Gravatar」的路子:除了邮箱,还支持手机号头像和字母默认头像,并对回源来的内容做审核。
具体差别:
| WeAvatar | Cravatar | |
|---|---|---|
| 哈希 | MD5、SHA-256 都认 | 两种都认 |
| 回源顺序 | 自己上传的 → Gravatar → QQ | 自己上传的 → Gravatar → QQ → 默认图 |
| 图片格式 | 默认转 WebP | 浏览器声明支持 WebP 时强制转 WebP,否则可用后缀指定 jpg/png/gif |
r= 分级 | —— | 不支持,官方说明是为符合中国法律 |
| 额外能力 | 手机号头像、字母头像、AI 审核 | 各类 CMS 的现成接入文档 |
四、你要做的两件事
1、给自己注册一个头像
想让你的脸出现在别人的评论区,注册以下:
Gravatar:https://gravatar.com/
WeAvatar:https://weavatar.com/
Cravatar:https://cravatar.com/
注册哪一家取决于你想被谁看到:只在国外站点留言,Gravatar 一个就够;国内两家都会回源 Gravatar,所以先把 Gravatar 绑好,往往就已经在三家都有脸了。
2、给自己的站换源
各家评论系统都留了口子,URL 格式完全兼容,换域名即可,不用动数据库。
本站用的是 Waline,相关的两个环境变量是:
| 变量 | 作用 |
|---|---|
GRAVATAR_STR | 头像地址模板,nunjucks 语法 |
AVATAR_PROXY | 头像代理,默认 https://avatar.75cdn.workers.dev,设 false 关掉 |
GRAVATAR_STR 的默认值在文档里被简写成了一行,服务端源码(packages/server/src/service/avatar.js)里其实是段带分支的模板:昵称是纯数字、或邮箱是 QQ 邮箱时,直接去 q1.qlogo.cn 取 QQ 头像;其余情况才走
https://seccdn.libravatar.org/avatar/{{mail | trim | lower | md5}}也就是说,Waline 默认根本不走 gravatar.com,而是 Libravatar 的 seccdn。换成 WeAvatar 或 Cravatar 只要把这一行的域名改掉:
GRAVATAR_STR=https://weavatar.com/avatar/{{mail | trim | lower | md5}}
GRAVATAR_STR=https://cn.cravatar.com/avatar/{{mail | trim | lower | md5}}trim | lower 千万别省。 那是第一节说的归一化:读者把邮箱写成 Me@Example.com 时,少了这两步算出来的哈希和 Gravatar 那边对不上,头像直接取不到。自己写模板最容易漏掉的就是它。
五、Libravatar:还有第三条路
Libravatar 和上面两家都不是一回事,它开源的,任何人都能自建实例
它的 URL 格式和 Gravatar 兼容,邮箱同样支持 MD5 和 SHA-256(OpenID 只支持 SHA-256),没有你的图时回源 Gravatar。
评论
评论加载中……