Facebook聊天机器人轮播图加载失败,已加白名单仍报Attachment Unavailable错
这种突然掉链子的故障确实挺闹心的,结合你说的「之前正常、已加白名单但仍报错」的情况,我整理了几个实际排查过的有效方向:
核对域名白名单的精准性
Facebook的域名白名单对格式要求非常严格,必须和图片URL的前缀完全匹配:- 确认有没有漏写协议(
http/https),比如你图片用的是https://your-site.com,但白名单只加了your-site.com,这会直接导致匹配失败; - 如果图片存在子域名(比如
cdn.your-site.com),一定要把这个子域名单独加入白名单,或者用通配符*.your-site.com(注意通配符仅适用于子域名,主域名本身还是要单独添加); - 检查白名单里有没有多余的斜杠或者空格,这些细节很容易被忽略却会直接影响匹配。
- 确认有没有漏写协议(
验证图片URL的匿名可访问性
Facebook的内容爬虫是匿名访问的,如果你网站的图片有访问限制,爬虫根本拿不到资源:- 打开浏览器的隐身模式,直接输入图片的完整URL,看能不能正常加载。如果需要登录或者跳转到验证页面,那就是网站的权限设置挡住了爬虫;
- 用命令行工具测试响应:
curl -I https://your-image-url.com/path/to/image.jpg,确保返回的是200 OK。如果是403(禁止访问)、404(不存在)或者5xx服务器错误,得先解决网站端的访问问题。
检查网站对Facebook爬虫的限制
- 查看网站根目录下的
robots.txt文件,确认没有禁止facebookexternalhit/*这个用户代理。如果有类似Disallow: /或者针对该UA的拦截规则,爬虫会直接被拒绝; - 检查服务器的防火墙、CDN的安全规则,看看有没有把Facebook爬虫的IP当成恶意流量拦截。你可以在Facebook开发者平台找到官方公布的爬虫IP范围,把这些IP加入服务器的允许列表。
- 查看网站根目录下的
确认轮播Payload的格式合规性
有时候API的隐性更新会导致之前正常的结构出现问题:- 检查carousel里的图片
url字段是不是绝对路径(必须包含完整的http/https前缀); - 确认图片的
width和height字段有没有设置,且数值符合Facebook的要求(一般建议至少800x800像素); - 把生成的payload放到Facebook的API测试工具里验证,看看有没有格式错误或者字段缺失。
- 检查carousel里的图片
刷新缓存解决遗留问题
- 如果你的网站用了CDN,尝试清空CDN的缓存,避免旧的错误响应被爬虫抓取;
- Facebook会缓存图片链接的内容,你可以用他们的链接调试工具强制重新抓取一次图片URL,刷新它的缓存。
内容的提问来源于stack exchange,提问作者User54211
相关产品推荐
相关产品推荐

