为Python Web代理解析DNSLookupFailedError

时间:2018-02-05 18:34:59

标签: python regex google-app-engine google-cloud-dns

我的代码如下:

https://github.com/T145/tphroxy/blob/master/mirror.py

https://github.com/T145/tphroxy/blob/master/transform_content.py

当访问某些网站时,我会遇到以下错误:

Traceback (most recent call last):
  File " ... /mirror.py", line 108, in fetch_and_store
    response = urlfetch.fetch(mirrored_url)
  File " ... /google/appengine/api/urlfetch.py", line 293, in fetch
    return rpc.get_result()
  File " ... /google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
    return self.__get_result_hook(self)
  File " ... /python27_lib/versions/1/google/appengine/api/urlfetch.py", line 449, in _get_fetch_result
    raise DNSLookupFailedError('DNS lookup failed for URL: ' + url)
DNSLookupFailedError: DNS lookup failed for URL: http://public/images/v6/btn_arrow_down_padded_white.png

我的猜测是,特定的资产网址模式未正确匹配并通过代理发送,即transform_content缺少模式。非常感谢任何帮助解决这个问题!如果需要,我愿意使用任何替代库。

DEMO

修改

我为transform_content添加了test suite,我确定主要问题在于其结果中的正则表达式。如果您使用的是Windows,请使用py transform_content_test.py运行它以获得结果。

1 个答案:

答案 0 :(得分:1)

DNS lookup failed for URL: http://public/...注意URL中缺少的域(主机)部分,public字符串将被解析为域,这是无效的,导致您看到的错误。

网址应该类似于http://<valid_domain>/public/...,因此请检查构建该网址的代码。

你在网址上做了很多字符串操作,检查你所有可能的代码路径是否正常运行,我的猜测是有些人没有做你期望他们做的事情。