If it is reporting the error SSLV3_ALERT_HANDSHAKE_FAILURE, perhaps it has something to do with the site not supporting TLSv1.3.
As you mentioned you upgraded the Python version from 3.8 to 3.11, perhaps you also upgraded urllib3 from 1.x to 2.x.
You can check the urllib3 version with the following command.
pip show urllib3
In the 2.x version of urllib3, the version of OpenSSL is required to be above 1.1.1 (reference), and the 1.1.1 version of OpenSSL supports the use of TLSv1.3 to establish connections to websites.
It seems that if the site you are visiting does not support TLSv1.3, it reports the error SSLV3_ALERT_HANDSHAKE_FAILURE.
I found a workaround online, but it didn't seem to work very well.
So I considered downgrading the version of urllib3 to 1.26.20. The code is as follows
pip uninstall urllib3
pip install urllib3==1.26.20
Then I accessed the website using requests and it seemed to work just fine to me.
This actually drops the more secure TLSv1.3, which is not perfect, but after all, we can't make that site support TLSv1.3 :(