问题出现的原因是因为Aiohttp使用了Python内置的SSL库,该库默认不信任所有证书,因此需要手动添加可信证书。 代码示例:
import aiohttp
import ssl
async def main():
async with aiohttp.ClientSession() as session:
sslcontext = ssl.create_default_context()
sslcontext.check_hostname = False
sslcontext.verify_mode = ssl.CERT_NONE
async with session.get("https://example.com", ssl=sslcontext) as resp:
print(await resp.text())
asyncio.run(main())
上述代码中,我们使用了create_default_context()来创建SSL上下文对象,check_hostname设置为False,这样就可以在不验证主机名的情况下使用该证书。verify_mode设置为CERT_NONE,使其不验证证书的完整性。当然,由于这种方式可能存在一定的安全风险,请谨慎使用。