python - python请求异常 - 不断抛出错误
问题描述
收到 HTTP 200 时脚本可以正常工作。但是,一旦我收到异常,我就会收到错误。我知道该网站没有安装有效的 SSL 证书,并且我尝试使用 requests.exceptions.RequestException 来捕获任何内容,但仍然会引发错误。我还会不时出现代理错误等异常,并且 requests.exceptions.RequestException 不会捕获它。我也尝试过,在 try: request.raise_for_status() 下仍然会引发错误。代码如下:
def verify_ssl(proxy_info, target):
print('Attempting to verify SSL Cert on %s:443' % target)
if proxy_info == None:
response = requests.get('https://%s' % target)
if proxy_info != None:
response = requests.get('https://%s' % target, proxies=proxy_info)
try:
response
except requests.exceptions.SSLError as g:
print('SSL Verification Error %s' % g)
return ('Successfully Verified SSL Cert: HTTP 200 received.\n')
调试向我抛出了这个:
Traceback (most recent call last):
File "c:\Users\appleta\Desktop\ping.py", line 69, in <module>
ssl_result = verify_ssl(proxy_info, target)
File "c:\Users\appleta\Desktop\ping.py", line 37, in verify_ssl
response = requests.get('https://%s' % target)
File "C:\Python34\lib\site-packages\requests\api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "C:\Python34\lib\site-packages\requests\api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python34\lib\site-packages\requests\sessions.py", line 512, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python34\lib\site-packages\requests\sessions.py", line 622, in send
r = adapter.send(request, **kwargs)
File "C:\Python34\lib\site-packages\requests\adapters.py", line 511, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='blabla.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)'),))
解决方案
在 python 中,表达式:
response
永远不会产生异常。您必须将两个get
调用都放在try
块内:
def verify_ssl(proxy_info, target):
print('Attempting to verify SSL Cert on %s:443' % target)
try:
if proxy_info is None:
response = requests.get('https://%s' % target)
else:
response = requests.get('https://%s' % target, proxies=proxy_info)
except requests.exceptions.SSLError as g:
print('SSL Verification Error %s' % g)
return 'Got SSL error'
return 'Successfully Verified SSL Cert: HTTP 200 received.\n'
另外:请注意,您总是返回字符串Successfully Verified SSL Cert ...
,因为即使出现错误,您也只会打印错误消息,然后继续执行。您可能想在except
块中返回不同的东西。
推荐阅读
- javascript - 在分布式环境中拆分数组以找到两个子数组之和之间的最小差异
- angular - 在包装表中使用 Angular Material 表 mat-text-column
- python - 如何匹配 json 汤中的确切单词?
- python - 如何使用 pyinstaller 在应用程序构建中加载插件?
- flutter - 实施 map_view 时无法继续
- reactjs - 按具有 children 属性的行数据分组
- java - Camunda 外部客户端:TASK/CLIENT-02002 为请求建立连接时出现异常
- python - 根据其他数据框中的数据填充新数据框
- android - 找不到安卓模拟器VS2019
- blockchain - 使用 Public Corda v4.0 创建内部专用网络