You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS SES发送HTML邮件时,如何防止链接被自动触发仅手动激活?

解决AWS SES邮件链接被自动触发的方案

一、服务端验证(最可靠的核心方案)

不管客户端怎么预抓取,从服务端层面做验证是最根本的:

  • 使用带签名/一次性令牌的链接:给每个链接生成唯一的签名(比如基于收件人邮箱、时间戳、随机盐的HMAC签名),只有当签名验证通过且令牌未被使用过,才执行后续操作。示例逻辑(Python):
    import hmac
    import hashlib
    import time
    
    def generate_signed_link(user_email, action):
        timestamp = str(int(time.time()))
        salt = "random_salt_here"
        signature = hmac.new(
            key=b"your_secret_key",
            msg=f"{user_email}{timestamp}{action}{salt}".encode(),
            digestmod=hashlib.sha256
        ).hexdigest()
        return f"https://your-domain.com/{action}?email={user_email}&ts={timestamp}&sig={signature}"
    
    服务端接收请求时,先验证签名是否匹配,再检查时间戳是否在有效期内(比如1小时),同时标记已使用的令牌防止重复触发。
  • 检查请求的User-Agent和请求头:预抓取的请求通常带有特定的UA(比如"MailScanner"、"Googlebot"、"ApplePreview"),或者缺少浏览器特有的头(比如Referer、Sec-Fetch-Dest: document)。可以在服务端过滤这些非人工的请求,但注意UA可能被伪造,只能作为辅助手段。
  • 延迟激活机制:链接生成后,先标记为"未激活",只有当用户打开邮件后(可通过邮件像素跟踪辅助判断,注意像素也可能被预抓取),或等待一段时间(比如5分钟)后才激活链接。不过这个体验略差,适合对安全性要求极高的场景。

二、邮件内容层面优化

通过修改邮件HTML内容,减少被预抓取的概率:

  • 用JavaScript动态生成链接:不要直接写死<a>标签,而是在用户点击按钮时才生成并跳转。示例:
    <button onclick="window.location.href='https://your-domain.com/action?param=xxx'">点击执行操作</button>
    
    大部分邮件客户端支持基础JS,但部分严格的客户端会禁用JS,所以可以同时提供备用文本提示,让用户复制链接。
  • 将链接转为可点击的按钮而非纯文本链接:有些预抓取工具只会扫描纯文本中的URL,把链接放在按钮或需要交互的元素里,能降低被自动抓取的概率。
  • 隐藏链接,让用户手动复制粘贴:把链接作为纯文本放在代码块里,提示用户复制到浏览器打开,比如:
    请复制以下链接到浏览器打开:
    https://your-domain.com/action?param=xxx
    
    这个方法体验最差,但能100%避免预抓取。

三、AWS SES配置与邮件头设置

通过SES添加特定邮件头,提示客户端不要预抓取:

  • 添加X-Robots-Tag: noindex, nofollow邮件头:在调用boto3的send_email或send_raw_email时,添加这个头,告诉搜索引擎和邮件客户端的爬虫不要抓取链接。示例boto3代码:
    import boto3
    
    ses = boto3.client('ses', region_name='us-east-1')
    response = ses.send_email(
        Source='sender@example.com',
        Destination={'ToAddresses': ['recipient@example.com']},
        Message={
            'Subject': {'Data': '测试邮件'},
            'Body': {'Html': {'Data': '<html><body><a href="https://your-domain.com">点击链接</a></body></html>'}}
        },
        Headers={
            'X-Robots-Tag': 'noindex, nofollow'
        }
    )
    
  • 启用SES的DKIM和SPF验证:完善邮件的身份验证,减少邮件被安全工具标记为可疑的概率,部分安全工具会对可疑邮件做更严格的预抓取验证,完善身份后可能降低自动触发的频率。

内容的提问来源于stack exchange,提问作者Chetan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 00:48:15