我们几乎所有人都听说过像spypig这样的服务。我想知道当他们的服务器中的图像被加载时他们如何跟踪客户端的IP。为了做同样的事情,我用Response.ContentType = "image/png"
创建了一个aspx页面,但为此我的链接为
www.something.com/imagePage.aspx?id=rndmval
当我的服务器中的图像说“mysite.com/images/me.gif”被加载到系统上时,是否有任何方法可以通知该系统的ip? 它类似于监控图像。我喜欢spypig的工作方式,它可以在任何浏览器上加载时监控图像。有谁知道他们怎么做?
答案 0 :(得分:4)
您收到请求,从请求中提取客户端的IP地址(不确定如何在ASP中执行此操作,但肯定有办法执行此操作)并将其存储在数据库中/发送电子邮件/无论如何..
无需将Content-type
设置为image/png
,这只是一种更好的方式来告诉浏览器,谁在期待图像,“这是您的图像”,但除非您返回实际的1x1 PNG图像,它没有多大意义。
IP地址应包含在:
中Request.ServerVariables("remote_addr")
如果你想要一个“干净”的网址,比如http://example.com/path/to/image.gif
,你必须做一些网络服务器端的事情; PHP中使用的一个常见黑客是让Web服务器“重写”/path/to/non-existent/file
到/path/to/my/script.php?path=/path/to/non-existent/file
之类的请求,不知道如何使用ASP / IIS执行此操作...
他们为您提供了“将图像放入电子邮件中”,即<img>
标记,其中src=""
指向其服务器上的某个页面,其名称中包含唯一标识符,例如:
http://example.com/track-user.asp?id=ABCD12345678
用户打开包含图像的电子邮件后(请注意,大多数电子邮件程序要求用户在实际加载图像之前单击“加载外部内容” - 即反跟踪措施),会向服务器,它存储包含id,日期,IP地址和任何其他有趣信息的记录。
知道您向某人发送了某个ID,您可以跟踪哪个是已打开的电子邮件。
(让用户点击“加载外部图像”的一个常见技巧是发送大量要求图像正确显示的电子邮件,因此鼓励用户加载它们并跟踪)。 / p>
答案 1 :(得分: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服务器端技术都可以让您访问这些信息。查看我的Web浏览器在加载图像时发送的数量(任何电子邮件客户端都会提供类似的信息):
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连接获得。