【问题标题】:urllib2 - get resource if you already know the IPurllib2 - 如果您已经知道 IP,则获取资源
【发布时间】:2012-03-25 09:36:56
【问题描述】:
在我的 python 脚本中,我正在获取页面,但我已经知道服务器的 IP。
所以我可以省去进行 DNS 查找的麻烦,如果我能知道如何在请求中传递 IP 和主机名。
所以,如果我打电话
http://111.111.111.111/
然后在HOST属性中传入主机名,应该就OK了。但是我看到的问题是在服务器端,如果用户查看传入的请求(即 REQUEST_URI),那么他们会看到我选择了 IP。
有人有什么想法吗?
【问题讨论】:
标签:
python
httprequest
urllib2
【解决方案1】:
首先,主要思想是可疑的。好吧,您可以“知道”服务器的 IP,但这种知识是暂时的,其正确时间由 DNS TTL 控制。为了稳定的配置,服务器管理员可以提供具有长 TTL(例如几天)的 DNS 记录,因此 DNS 请求将始终使用最近的缓存解析器或 nscd 来满足。对于更改配置,TTL 可以减少到几秒钟或永远为 0(意味着没有缓存),它对于某种负载均衡器很有用。您尝试组织自己的不知道 TTL 的解析器缓存,这可能会导致请求到无效或错误的服务器,并且内容不正确。所以,我建议不要这样做。
如果您完全确定您应该这样做并且您不能使用外部工具作为自定义解析器甚至 /etc/hosts,请尝试安装覆盖的自定义“opener”(请参阅文档中的 urllib2.build_opener() 函数) DNS 查询。但是我从来没有这样做过,知识只是在刚刚阅读的文档上。