评论区头像是怎么跟着邮箱走的

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.comweavatar.comcravatar.cn / cn.cravatar.com

三边的联系点在于:两家国内服务都会回源去 Gravatar 和 QQ 拉头像。所以它们既是替代品,也是增强版。

三、国内这两家怎么选

WeAvatar 和 Cravatar 做的是同一件事,也都不需要读者知道它们的存在,但取向不太一样。

Cravatar 的全名是「初认头像」,出自文派(WenPai.org)——做 WordPress 中文发行版那家,所以它的气质是「把 Gravatar 原样搬进中国」:参数、默认头像 ID、URL 格式几乎照抄,官方文档里备好了 WordPress、Typecho、Drupal、Joomla、Emlog、Gogs 的接入方法,换过去基本零学习成本。

WeAvatar 出自天津耗子科技,走的是「超过 Gravatar」的路子:除了邮箱,还支持手机号头像和字母默认头像,并对回源来的内容做审核。

具体差别:

WeAvatarCravatar
哈希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。

评论

评论加载中……

登录后再评论

注册要用邮箱收个验证码,只为确认邮箱能收信,不会拿去做别的。账号设置

先选一种读起来舒服的样子

随时可以改:右上角那个调色盘图标里还有天光、极简两档,也能调深浅色和主色。