gpt4 book ai didi

python - 由于 Python 中的请求不安全的 URL 而捕获 SSLError?

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:19 25 4
gpt4 key购买 nike

我有一个包含几千个 URL 的列表,并注意到其中一个在传递到 requests.get() 时作为 SSLError 抛出。下面是我尝试使用 solution suggested in this similar question 来解决这个问题以及使用 ssl.SSLError 的“try & except” block 捕获错误的失败尝试:

url = 'https://archyworldys.com/lidl-recalls-puff-pastry/'

session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

try:
response = session.get(url,allow_redirects=False,verify=True)
except ssl.SSLError:
pass

最后返回的错误是:

SSLError: HTTPSConnectionPool(host='archyworldys.com', port=443): Max retries exceeded with url: /lidl-recalls-puff-pastry/ (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",),))

当我在 Chrome 中打开 URL 时,我收到阻止网页的“不安全”/“隐私错误”。但是,如果我尝试使用 HTTP 而不是 HTTPS 的 URL(例如“http://archyworldys.com/lidl-recalls-puff-pastry/”),它在我的浏览器中工作得很好。每this question ,将 verify 设置为 False 可以解决问题,但我更愿意找到更安全的解决方法。

虽然我知道一个简单的解决方案是从我的数据中删除 URL,但我正在尝试找到一个让我继续(例如,如果在 for 循环 中)的解决方案只需跳过这个错误的 URL 并继续下一个。

最佳答案

我在运行你的代码时得到的错误是:

requests.exceptions.SSLError:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

基于这个需要捕获requests.exceptions.SSLError而不是ssl.SSLError,即:

try:
response = session.get(url,allow_redirects=False,verify=True)
except requests.exceptions.SSLError:
pass

虽然您得到的错误看起来有所不同,但这可能是因为您显示的代码与您正在运行的代码不完全相同。无论如何,请查看您收到的确切错误消息,并从中找出要捕获的异常。您也可以尝试像这样捕获更一般的异常,并通过这样做获得您需要捕获的确切异常类:

try:
response = session.get(url,allow_redirects=False,verify=True)
except Exception as x:
print(type(x),x)
pass

关于python - 由于 Python 中的请求不安全的 URL 而捕获 SSLError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48919078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com