python小小白哟 发表于 2023-7-1 09:04:20

PYTHON中aiohttp库的问题

本帖最后由 python小小白哟 于 2023-7-1 09:05 编辑

代码如下:
import aiohttp
import asyncio

async def fetch(session,url):
    async with session.get(url) as response:
      return await response.text(), response.status

async def main():
    async with aiohttp.ClientSession() as session:
      html,status = await fetch(session,'https://cuiqingcai.com')
      print(f'html:{html[:100]}...')
      print(f'status:{status}')

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

然后就报错了:
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host cuiqingcai.com:443 ssl:True certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')]

怎么忽略证书错误呢?

isdkz 发表于 2023-7-1 09:04:52

你需要问什么问题?

liuhongrun2022 发表于 2023-7-1 09:05:53

你要问什么

isdkz 发表于 2023-7-1 09:06:52

要忽略证书错误,你可以在创建 ClientSession 时传递 trust_env=False 参数,并使用 ssl=False 参数来禁用SSL验证。修改你的代码如下所示:

import aiohttp
import asyncio

async def fetch(session,url):
    async with session.get(url) as response:
      return await response.text(), response.status

async def main():
    connector = aiohttp.TCPConnector(ssl=False)
    async with aiohttp.ClientSession(connector=connector, trust_env=False) as session:
      html,status = await fetch(session,'https://cuiqingcai.com')
      print(f'html:{html[:100]}...')
      print(f'status:{status}')

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())


这样修改后,代码将禁用SSL验证,从而忽略证书错误。请注意,这样做可能会降低安全性,并且不建议在生产环境中使用。仅在特定的开发或测试场景下使用此功能。

liuhongrun2022 发表于 2023-7-1 09:07:13

您好!根据报错信息,您遇到了证书验证错误。要忽略证书验证错误,可以通过设置ssl参数为False来实现。修改代码如下:

import aiohttp
import asyncio

async def fetch(session,url):
    async with session.get(url, ssl=False) as response:
      return await response.text(), response.status

async def main():
    async with aiohttp.ClientSession() as session:
      html,status = await fetch(session,'https://cuiqingcai.com')
      print(f'html:{html[:100]}...')
      print(f'status:{status}')

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
在fetch()函数中,我们在使用session.get()方法时,将ssl参数设置为False,以忽略证书验证错误。

请注意,忽略证书验证错误可能会带来一定的安全风险,请确保您知悉相关风险,并仅在您明确信任请求的目标网站时才进行此操作。

希望这能帮助到您!如果您有任何进一步的问题,请随时向我提问。

liuhongrun2022 发表于 2023-7-1 09:07:49

求最佳答案

python小小白哟 发表于 2023-7-1 09:14:06

liuhongrun2022 发表于 2023-7-1 09:07
求最佳答案

抱歉你慢了一步

liuhongrun2022 发表于 2023-7-1 09:16:27

python小小白哟 发表于 2023-7-1 09:14
抱歉你慢了一步

好吧{:10_296:}
页: [1]
查看完整版本: PYTHON中aiohttp库的问题