1

几乎我们所有人都听说过像spypig这样的服务。我想知道当加载来自服务器的图像时,他们如何跟踪客户端的 IP。为此,我制作了一个 aspx 页面,Response.ContentType = "image/png"但为此我的链接为

www.something.com/imagePage.aspx?id=rndmval

有没有什么方法可以让我的服务器上的图像说“mysite.com/images/me.gif”被加载到系统上,我会收到该系统的IP通知?它类似于监控图像。我喜欢 spypig 的工作方式,它可以在任何浏览器上加载图像时监控图像。有人知道他们是怎么做到的吗???

4

2 回答 2

4

您收到请求,从请求中提取客户端的 IP 地址(不知道如何在 ASP 中做到这一点,但肯定有办法做到这一点)并将其存储在数据库中 / 发送电子邮件 / 其他任何东西。 .

无需设置Content-typeimage/png,这只是告诉浏览器(谁在期待图像)“这是您的图像”的一种更好的方式,但除非您返回实际的 1x1 PNG 图像,否则它没有多大意义。

更新

IP 地址应包含在:

Request.ServerVariables("remote_addr")

如果你想要一个“干净”的 url,比如http://example.com/path/to/image.gif,你必须在 webserver-side 做一些事情;PHP中使用的一种常见技巧是使Web服务器“重写”/path/to/non-existent/file对类似的请求/path/to/my/script.php?path=/path/to/non-existent/file,但不确定如何使用ASP / IIS做到这一点......

更新:spypig 是如何工作的

他们给你一个“要放入电子邮件的图像”,即<img>一个指向他们服务器上某个页面的标签,src=""在其名称中包含一个唯一标识符,例如:

http://example.com/track-user.asp?id=ABCD12345678

一旦用户打开包含图像的电子邮件(请注意,大多数电子邮件程序要求用户在实际加载图像之前单击“加载外部内容” - 即一种反跟踪措施),一个请求被发送到服务器,该服务器在某处存储包含 id、日期、IP 地址和任何其他有趣信息的记录。

知道您将某个 ID 发送给了谁,您就可以跟踪打开的电子邮件。

(让用户点击“加载外部图像”的一个常见技巧是发送一封非常需要图像才能正确显示的电子邮件,因此鼓励用户加载它们 - 并被跟踪)。

于 2012-10-28T11:43:18.220 回答
0

快速查看这个 spypig.com,似乎当你创建一个图像时,它被赋予了一个唯一的 ID。此 ID 然后存储在数据库中,当有人稍后输入此图像时,系统可以将此唯一 ID 与必须通知的电子邮件地址相匹配。

跟踪 IP 实际上要简单得多。HTTP 在 TCP/IP 之上工作,因此您始终知道客户端的地址是什么(尽管它可能是防火墙/NAT/欺骗地址)。

在 ASP 中这可能很有用:How to get a user's client IP address in ASP.NET? 但几乎任何 HTTP 服务器端技术都可以让您访问这些信息。看看我的网络浏览器在加载图像时发送了多少(任何电子邮件客户端都会提供类似的信息):

GET /rndmVal/img.gif HTTP/1.1
User-Agent: Opera/9.80 (X11; Linux i686; U; pl) Presto/2.10.229 Version/11.64
Host: localhost:8080
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: pl-PL,pl;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Cache-Control: no-cache
Connection: Keep-Alive

客户端计算机的 IP 地址可以通过 TCP/IP 连接获得。

于 2012-10-28T11:48:45.303 回答