我正在尝试向shopify商店提出GET请求,packershoes如下:
endpoint = "http://www.packershoes.com"
print session.get(endpoint, headers=headers)
当我对网站运行get请求时,我收到以下错误:
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 467, in get
return self.request('GET', url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 455, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 558, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 385, in send
raise SSLError(e)
requests.exceptions.SSLError: hostname 'packershoes.com' doesn't match either of '*.myshopify.com', 'myshopify.com'
当我请求不同的网站时,它工作正常。
这看起来更像是SSL问题而不是Python问题。你没有向我们展示你的代码,所以我在这里做了一些猜测,但看起来你所连接的网站提供的SSL证书与你正在使用的主机名不符。这里的决议通常是:
这是讨论in the requests documentation。
更新
仔细看看你的问题,我注意到我自己无法重现这个问题。 www.packershoes.com
提供的证书显然适用于*.myshopify.com
,但我没有得到任何证书错误,大概是因为该地址实际上是packer-shoes.myshopify.com
的别名
$ host www.packershoes.com
www.packershoes.com is an alias for packer-shoes.myshopify.com.
packer-shoes.myshopify.com is an alias for shops.myshopify.com.
shops.myshopify.com has address 23.227.38.64
我想知道您的问题是否与您正在使用的requests
版本或本地DNS配置中的某些内容无关。如果你用www.packershoes.com
替换你的请求中的packer-shoes.myshopify.com
,它是否正常工作?
请求验证HTTPS请求的SSL证书,就像Web浏览器一样。默认情况下,启用SSL验证,如果验证无法验证证书,则Requests将抛出SSLError
,您已将验证设置为False:
session.get("http://www.packershoes.com", headers=headers, verify=False)