是否可以在python中将域绑定到指定的IP?

时间:2014-07-18 03:12:02

标签: python

当我使用python脚本和一些库(例如urllib2requests)来获取网页时,是否可以将域绑定到该python环境中的指定IP?

我知道我可以在hosts文件中将域绑定到IP,但它会影响某些计算机上运行的其他进程。

我发现一种将域绑定到IP的方法只会影响我的python脚本,如下所示:

import requests
bind_domain2IP(DOMAIN, IP)
r = requests.get(DOMAIN) 

有没有人有这方面的经验?感谢任何建议。

2 个答案:

答案 0 :(得分:1)

是的,但它相当先进。如果您使用requests,则可以为给定域配置Transport Adapter以控制处理该http请求的方式。

例如,您可以在适配器中创建自定义HTTPAdapter并覆盖get_connection(),以便与您选择的特定IP建立urllib3连接,而不是提供原始域。

答案 1 :(得分:0)

在一个简单的方法中,您可以使用具有域/ IP关联的字典并直接连接到IP地址,并将Host HTTP标头设置为原始主机名>

导入请求

hosts = {
    'webserver.local': '192.168.1.1'
}

def myreq(hostname, path):
    headers = {}
    if hostname in hosts:
        headers['Host'] = hostname
        hostname = hosts[hostname]
    url = 'http://%s%s' % (hostname, path)
    return requests.get(url, headers=headers)

r = myreq('webserver.local', '/index.html')