首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError: check_hostname需要使用Fiddler 4的server_hostname

ValueError: check_hostname需要使用Fiddler 4的server_hostname
EN

Stack Overflow用户
提问于 2021-04-01 04:15:44
回答 2查看 5K关注 0票数 1

最近发布的这篇question有一些有用的答案,但它与我的不同。我在ArcGIS专业笔记本上运行urllib3 1.26.4和Python3.7。我还打开了Fiddler 4,因为我想在排除脚本故障时跟踪web流量。只有当我打开Fiddler时,我才会得到以下错误。如果我关闭Fiddler,我会得到<Response [200]>。有没有可能在打开Fiddler的情况下使用requests模块?我是Fiddler新手。

截断的脚本:

代码语言:javascript
复制
import requests

#url
idph_data = 'https://idph.illinois.gov/DPHPublicInformation/api/covidVaccine/getVaccineAdministrationCurrent'
#headers
headers = {'user-agent': 'Mozilla/5.0'}

response = requests.get(idph_data, headers=headers, verify=True)

错误:

代码语言:javascript
复制
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
In  [35]:
Line 4:     response = requests.get(idph_data,verify=True)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\api.py, in get:
Line 76:    return request('get', url, params=params, **kwargs)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\api.py, in request:
Line 61:    return session.request(method=method, url=url, **kwargs)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\sessions.py, in request:
Line 542:   resp = self.send(prep, **send_kwargs)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\sessions.py, in send:
Line 655:   r = adapter.send(request, **kwargs)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\adapters.py, in send:
Line 449:   timeout=timeout

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connectionpool.py, in urlopen:
Line 696:   self._prepare_proxy(conn)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connectionpool.py, in _prepare_proxy:
Line 964:   conn.connect()

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connection.py, in connect:
Line 359:   conn = self._connect_tls_proxy(hostname, conn)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connection.py, in _connect_tls_proxy:
Line 506:   ssl_context=ssl_context,

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\util\ssl_.py, in ssl_wrap_socket:
Line 432:   ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\util\ssl_.py, in _ssl_wrap_socket_impl:
Line 474:   return ssl_context.wrap_socket(sock)

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\ssl.py, in wrap_socket:
Line 423:   session=session

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\ssl.py, in _create:
Line 827:   raise ValueError("check_hostname requires server_hostname")

ValueError: check_hostname requires server_hostname
---------------------------------------------------------------------------
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-28 05:33:14

我已经更新到最新版本requests v2.7.0,不再收到这个错误。如果这是一个与2.25.1版本相关的特定版本问题,我不确定。我还没有发现任何证据证明这一点。

在与我的Python可执行文件相同的目录中的Windows命令提示符中:

代码语言:javascript
复制
python -m pip install requests==2.7.0

现在,如果我使用Fiddler捕获来运行我的原始脚本,我得到的HTTP状态是200,并且我的脚本不再给我这个错误。

票数 1
EN

Stack Overflow用户

发布于 2021-05-01 09:47:00

在当前版本的ArcGIS专业版提供的环境中,我也遇到了这个问题。根据您链接的问题中较低级别的答案,我在所需的环境中运行了pip install urllib3==1.25.11 (在我的示例中是默认环境的克隆),问题似乎得到了解决。

这显然是由于ArcGIS专业版提供的urllib3版本中的一个新功能。上面的命令会降级到相对较新但工作正常的版本。这个问题不会在较新版本的urllib3中得到解决,相反,目前有一个pull request正在等待修复Python本身中的底层问题。

顺便说一句,虽然可以将pip配置为能够通过fiddler代理运行,但这并不容易,所以最好在运行任何pip命令时关闭Fiddler。

相关的错误报告在here中找到。该问题似乎存在于CPython /内置https解析Windows系统代理设置的方式中的一个非常老的错误,导致与HTTPS URL一起使用的代理条目总是接收一个HTTPS前缀(而不是urllib )。较新版本的urllib3实际上支持通过HTTPS使用代理,这在以前是不存在的。因此,以前,urllib3会忽略前缀,但现在,它尝试使用HTTPS与HTTP进行通信。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66894772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档