Gmail如何制作它?

时间:2016-01-13 15:31:55

标签: python ajax google-chrome google-app-engine gmail

我正在开发类似banatag的服务。在新功能开发期间,我发现Gmail无法解释的行为(我认为)。

我试着用图片解释我的问题:

  1. 创建标记(我将要求的图像)。现在没有人要求它

  2. 通过网址将其添加到电子邮件中。图片网址http://eggplant-tag.appspot.com/request?FT1R3WECWNTM2ZGUDXRMA8VOXJ4F6TI4

  3. 页面上有两个新的AJAX请求,但是我的域名没有

  4. 寻找我的服务。 Google User-Agent有来自我的IP 的请求

  5. 请求此图片(标签)是什么? 我看到两种可能性:

    • 页面向我的服务发出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地址?

2 个答案:

答案 0 :(得分:8)

Google图片代理的工作方式已在网络上进行了全面分析,例如https://litmus.com/blog/gmail-adds-image-caching-what-you-need-to-knowhttps://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。