当我使用python脚本和一些库(例如urllib2
或requests
)来获取网页时,是否可以将域绑定到该python环境中的指定IP?
我知道我可以在hosts
文件中将域绑定到IP,但它会影响某些计算机上运行的其他进程。
我发现一种将域绑定到IP的方法只会影响我的python脚本,如下所示:
import requests
bind_domain2IP(DOMAIN, IP)
r = requests.get(DOMAIN)
有没有人有这方面的经验?感谢任何建议。
答案 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')