我正在开发类似banatag的服务。在新功能开发期间,我发现Gmail无法解释的行为(我认为)。
我试着用图片解释我的问题:
通过网址将其添加到电子邮件中。图片网址http://eggplant-tag.appspot.com/request?FT1R3WECWNTM2ZGUDXRMA8VOXJ4F6TI4
请求此图片(标签)是什么? 我看到两种可能性:
页面向我的服务发出AJAX请求,这就是我看到我的IP的原因。但在这种情况下,为什么我无法在开发者控制台的“网络”标签中看到此请求?
Google Image Proxy服务请求我的服务,但为什么在这种情况下请求我的IP?
我的IP:
[UPD] 添加处理图像(标记)请求的类的一部分:
...
request.remoteAddress = str(self.request.remote_addr)# save remote address
request.put()
...
self.response.write(simpleImageData) #write to body binary data of 1x1 transparent image
self.response.headers[ 'Content-Type' ] = 'image/png'
self.response.headers[ 'Cache-Control' ] = 'no-cache, no-store, must-revalidate'
self.response.headers[ 'Pragma' ] = 'no-cache'
self.response.headers[ 'Expires' ] = '0'
[UPD 2]
我使用wireshark向我的服务发现了请求,但没有。这就是为什么主要问题是Google用户内容如何模拟我的IP地址?
答案 0 :(得分:8)
Google图片代理的工作方式已在网络上进行了全面分析,例如https://litmus.com/blog/gmail-adds-image-caching-what-you-need-to-know和https://blog.filippo.io/how-the-new-gmail-image-proxy-works-and-what-this-means-for-you/ - 而googleusercontent网站是GIP使用的缓存/ cdn(以及其他内容)。
Google App Engine的唯一相关性可能是您如何配置您未向我们展示的app.yaml
,即该图像是作为静态文件提供的,还是通过应用程序代码中的逻辑 - - 如果是后者,则代码在为图像提供服务时会进行任何日志记录调用。根据您显示的有限数据,我猜测前者(因此文件存在,并由Google的静态文件服务器提供,而不是在您自己的实例上的应用程序代码旁边),这将消除任何谜......
答案 1 :(得分:1)
我在笔记本上部署了我的应用程序,然后尝试重复我的操作。
结果证实了我的猜测Google代理和App Engine一起工作,当Google代理服务器请求我的应用时,我看到了我的IP。
在我的实验中,我看到了Google代理的IP。