为什么请求引发此异常 "check_hostname requires server_hostname"?
Why requests raise this exception "check_hostname requires server_hostname"?
p={
'http':'http://my correct proxy here',
'https':'https://my correct proxy here'
}
self.response=requests.get(url=url,headers=self.headers,timeout=(6,15),proxies=p)
然后引发异常:
Traceback (most recent call last):
File "C:\Users\xyl13509876955\Desktop\Monitor\dicks.py", line 61, in send_request
self.response=requests.get(url=url,headers=self.headers,timeout=(6,15),proxies=p)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 696, in urlopen
self._prepare_proxy(conn)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 964, in _prepare_proxy
conn.connect()
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 359, in connect
conn = self._connect_tls_proxy(hostname, conn)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 506, in _connect_tls_proxy
ssl_context=ssl_context,
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\ssl_.py", line 432, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\ssl_.py", line 474, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 423, in wrap_socket
session=session
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 827, in _create
raise ValueError("check_hostname requires server_hostname")
ValueError: check_hostname requires server_hostname
请帮我解决这个问题,最好的方法是告诉我正确的代码。我对这个问题感到很困惑和沮丧!!
解决方法:
pip install urllib3==1.25.11
我已经解决了问题。这是 urllib3 的错误。
您可以使用pip install urllib3==1.25.8
降级 urllib3 也为我解决了这个问题。
虽然我不得不重置代理环境变量:
https_proxy="http://127.0.0.1:<PROXY_PORT>" pip install urllib3==1.25.11
否则,我会收到以下错误并且无法降级 urllib3(请参阅 )。
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1091)'))': /simple/pip/
据我了解,在新的 urllib3 中,代理的主要模式已更改...可以阅读 here。
此设置对我有帮助(对于 urllib3=1.26.4)。
一个老
proxy={
'http':'8.88.888.8:8888',
'https':'8.88.888.8:8888'
}
新的
proxy={
'https': 'https://8.88.888.8:8888',
'http': 'http://8.88.888.8:8888',
}
已更新
我在 requests 2.26.0 中再次遇到这个问题,但这次它使用旧模式...
proxy={
'http':'8.88.888.8:8888',
'https':'8.88.888.8:8888'
}
使用Python 3.6.9 在Ubuntu 18.04 上遇到同样的问题,搜索了很多页面并通过反复试验最终修复了它。
修复正在更改环境变量 https_proxy
。以前 https_proxy
是 https://127.0.0.1:<PORT>
我删除了 https
header 通过:
export https_proxy=127.0.0.1:<PORT>
那我可以python3 -m pip install --upgrade urllib3
.
在 Linux 上,可以通过在代理设置环境变量 export https_proxy=http://123.123.123.123:8888
中将 https
替换为 http
来解决问题。请注意,这是 https
的代理设置,但使用了 http
地址。
我运行遇到了同样的问题,意外启用了代理配置。关闭代理对我有用。
在我的例子中,Charles' windows proxy
函数导致了这个错误。在我关闭 windows proxy
之后,这个错误就消失了。
打开你的 VPN/Proxy 东西(作为系统代理启用)也许它已修复。
我在使用 QV2ray 时遇到了这个问题,当我禁用它时,pip 工作正常。
None 的答案对我有用。这是解决我的问题的看起来很傻的解决方案:
如果您像我一样尝试在公司环境中安装软件包,您可能已经提供了一个代理来限制与万维网的交互,因此您所要做的就是以 http 和 https 格式导出该代理。
像这样:
export http_proxy=http://x.x.x.x:8080
export https_proxy=http://x.x.x.x:8080
(我的代理没有使用 ssl,这根本不重要。)
将 x 替换为您的代理 ip
不要使用 VPN 代理服务,然后重试
我在使用代理时遇到了这个错误。我禁用了代理,错误已修复。
正如其他人所说,它与服务器的连接有关。
我关闭Fiddler就解决了
p={
'http':'http://my correct proxy here',
'https':'https://my correct proxy here'
}
self.response=requests.get(url=url,headers=self.headers,timeout=(6,15),proxies=p)
然后引发异常:
Traceback (most recent call last):
File "C:\Users\xyl13509876955\Desktop\Monitor\dicks.py", line 61, in send_request
self.response=requests.get(url=url,headers=self.headers,timeout=(6,15),proxies=p)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 696, in urlopen
self._prepare_proxy(conn)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 964, in _prepare_proxy
conn.connect()
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 359, in connect
conn = self._connect_tls_proxy(hostname, conn)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 506, in _connect_tls_proxy
ssl_context=ssl_context,
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\ssl_.py", line 432, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\ssl_.py", line 474, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock)
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 423, in wrap_socket
session=session
File "C:\Users\xyl13509876955\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 827, in _create
raise ValueError("check_hostname requires server_hostname")
ValueError: check_hostname requires server_hostname
请帮我解决这个问题,最好的方法是告诉我正确的代码。我对这个问题感到很困惑和沮丧!!
解决方法:
pip install urllib3==1.25.11
我已经解决了问题。这是 urllib3 的错误。
您可以使用pip install urllib3==1.25.8
降级 urllib3 也为我解决了这个问题。
虽然我不得不重置代理环境变量:
https_proxy="http://127.0.0.1:<PROXY_PORT>" pip install urllib3==1.25.11
否则,我会收到以下错误并且无法降级 urllib3(请参阅
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1091)'))': /simple/pip/
据我了解,在新的 urllib3 中,代理的主要模式已更改...可以阅读 here。 此设置对我有帮助(对于 urllib3=1.26.4)。
一个老
proxy={
'http':'8.88.888.8:8888',
'https':'8.88.888.8:8888'
}
新的
proxy={
'https': 'https://8.88.888.8:8888',
'http': 'http://8.88.888.8:8888',
}
已更新
我在 requests 2.26.0 中再次遇到这个问题,但这次它使用旧模式...
proxy={
'http':'8.88.888.8:8888',
'https':'8.88.888.8:8888'
}
使用Python 3.6.9 在Ubuntu 18.04 上遇到同样的问题,搜索了很多页面并通过反复试验最终修复了它。
修复正在更改环境变量 https_proxy
。以前 https_proxy
是 https://127.0.0.1:<PORT>
我删除了 https
header 通过:
export https_proxy=127.0.0.1:<PORT>
那我可以python3 -m pip install --upgrade urllib3
.
在 Linux 上,可以通过在代理设置环境变量 export https_proxy=http://123.123.123.123:8888
中将 https
替换为 http
来解决问题。请注意,这是 https
的代理设置,但使用了 http
地址。
我运行遇到了同样的问题,意外启用了代理配置。关闭代理对我有用。
在我的例子中,Charles' windows proxy
函数导致了这个错误。在我关闭 windows proxy
之后,这个错误就消失了。
打开你的 VPN/Proxy 东西(作为系统代理启用)也许它已修复。
我在使用 QV2ray 时遇到了这个问题,当我禁用它时,pip 工作正常。
None 的答案对我有用。这是解决我的问题的看起来很傻的解决方案:
如果您像我一样尝试在公司环境中安装软件包,您可能已经提供了一个代理来限制与万维网的交互,因此您所要做的就是以 http 和 https 格式导出该代理。
像这样:
export http_proxy=http://x.x.x.x:8080
export https_proxy=http://x.x.x.x:8080
(我的代理没有使用 ssl,这根本不重要。)
将 x 替换为您的代理 ip
不要使用 VPN 代理服务,然后重试
我在使用代理时遇到了这个错误。我禁用了代理,错误已修复。
正如其他人所说,它与服务器的连接有关。
我关闭Fiddler就解决了