scrapy: OpenSSL unsafe legacy renegotiation disabled error
Description
I get an SSL issue on a working site
twisted.web._newclient.ResponseNeverReceived: [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', '', 'unsafe legacy renegotiation disabled')]>]
Steps to Reproduce
scrapy shell https://dorotheum.com
Expected behavior: HTML page
Actual behavior: the error above
Reproduces how often: 100%
Versions
Scrapy : 2.6.1
lxml : 4.8.0.0
libxml2 : 2.9.4
cssselect : 1.1.0
parsel : 1.6.0
w3lib : 1.22.0
Twisted : 22.4.0
Python : 3.9.12 (main, Mar 26 2022, 15:44:31) - [Clang 13.1.6 (clang-1316.0.21.2)]
pyOpenSSL : 22.0.0 (OpenSSL 3.0.3 3 May 2022)
cryptography : 37.0.2
Platform : macOS-12.2.1-arm64-arm-64bit
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 1
- Comments: 17 (7 by maintainers)
I ran into the same problem, and built a custom context factory to solve it. I hope it will be helpful for others:
contextfactory.py (within MyProject folder)
within my_spider.py
@wRAR fixed by downgrading cryptography to 36.0.2 Here’s my current
scrapy version --verboseresultNow pyOpenSSL uses OpenSSL 1.1.1n Even though the problem is fixed, the flags enhancement would be great. Thank you so much @wRAR !
I want to drop this relevant link here:
https://stackoverflow.com/questions/71603314/ssl-error-unsafe-legacy-renegotiation-disabled/72374542#72374542
Here is a very useful piece of code to circumvent the issue without downgrading:
It’s not “inside of the scrapy package”, it’s in your Python environment.
thanks.
this code works too.
contextfactory.py
Thanks @aysegulc, your suggestion works.