我试图从一个特定的url获取图像数据(参见下面的代码)。他们的安全性已经过时了(见下面的SSL报告),但我还是需要连接到它。我可以用我的浏览器获取图像。在
这就是我要做的:
import requests
url = 'https://www.bestseller.com/webseller/psp.show_picture?picturesId=2367737&thumb=false'
requests.get(url)
我得到的错误是:
^{pr2}$当我添加参数verify=False
时,也会出现相同的错误。在
我已经用pip install requests[security]
安装了requests
。这是相关的pip freeze
输出:
asn1crypto==0.24.0
certifi==2017.11.5
cryptography==2.1.4
ndg-httpsclient==0.4.3
pyasn1==0.4.2
pyOpenSSL==17.5.0
requests==2.8.1
urllib3==1.22
其他配置打印:
>>> import ssl
>>> print(ssl.OPENSSL_VERSION)
OpenSSL 1.0.2n 7 Dec 2017
>>> from cryptography.hazmat.backends.openssl.backend import backend
>>> print(backend.openssl_version_text())
OpenSSL 1.1.0g 2 Nov 2017
有没有一种方法可以禁用设置/验证SSL,或者如果没有,我如何找到需要添加的密码以及如何做到这一点?在
当我尝试编写自己的适配器时:
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.ssl_ import create_urllib3_context
# This is the 2.11 Requests cipher string, containing 3DES.
CIPHERS = (
'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:'
'DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:'
'!eNULL:!MD5'
)
class DESAdapter(HTTPAdapter):
def init_poolmanager(self, *args, **kwargs):
context = create_urllib3_context(ciphers=CIPHERS)
kwargs['ssl_context'] = context
return super(DESAdapter, self).init_poolmanager(*args, **kwargs)
s = requests.Session()
s.mount(url, DESAdapter())
我得到以下错误:
AttributeError: 'super' object has no attribute 'init_poolmanager'
同时,我使用库
pycurl
来规避这个问题。在相关问题 更多 >
编程相关推荐