关于python:通过谷歌应用引擎上的代理获取网址

Fetch url via proxy on google app engine

我在 google-app-engine 上有一个用 python 编写的应用程序。我想通过代理从我的应用程序中获取 url。我找到了两种从 appengine 获取远程 url 的方法:

  • 使用 urlfetch
  • 使用python内置的urllib2
  • 查看 urlfetch 的文档,我没有找到任何设置代理的方法。所以我开始玩 urllib2。
    我试过这个:

    1
    2
    3
    4
    5
    6
    class MainHandler(webapp.RequestHandler):
        def get(self):
            proxy_handler = urllib2.ProxyHandler({'http':"210.246.88.46:8080",})
            opener = urllib2.build_opener(proxy_handler)
            resp = opener.open("http://whatsmyuseragent.com/", timeout=20)
            self.response.out.write(resp.read())

    但看起来 appengine 会忽略代理并使用自己的 ip 获取 url。在结果页面中显示了应用程序的 ip,而不是代理的 ip。
    在文档中说,ip 不能更改。我想,这意味着我无法以某种方式手动更改 HTTP 标头中的 ip,但我仍然可以使用代理。

    但是,我想确切地知道,是否可以通过 appengine 上的代理获取 url 并停止打破我的头:).


    我认为这是此处提到的 App-Engine 中的一个错误

    https://code.google.com/p/googleappengine/issues/detail?id=544

    票已关闭,但据我所知,错误仍然存??在(在 SDK 1.9.8 上)

    人们已经为 Java 和 Python 引擎编写了一些我还没有尝试过的代码/补丁