首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python2.7.5中,如果ISP劫持404响应,我如何检查域解析?

问在Python2.7.5中,如果ISP劫持404响应,我如何检查域解析?
EN

Stack Overflow用户
提问于 2015-12-30 21:32:50
回答 1查看 193关注 0票数 1

我试图验证一个域名是否返回200、301或302的http状态。我遇到了域名无效的情况,但是返回200状态,因为ISP劫持404响应并将其重定向到专有搜索页面。这使得域名在不合法的情况下显得有效。

代码语言:javascript
复制
>>> r = requests.head(url='http://defdoesnotexist123.com', allow_redirects=False)
>>> r.status_code
200
>>> r.url
u'http://defdoesnotexist123.com/'

在这种情况下,用户实际上被重定向到http://finder.cox.net,而不是看到404页。是否有办法检查这一点,以便我可以让我的逻辑失败,并认为域名无效?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-30 22:14:12

DNS失败是,而不是,是404错误。404要求有一个实际的可解析域和一个服务器响应,这意味着路径不存在,但是服务器存在。您的ISP正在拦截DNS故障,这是在涉及HTTP之前发生的错误情况,而404是HTTP错误代码。

如果ISP拦截所有DNS记录并将您重定向到一个新的URL,请查找Location标头:

代码语言:javascript
复制
r = requests.head('http://defdoesnotexist123.com')
if 'finder.cox.net ' in r.headers.get('location', ''):
    # domain doesn't actually exist, redirected to the catch-all page

注意,默认情况下,requests.head()将allow_redirects设置为False,不需要显式设置它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34537568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档