在我的项目中,我正在使用pythonrequests
库处理所有HTTP请求。
现在,我需要使用特定的DNS查询http服务器-有两种环境,每种环境都使用自己的DNS,并且更改是独立进行的。
因此,当代码运行时,它应使用特定于环境的DNS,而不是在我的Internet连接中指定的DNS。
该urllib3.connection
模块httplib.HTTPConnection
以相同的名称子类化,已用.connect()
调用的方法替换了该方法self._new_conn
。反过来,这委托给urllib3.util.connection.create_connection()
。修补
该 功能可能是最简单的:
from urllib3.util import connection
_orig_create_connection = connection.create_connection
def patched_create_connection(address, *args, **kwargs):
"""Wrap urllib3's create_connection to resolve the name elsewhere"""
# resolve hostname to an ip address; use your own
# resolver here, as otherwise the system resolver will be used.
host, port = address
hostname = your_dns_resolver(host)
return _orig_create_connection((hostname, port), *args, **kwargs)
connection.create_connection = patched_create_connection
并且您将提供自己的代码来host
将地址的一部分解析为ip地址,而不是依靠connection.create_connection()
调用(自动包装socket.create_connection()
)为您解析主机名。
像所有的monkeypatching一样,请注意,在以后的版本中代码没有显着更改;该补丁是针对urllib3
1.21.1版创建的。但应该适用于1.9之前的版本。
请注意,此答案已重新编写以与较新的urllib3
版本一起使用,这些新版本添加了更方便的修补位置。请参阅适用于版本<1.9的旧方法的编辑历史记录,以作为供应商urllib3
版本的补丁程序,而不是独立安装。
当我从discord服务器收到请求时,它会发送如下内容: null 当我运行它时,终端给我<Response[404&>;,这似乎是错误本身的代码,但我希望代码输出消息参数的内容 我为一个可能愚蠢的问题提前道歉。
如何将自定义标头添加到HttpClient请求?我使用方法发布JSON。我需要添加的自定义标题是 这是我到目前为止所做的:
我试图爬过craiglist的论坛类别。组织机构(https://forums.craigslist.org/).我的蜘蛛: 我通过错误回调收到以下消息: [失败实例:Traceback:: /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py: 455:回调 /usr/local/lib/python2.7/site-p
我尝试了拉雷维尔的入门指南。通用域名格式。 有一章创建了任务。回调和函数
问题内容: 我的应用程序服务器有一个基于Node.js的部署脚本。部署过程中的第一步是在向DNS注册之前,验证这些应用服务器是否正确侦听HTTPS。为此,我只需要向该服务器的IP地址发出HTTPS请求即可。 如果这是HTTP,则不是问题。我可以向发出HTTP 请求,这将起作用。但是,如果我发出HTTPS GET请求,则此操作将失败,因为证书用于特定的主机名,例如。 如果我是手动测试,则将IP地址临
问题内容: 我正在使用.ajaxStart()和.ajaxStop()在提出ajax请求时显示模式。(在开始和停止之间) 现在,我想添加一个longpoll函数,该函数一直等待通知,类似于本网站左上角的通知。 我的问题现在在于仅针对longpolling请求禁用此模式。 在处理程序上注册“加载屏幕”: 我的longpoll函数: 我试过了: ..并在开始轮询后重新连接处理程序,但没有任何乐趣。 我