通过免费代理在AppEngine中抓取
我写的这个(Python)AppEngine程序是用来从其他网站获取网页数据的,但看起来那个第三方网站在屏蔽来自Google App Engine的请求!我在开发模式下可以成功获取页面,但一旦部署就不行了。
我能不能用某种免费的代理来绕过这个问题呢?
我能不能用免费的代理来隐藏我是在App Engine上请求的事实?
我该如何找到或选择一个代理呢?我需要什么?我该怎么进行数据获取?
还有什么其他需要知道的或者需要注意的地方吗?
5 个回答
1
你说的这个问题确实是应用引擎SDK中的一个有效错误。你可以查看一下这个链接 http://code.google.com/p/googleappengine/issues/detail?id=544,里面有关于这个错误的更新信息,还有针对Java和Python的解决方法。
1
你有没有想过换一下用户代理(user-agent)呢?
result = urlfetch.fetch(u,headers = {'User-Agent': "Mozilla/5.0"},allow_truncated=True)
这个API会在用户代理后面加上“AppEngine-Google;”,不过如果限制不是根据IP地址范围来判断的话,这样做可能会有效。
2
可能正确的方法是先向你要抓取的网站的拥有者请求权限。
即使你使用了代理,仍然有很大可能性通过代理发送的请求也会被封锁。