【发布时间】:2018-05-09 06:00:24
【问题描述】:
我在通过 Gmail 发送的电子邮件的末尾添加了一个跟踪像素:
<img src="http://myserver.com/test/1pixelimage.png?id=track_emailSentToBob" />
然后我的服务器上有一个脚本,当 Apache 在日志中看到 1pixelimage.png?id=track_* 时,它通过电子邮件向我发送通知。效果很好。
问题:每次我在 Gmail 的 Sent 文件夹中打开自己的电子邮件时都会收到通知。
我想过:
按 IP 过滤:不起作用,因为我经常在手机上使用 Gmail,它具有动态 IP,经常更改。
按 UserAgent 过滤(我可以自定义,例如我可以设置用户代理 = blabla,并且仅当用户代理不是 blabla 时才向我发送通知):这需要我在所有我的浏览器(手机上不可能),所以这不是解决方案。
无论如何,当在 Gmail 中打开电子邮件时,Gmail 会缓存图像,因此请求不会由我自己的浏览器完成,而是由 Gmail 的图像缓存服务器完成
您将如何过滤掉您自己对跟踪像素图像的访问?
注意:我不想在 Gmail 上使用需要“发送、编写、管理您的电子邮件”权限的第三方应用。
【问题讨论】:
-
HTTP
referer[原文如此] 在您的 apache httpd 日志中是什么样的?也许你可以使用它? -
我不了解 Gmail,因为我不使用它,但任何类型的优秀网络邮件(我的)都应该能够为您提供有选择地加载(或不加载)在电子邮件。如果在 GMail 中可用,请将其配置为不加载从您的特定电子邮件地址发送给您的电子邮件的图像,然后根本不应该点击信标。或者更加低技术:将邮件移动到一个文件夹中,您确定不会再次打开它。
-
对于移动设备可能有一个只有您可以加载的“触发器”资源,脚本检测到然后在触发器后的一段时间内忽略来自同一用户代理和/或 IP 的日志行(或有一个“未触发”资源)。只要您的 IP 保持不变,它就可以正常工作,如果 IP 发生变化,回退到用户代理将停止记录您的 IP,但可能会导致一些真正的打开被忽略。这取决于哪个更重要以及您需要设定的时间段。不知道谷歌缓存,你的触发器可能是一封特殊的电子邮件,试图捕获 那个 IP。
-
@PatrickMevzek 很遗憾,您无法在 Gmail 网络客户端中执行此操作。关于低技术解决方案:我希望能够经常重新打开自己的电子邮件(供参考),而不会触发要发送的新通知。
标签: apache email logging user-agent