Relatif au #1083, peut-être. requests.get()
standard pour ce site/page particulier https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html
donne :
>>> import requests
>>> requests.get('https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
En utilisant request-toolbelt
SSLAdapter
pour essayer différentes versions SSL, elles échouent toutes, semble-t-il... voir les traces suivantes.
TLSv1 :
>>> adapter = SSLAdapter('TLSv1')
>>> s = requests.Session()
>>> s.mount('https://', adapter)
>>> s.get('https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 395, in get
return self.request('GET', url, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
SSLv3 :
>>> adapter = SSLAdapter('SSLv3')
>>> s = requests.Session()
>>> s.mount('https://', adapter)
>>> s.get('https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 395, in get
return self.request('GET', url, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
SSLv2 :
>>> adapter = SSLAdapter('SSLv2')
>>> s = requests.Session()
>>> s.mount('https://', adapter)
>>> s.get('https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 395, in get
return self.request('GET', url, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/adapters.py", line 378, in send
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='docs.apitools.com', port=443): Max retries exceeded with url: /2014/04/24/a-small-router-for-openresty.html (Caused by <class 'socket.error'>: [Errno 54] Connection reset by peer)
Notez que le dernier donne une erreur Connection reset by peer
, qui diffère des autres, mais je suis à peu près sûr que SSLv2 n'est de toute façon pas pris en charge par le serveur.
Pour le plaisir, j'ai également essayé de passer par des en-têtes plus appropriés lors de la dernière requête :
>>> headers = {
... 'Accept': u"text/html,application/xhtml+xml,application/xml",
... 'User-Agent': u"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36",
... 'Accept-Encoding': u"gzip,deflate",
... 'Accept-Language': u"en-US,en;q=0.8"
... }
>>> adapter = SSLAdapter('SSLv2')
>>> s = requests.Session()
>>> s.mount('https://', adapter)
>>> s.get('https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html', headers=headers)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 395, in get
return self.request('GET', url, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/Users/jaddison/.virtualenvs/techtown/lib/python2.7/site-packages/requests/adapters.py", line 378, in send
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='docs.apitools.com', port=443): Max retries exceeded with url: /2014/04/24/a-small-router-for-openresty.html (Caused by <class 'socket.error'>: [Errno 54] Connection reset by peer)
Pas de dés non plus. Voici à quoi ressemblent les informations de connexion HTTPS dans Chrome sur Mac :
Je ne suis pas sûr, mais certaines recherches sur Google indiquent qu'il s'agit probablement d'un problème de liste de chiffrement, qui est plus urllib3, je pense?
J'ai essayé de modifier DEFAULT_CIPHER_LIST
dans pyopenssl
, mais j'ai commencé à rencontrer des erreurs d'importation. À ce stade, il semblait que les choses étaient juste cassées, et il n'y avait pas encore vraiment de bonne façon d'aborder la résolution de cela.
Information sur la version:
OS X Mavericks
Python 2.7.5
OpenSSL 0.9.8y 5 février 2013 - (à partir de python -c "import ssl; print ssl.OPENSSL_VERSION"
)
demandes 2.2.1
demandes-toolbelt 0.2.0
urllib3 1.8
Malheureusement, cela n'a rien à voir avec le problème que vous avez identifié, et entièrement à l'OpenSSL merdique fourni par OS X par défaut. La version 0.9.8y a de vrais problèmes avec l'exécution des poignées de main SSL, et certains serveurs ne le tolèrent pas bien. L'utilisation de Python 3 sur ma boîte OS X (donc en utilisant un OpenSSL plus récent) révèle qu'il n'y a pas de problème.
Vous avez deux options :
env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install PyOpenSSL
.Ah, on dirait que je suivais un hareng rouge alors - je ne prévois pas de déployer quoi que ce soit sur OSX de toute façon. On dirait que je vais déplacer mes tests vers une virtualbox Linux. Désolé pour ce problème de longue haleine !
Pas besoin de s'excuser, poser cette question était la bonne chose à faire : c'est bizarrement une connaissance spécifique de savoir qu'OS X a ce problème. =)
Ok, c'est une déception. J'ai créé une image Virtualbox 32 bits du serveur Ubuntu 14.04 via Vagrant et tout cela se produit toujours, sauf pour le cas SSLv2, où il échoue car le protocole n'est pas inclus dans la version OpenSSL d'Ubuntu 14.04 (par conception, je crois - SSLv2 est vieux et obsolète).
Versions :
Ubuntu 14.04 32 bits (via la combinaison Vagrant/Virtualbox)
Python 2.7.6
demandes==2.2.1
demandes-toolbelt==0.2.0
urllib3==1.8.2
EDIT : j'ai oublié la version d'OpenSSL...
python -c "importer ssl; imprimer ssl.OPENSSL_VERSION"
OpenSSL 1.0.1f 6 janvier 2014
TLSv1 :
>>> import requests
>>> from requests_toolbelt import SSLAdapter
>>> adapter = SSLAdapter('TLSv1')
>>> s = requests.Session()
>>> s.mount('https://', adapter)
>>> s.get('https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 395, in get
return self.request('GET', url, **kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
raise SSLError(e)
SSLError: [Errno 1] _ssl.c:510: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
SSLv2 :
>>> import requests
>>> from requests_toolbelt import SSLAdapter
>>> adapter = SSLAdapter('SSLv3')
>>> s = requests.Session()
>>> s.mount('https://', adapter)
>>> s.get('https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 395, in get
return self.request('GET', url, **kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
raise SSLError(e)
SSLError: [Errno 1] _ssl.c:510: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
SSLv23 :
>>> import requests
>>> from requests_toolbelt import SSLAdapter
>>> adapter = SSLAdapter('SSLv23')
>>> s = requests.Session()
>>> s.mount('https://', adapter)
>>> s.get('https://docs.apitools.com/2014/04/24/a-small-router-for-openresty.html')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 395, in get
return self.request('GET', url, **kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, **send_kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/home/vagrant/.virtualenvs/techtown/local/lib/python2.7/site-packages/requests/adapters.py", line 385, in send
raise SSLError(e)
SSLError: [Errno 1] _ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Peut-être s'agit-il alors d'un problème de liste de chiffrement ? Ou la version OpenSSL utilisée ici est-elle toujours problématique ?
Je suis absolument disposé à consacrer du temps pour aider à déboguer cela si nécessaire... à condition que vous me donniez des instructions.
La machine virtuelle est en cours de téléchargement. Je ne peux pas reproduire cela sur ArchLinux.
Les stacktraces l'indiquent mais j'aimerais en être sûr : vous n'utilisez _pas_ PyOpenSSL mais uniquement la stdlib ?
@ t-8ch Merci d'avoir jeté un coup d'œil à cela, je suis un peu confus. OpenSSL me rend la vie vraiment difficile =(
@t-8ch Je n'ai pas installé PyOpenSSL si c'est ce que vous demandez ?
J'aurais supposé (peut-être à tort) que pip install requests
devrait me donner tout ce dont j'ai besoin pour appeler avec succès requests.get('...')
sur une page HTTPS. Ce qui, bien sûr, fonctionne pour la plupart, mais pas pour ce site porno pour une raison quelconque.
@jaddison C'est _surtout_ le cas. Malheureusement, la bibliothèque standard de Python 2.7 est nulle et ne prend pas en charge certaines fonctionnalités, telles que SNI.
Je me demande si c'est SNI...
@jaddison Il existe deux chemins de code différents dans les coulisses. Vous ne devriez pas avoir à vous en soucier, mais cela aide à savoir quand déboguer.
Cependant, je peux maintenant reproduire cela sur Ubuntu. Mais seulement sur Py2. Sur Py3 tout va bien.
Je soupçonne que @Lukasa a raison et que le serveur échoue lorsque le client n'utilise pas SNI.
Cela me dérange qu'une absence de SNI échoue de plusieurs manières différentes selon le serveur en question.
J'ai remarqué ce changement entre OpenSSL 1.0.1f et 1.0.1g (https://www.openssl.org/news/openssl-1.0.1-notes.html):
Add TLS padding extension workaround for broken servers.
EDIT : Ahh, tant pis - le bogue ne devrait pas varier entre Py 2 et 3, je pense.
@jaddison Pour tester s'il s'agit de SNI, vous devez installer les exigences SNI pour Python 2.
@Lukasa avait raison. Comparer:
$ openssl s_client -connect docs.apitools.com:443
CONNECTED(00000003)
139846853338768:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:762:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 517 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
$ openssl s_client -connect docs.apitools.com:443 -servername docs.apitools.com
... happy handshake here
Pour élaborer : la deuxième commande active la fonctionnalité SNI de openssl s_client
.
Vous pouvez a) passer à python3 b) installer des dépendances supplémentaires.
La stdlib n'a pour le moment aucun moyen de faire du SNI.
Merci pour les commentaires rapides. Vu qu'il n'y a pas de bug, je vais fermer ça... encore une fois.
Hé, merci les gars !! J'ai installé python3 sur mon mac et boum, ça marche.
Je veux juste intervenir et dire que j'ai rencontré ce problème sur OS X 10.9.5, Python 2.7.7 et OpenSSL 0.9.8zc.
J'ai pu résoudre mon problème d'établissement de liaison en :
brew install OpenSSL
cryptography
lié au nouveau OpenSSL ( env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptography
)pip install requests[security]
Merci, @Microserf. J'utilise à peu près les mêmes spécifications (10.9.5, Python 2.7.6 installé via Homebrew mais compilé avec le système fourni OpenSSL 0.9.8zg) et c'était tout mon processus pour obtenir requests
opérationnel pour Django :
brew install openssl
Installez requests
avec un tas de trucs SNI , compilés avec notre nouvelle installation d'OpenSSL. L'option [security]
installe simplement pyopenssl ndg-httpsclient pyasn1
env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install requests[security] urllib3
Et nous sommes prêts à partir :
"""
This may or may not be needed. See:
https://urllib3.readthedocs.org/en/latest/security.html#openssl-pyopenssl
"""
# from urllib3.contrib import pyopenssl
# pyopenssl.inject_into_urllib3()
import requests
# r = requests.get(...)
Existe-t-il une réponse définitive sur la façon de faire fonctionner cela sur Ubuntu? Je rencontre ce problème, et il semble que la seule réponse ici concerne la façon de faire fonctionner cela sur un Mac. La mise à niveau de toute notre base de code vers Python 3 n'est pas une option.
OK, je viens peut-être de répondre à ma propre question. Ce que j'ai fait se résume à :
sudo apt-get install libffi-dev
pip install pyOpenSSL ndg-httpsclient pyasn1
@lsemel merci, ça m'a juste fait gagner beaucoup de temps
@lsemel Êtes-vous sûr? Je l'ai essayé sur Ubuntu 15.10 et cela ne fonctionne toujours pas avec Python 2.7.10.
Cela fonctionne avec Python 2.7 sur Travis CI :
https://travis-ci.org/playing-se/swish-python
Ça marche maintenant ! J'ai simplement désinstallé pyOpenSSL :
pip uninstall pyOpenSSL
Peut-être devrions-nous seulement pyopenssl.inject_into_urllib3() si la version de Python est inférieure à 2.7.9 ? pyOpenSSL semble casser des trucs sur Ubuntu et Windows si la version Python est 2.7.10.
PyOpenSSL ne devrait rien casser. Si c'est le cas, c'est un bogue qui doit être signalé.
Je vais devoir me pencher là-dessus, mais y a-t-il une bonne raison d'injecter pyopenssl dans urllib3 si la version Python est 2.7.9 ou plus récente ?
Je pense à quelque chose comme ça :
# Check if Modern SSL with SNI support
try:
from ssl import SSLContext
from ssl import HAS_SNI
except ImportError:
# Attempt to enable urllib3's SNI support, if possible
try:
from .packages.urllib3.contrib import pyopenssl
pyopenssl.inject_into_urllib3()
except ImportError:
pass
Oui, il y en a souvent. Par exemple, sur OS X, la plupart des Pythons sont liés au système OpenSSL, qui est la version 0.9.8zg. PyOpenSSL, cependant, sera lié à un OpenSSL beaucoup plus récent (1.0.2). Cela fait de l'utilisation de PyOpenSSL une amélioration substantielle de la sécurité.
De plus, PyOpenSSL nous donne un bien meilleur accès à OpenSSL, nous permettant de le sécuriser plus efficacement.
OK, j'ai un peu joué avec ça maintenant.
Cela FONCTIONNE avec pyopenssl MAIS pas si ndg-httpsclient est installé.
Cependant, je peux le faire fonctionner avec ndg-httpsclient si je désinstalle pyasn1 en me donnant ces avertissements :
/usr/lib/python2.7/dist-packages/ndg/httpsclient/subj_alt_name.py:22: UserWarning: Error importing pyasn1, subjectAltName check for SSL peer verification will be disabled. Import error is: No module named pyasn1.type
warnings.warn(import_error_msg)
/usr/lib/python2.7/dist-packages/ndg/httpsclient/ssl_peer_verification.py:25: UserWarning: SubjectAltName support is disabled - check pyasn1 package installation to enable
warnings.warn(SUBJ_ALT_NAME_SUPPORT_MSG)
/usr/lib/python2.7/dist-packages/ndg/httpsclient/subj_alt_name.py:22: UserWarning: Error importing pyasn1, subjectAltName check for SSL peer verification will be disabled. Import error is: No module named pyasn1.type
warnings.warn(import_error_msg)
Même comportement sur Ubuntu 15.10 et Windows 10 avec Python 2.7.10 installé.
En effet, sans ndg-httpsclient, le support PyOpenSSL n'est pas utilisé.
Oui, je devrai creuser pourquoi cela fonctionne si SubjectAltName est désactivé. Une idée?
Le problème est presque certainement que vous utilisez différents OpenSSL dans chaque cas.
J'ai eu le même problème sur ma boîte Ubuntu 14.04 et Python 2.7.11
C'est du SNI
Ce qui a fonctionné pour moi était ceci:
Je pense qu'il y avait une vérification du temps d'installation sur urllib3 ou des demandes qui empêchaient les choses de fonctionner sans la désinstallation
@jvanasco qu'est-ce que vous utilisez pour installer ces packages ? Je suppose pip. Pourquoi installez-vous urllib3 et les requêtes séparément ?
Eh bien, j'avais besoin d'urllib3 dans le virtualenv ... mais je l'ai installé pour essayer d'obtenir les exigences installées par pip et easy_install. (j'ai utilisé les deux)
J'ai un indexeur Web et quelques URL se sont cassées. J'ai écrit un script rapide pour essayer ceux qui étaient cassés, et j'ai continué à réinstaller/supprimer+installer les packages dans les instructions urllib3 sur les problèmes SSL jusqu'à ce qu'ils fonctionnent.
Le 31 mai 2016, à 19h25, Ian Cordasco [email protected] a écrit :
@jvanasco qu'est-ce que vous utilisez pour installer ces packages ? Je suppose pip. Pourquoi installez-vous urllib3 et les requêtes séparément ?
—
Vous recevez ceci parce que vous avez été mentionné.
Répondez directement à cet e-mail, consultez-le sur GitHub ou désactivez le fil de discussion.
Je vois toujours ce problème et j'ai essayé les solutions de contournement suggérées.
J'ai mis à jour ma version python vers 2.7.11
J'ai installé les 3 packages supplémentaires.
J'ai essayé la séquence de désinstallation/installation suggérée par @jvanasco et j'ai toujours l'erreur SSLError
En utilisant également Ubuntu 14.04, malheureusement, il n'y a pas de mise à jour OpenSSL, je dois donc utiliser les solutions de contournement publiées ici et je n'ai pas de chance.
Des mesures supplémentaires que vous avez éventuellement prises ?
Merci
@Lekinho J'ai trouvé que faire un court script de test qui testait le domaine avec lequel j'avais des problèmes m'aidait.
c'était juste:
import requests
r = requests.get(bad_url)
print r.__dict__
@Lekinho Vous pouvez extraire pyopenssl des requêtes de votre code :
try:
from requests.packages.urllib3.contrib import pyopenssl
pyopenssl.extract_from_urllib3()
except ImportError:
pass
@Lekinho Si vous rencontrez toujours ce problème avec Python 2.7.11, il est fort probable que le serveur distant ne prenne pas en charge les paramètres TLS utilisés par les requêtes. Le serveur en question est-il disponible sur l'internet public ? Si oui, pouvez-vous me fournir l'URL ?
J'ai essayé l'importation pyopenssl comme suggéré.
Malheureusement, ce n'est pas accessible publiquement.
Cependant, j'ai les détails exacts de la version openSSL du serveur.
En gros, on tourne sur une machine virtuelle redhat, j'avais cet openSSL quand tout fonctionnait : openssl-1.0.1e-42.el6_7.4.x86_64
Puis nous avons fait une mise à jour redhat et il y a eu une mise à jour pour openssl : openssl-1.0.1e-48.el6_8.1.x86_64
Cette version a toujours le problème de mauvaise poignée de main lors de l'utilisation d'openssl sur Ubuntu 14.04.
Avez-vous des URL publiques avec lesquelles je peux essayer, pour voir si les solutions de contournement ont aidé à résoudre le problème et c'est juste cette combinaison unique que j'ai qui est le problème ?
La même machine fonctionne bien lorsque les requêtes REST sont envoyées via le navigateur (c'est-à-dire sans ubuntu openssl )
Merci
Pouvez-vous fournir la sortie de rpm -q --changelog openssl
, s'il vous plaît ?
[ admin@leke-2-2-8-11 ~]$ rpm -q --changelog openssl
Il semble que @Lekinho ait supprimé son compte github ? Pour la prochaine personne qui a des problèmes - il est possible que leur mise à niveau d'OpenSsl ou de Python ait cassé certaines liaisons c compilées. Chaque fois que j'ai une mise à niveau comme celle-ci, je supprime mon virtualenv ou tous les packages, puis en crée un nouveau.
@jvanasco je suis toujours là.
Je me demandais, avez-vous une URL publique avec laquelle je pourrais tester cela ? Je veux voir si la solution de contournement résout réellement le problème pour les cas confirmés (cela signifie que je n'ai rien foiré en essayant de le faire)
@Lukasa
sous-ensemble de changeset entre la version de travail et la version mise à jour :+1 :
Lun 02 mai 2016 Tomáš Mráz [email protected] 1.0.1e-48.1
correction CVE-2016-2105 - débordement possible dans l'encodage base64
correction CVE-2016-2106 - débordement possible dans EVP_EncryptUpdate()
correction CVE-2016-2107 - oracle de rembourrage dans AES-NI CBC-MAC cousu
correction CVE-2016-2108 - corruption de mémoire dans l'encodeur ASN.1
correction CVE-2016-2109 - DoS possible lors de la lecture des données ASN.1 de BIO
correction CVE-2016-0799 - problèmes de mémoire dans BIO_printf
Mer 24 février 2016 Tomáš Mráz [email protected] 1.0.1e-48
correction CVE-2016-0702 - attaque par canal latéral sur l'exponentiation modulaire
correction CVE-2016-0705 - double-free dans l'analyse de clé privée DSA
correction CVE-2016-0797 - corruption de tas dans BN_hex2bn et BN_dec2bn
Mar 16 février 2016 Tomáš Mráz [email protected] 1.0.1e-47
correction CVE-2015-3197 - Application de la suite de chiffrement SSLv2
désactiver SSLv2 dans la méthode TLS générique
Ven 15 janvier 2016 Tomáš Mráz [email protected] 1.0.1e-46
correction d'une fuite de mémoire de 1 octet dans l'analyse pkcs12 (#1229871)
documenter quelques options de la commande speed (#1197095)
Jeu 14 janvier 2016 Tomáš Mráz [email protected] 1.0.1e-45
corriger les horodatages de haute précision dans l'autorité d'horodatage
Lun 21 décembre 2015 Tomáš Mráz [email protected] 1.0.1e-44
correction CVE-2015-7575 - interdire l'utilisation de MD5 dans TLS1.2
Ven 04 décembre 2015 Tomáš Mráz [email protected] 1.0.1e-43
correction CVE-2015-3194 - crash de vérification de certificat avec paramètre PSS manquant
correction CVE-2015-3195 - Fuite de mémoire X509_ATTRIBUTE
correction CVE-2015-3196 - condition de concurrence lors de la gestion de l'indice d'identité PSK
Mar 23 juin 2015 Tomáš Mráz [email protected] 1.0.1e-42
Mettre à jour :
J'ai donc trouvé un travail autour de cela.
Fondamentalement, un collègue lisait sur le problème et a vu des articles sur la prise en charge de RHEL openssl pour le chiffrement ECC/ECDH n'étant pas à 100% pour une raison quelconque.
Nous avons essayé la demande à l'URL en désactivant explicitement les chiffrements ECDH (en ajoutant la négation du script openssl lui-même, c'est-à-dire openssl s_client -connect 10.85.103.218:8443 -cipher 'DEFAULT:!ECDH')
Nous avons pu nous connecter avec succès.
Voici la liste de chiffrement par défaut pour l'openssl sur Ubuntu 14.04
ECDH+ AESGCM:DH+AESGCM :ECDH+AES256:DH+AES256:ECDH+AES128:DH+ AES:ECDH+HIGH :DH+ HIGH:ECDH+3DES :DH+3 DES:RSA+AESGCM :RSA+ AES:RSA+HIGH :RSA +3DES : !aNULL : !eNULL : !MD5
Donc, avec cette connaissance, j'ai utilisé pyopenssl pour imprimer mes chiffrements SSL par défaut et supprimé explicitement chaque chiffrement ECDH de la chaîne. Est-ce que cela a bien été fait dans le bloc pour importer urllib3 à partir du package de requêtes (c'est-à-dire avant de commencer à faire des requêtes réelles) voici quelque chose de similaire :
https://github.com/kennethreitz/requests/issues/1308
Je me rends compte qu'il peut y avoir des risques de sécurité pour cette action, mais au moins cela nous fait avancer et nous éclaire davantage.
Pourquoi ces chiffrements particuliers semblent être un problème pour le RHEL, je n'en ai aucune idée.
J'essaierai quand j'aurai plus de temps pour voir quels changements RHEL particuliers ont pu introduire cela et lire davantage sur le but.
Quelqu'un en sait-il plus sur les chiffrements en général ?
J'ai le même problème... ARG...
La frustration de @lukas-gitl ne vous aidera pas à résoudre le problème. Nous fournir des informations sur votre environnement (de préférence une partie - sinon la totalité - des informations que nous avons demandées à Lekinho ci-dessus) vous aidera.
@ sigmavirus24 Excuses. Je voulais fournir plus d'informations, puis j'ai été écarté (puisque je n'avais pas le temps pour cela). J'utilise Ubuntu 14.04, python 2.7.6 et la dernière version des requêtes sur pip. Cela se produit lorsque j'essaie d'accéder en tant que point de terminaison API Gateway (ils peuvent être assez restrictifs).
J'ai essayé de supprimer le virtualenv et de le régénérer, mais malheureusement, cela ne l'a pas résolu.
Faites-moi savoir ce dont vous avez besoin d'autre. Je suis passé à nodejs pour le moment mais je serais heureux d'aider à une résolution.
@ lukas-gitl Il est fort probable que le serveur que vous contactez nécessite des chiffrements que vous n'offrez pas ou des versions TLS que vous n'offrez pas. Cela peut être lié à l'OpenSSL que vous avez installé. Vous devriez également essayer d'exécuter pip install requests[security]
: vous rencontrez peut-être des problèmes avec SNI.
Ouais, j'ai déjà essayé ça aussi. Permettez-moi de mettre un script de test rapide ensemble ici afin que nous soyons sur la même page.
virtualenv -p /usr/bin/python2.7 env
source env/bin/activer
demandes d'installation pip
demandes d'installation pip [sécurité]
echo 'requêtes d'importation' >> test.py
echo 'requests.get("https://API_ID.execute-api.us-west-2.amazonaws.com/ENV/ENPOINT")' >> test.py
python test.py
Et quelle erreur spécifique voyez-vous?
.../env/local/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:318:
SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning.
SNIMissingWarning
.../env/local/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Traceback (most recent call last):
File "test.py", line 2, in <module>
requests.get("https://sbsz8eqowe.execute-api.us-west-2.amazonaws.com/dev/segment_to_s3_webhook")
File ".../env/local/lib/python2.7/site-packages/requests/api.py", line 71, in get
return request('get', url, params=params, **kwargs)
File ".../env/local/lib/python2.7/site-packages/requests/api.py", line 57, in request
return session.request(method=method, url=url, **kwargs)
File ".../env/local/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File ".../env/local/lib/python2.7/site-packages/requests/sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File ".../env/local/lib/python2.7/site-packages/requests/adapters.py", line 477, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure```
Je suis donc essentiellement obligé de mettre à jour vers une version ultérieure de python?
Ok, ces deux avertissements suggèrent que vos requêtes n'utilisent pas réellement les extensions de requests[security]. Cela suggère fortement que le Python que vous exécutez n'est _pas_ celui que vous avez installé dans votre environnement virtuel : l'extension requests[security] devrait supprimer ces avertissements.
@lukas-gitl, veuillez consulter mes notes ci-dessus.
As-tu accès au serveur ? comparer la liste des chiffrements par défaut pour le serveur et le client.
Il est fort probable que l'un d'entre eux ne supporte pas le premier ensemble de chiffrements dans l'autre, d'où l'erreur.
Vous pouvez vérifier les chiffrements par défaut avec un script simple comme celui que j'ai utilisé ici :
importer système
importer le système d'exploitation
importer SSL
imprimer(ssl.OPENSSL_VERSION)
sys.path.insert(1, os.path.abspath(os.path.join(os.getcwd(), 'lib')))
sys.path.append('/usr/local/lib/python2.7/dist-packages')
demandes d'importation
à partir de requests.packages.urllib3.contrib importer pyopenssl
pyopenssl.inject_into_urllib3()
imprimer pyopenssl.DEFAULT_SSL_CIPHER_LIST
Ok, maintenant je suis vraiment confus. Le message d'erreur provient de l'environnement virtuel. Alors, comment ceux-ci pourraient-ils provenir de là alors que j'exécute à partir d'un environnement python différent?
J'ai donc essayé pip install pyopenssl ndg-httpsclient pyasn1
au lieu de pip install requests[security]
et ça a marché...
Aha, je soupçonne que votre pip est trop vieux pour gérer les extras.
Ah, putain. Ça explique beaucoup. Merci beaucoup pour votre aide!
J'ai rencontré le même problème ici, je devais envoyer une requête GET en suivant le code :
requests.get('https://mdskip.taobao.com/core/initItemDetail.htm?itemId=530444505608&showShopProm=false&queryMemberRight=true&isRegionLevel=false&tmallBuySupport=true&addressLevel=2&sellerPreview=false&isForbidBuyItem=false&cachedTimestamp=1466835924196&offlineShop=false&household=false&tryBeforeBuy=false&isSecKill=false&service3C=false&isApparel=true&isUseInventoryCenter=false&cartEnable=true&isAreaSell=false&callback=setMdskip×tamp=1466841669969&isg=Al9faN3XWRpIf6UEoQ88UH/1b7np0rNm&ref=https%3A%2F%2Fs.taobao.com%2Fsearch%3Fq%3D%25E6%258B%2589%25E5%25A4%258F%25E8%25B4%259D%25E5%25B0%2594%26imgfile%3D%26commend%3Dall%26ssid%3Ds5-e%26search_type%3Ditem%26sourceId%3Dtb.index%26spm%3Da21bo.50862.201856-taobao-item.1%26ie%3Dutf8%26initiative_id%3Dtbindexz_20160625')
malheureusement, j'ai reçu les informations d'erreur:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/requests/api.py", line 71, in get
return request('get', url, params=params, **kwargs)
File "/Library/Python/2.7/site-packages/requests/api.py", line 57, in request
return session.request(method=method, url=url, **kwargs)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File "/Library/Python/2.7/site-packages/requests/adapters.py", line 477, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'SSL23_GET_SERVER_HELLO', 'sslv3 alert handshake failure')],)",)
J'ai essayé de préparer l'installation d'openssl, la mise à niveau de l'openssl, l'installation de pip --upgrade pip, les demandes d'installation de pip, la demande d'installation de pip [sécurité], mais cela n'a pas fonctionné.
Cependant, lorsque je tape openssl version
j'ai OpenSSL 0.9.8zh 14 Jan 2016
, je ne sais pas si tout va bien.
Y a-t-il quelqu'un qui pourrait m'aider?
@ jschwinger23 Pouvez-vous également exécuter pip install pyopenssl ndg-httpsclient pyasn1
s'il vous plaît ?
@Lukasa Merci pour votre réponse. J'ai reconfirmé que je les avais installés:
$ pip install pyopenssl ndg-httpsclient pyasn1
Requirement already satisfied (use --upgrade to upgrade): pyopenssl in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
Requirement already satisfied (use --upgrade to upgrade): ndg-httpsclient in /Library/Python/2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): pyasn1 in /Library/Python/2.7/site-packages
mais le code est toujours en panne.
Quoi qu'il en soit, j'ai compris que tout se passait bien en Python3 et je suis heureux de pouvoir coder en python3.
Merci beaucoup.
J'ai suivi les instructions ci-dessus, mais je rencontre toujours ce problème
```
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/requests/api.py", line 71, in get
return request('get', url, params=params, **kwargs)
File "/Library/Python/2.7/site-packages/requests/api.py", line 57, in request
return session.request(method=method, url=url, **kwargs)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File "/Library/Python/2.7/site-packages/requests/adapters.py", line 477, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'SSL23_GET_SERVER_HELLO', 'sslv3 alert handshake failure')],)",)
des idées?
``````
@rohanpai Il est probable que vous n'ayez aucun chevauchement de chiffrement, ou que le serveur distant ne soit pas satisfait des versions que vous proposez, ou que vous soyez censé fournir un certificat client et que vous ne le soyez pas. Difficile de donner des conseils plus précis. Essayez ceci pour étudier le problème.
Sur Ubuntu 14.04LTS, je devais faire ceci :
sudo pip install ndg-httpsclient pyasn1 --upgrade
Notez que dans Ubuntu, il n'est pas possible de mettre à niveau/supprimer pyopenssl
car il appartient au système d'exploitation.
La solution de Markstrefford a également fonctionné pour moi sur mac os sierra
La solution de @markstrefford a également fonctionné pour moi.
Juste un avertissement pour tous ceux qui utilisent OpenSSL 1.1 :
Vous rencontrerez également ce problème, même en forçant les adaptateurs TLS, lorsque le serveur distant propose des courbes elliptiques comme première option.
La cause est : http://bugs.python.org/issue29697
Salut les gars! J'ai le même problème avec le serveur suivant https://34.200.105.231/SID/Service.svc?wsdl
. J'ai tout essayé et je saute de et vers les 2 mêmes erreurs:
requests.exceptions.SSLError: ("bad handshake: SysCallError(-1, 'Unexpected EOF')",)
requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:661)
Des idées? @Lukasa , je vois quelques problèmes avec le certificat, mais il semble que cela ne devrait pas être si grave : https://sslanalyzer.comodoca.com/?url=34.200.105.231
Le certificat ne causera généralement pas ce problème : ce problème est causé par le serveur qui nous raccroche au nez, il est donc généralement le résultat d'une incompatibilité de suite de chiffrement. Dans ce cas, c'est exactement ce qui se passe comme vous pouvez le voir ici .
Il s'agit d'un serveur qui, franchement, ne devrait jamais être exposé à Internet ouvert. Il n'existe aucune méthode sécurisée pour communiquer avec ce serveur : aucune, zéro. C'est pourquoi la poignée de main échoue : les requêtes n'acceptent que les suites de chiffrement modernes et aucune suite de chiffrement moderne n'est disponible sur ce serveur. La meilleure option est TLS_RSA_WITH_3DES_EDE_CBC_SHA
, une option que nous avons supprimée car elle est vulnérable aux attaques pratiques sur le transfert de données à grande échelle.
Si ce serveur vous appartient, veuillez le mettre à niveau vers une meilleure implémentation TLS ou modifier les paramètres. Sinon, mon premier conseil est de reconsidérer la possibilité de parler à ce serveur. Si vous le devez, vous pouvez utiliser le code ici , mais je vous recommande fortement de faire pression sur l'opérateur du serveur pour qu'il répare ce gâchis.
@Lukasa - merci d'avoir travaillé avec tout le monde ! J'ai lu et essayé la plupart de ceci
Lors de l'exécution d'un script sous Windows, tout fonctionne.
Lors de l'exécution du script sur OSX, recevez :
raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: SysCallError(-1, 'Unexpected EOF')",)
Je ne suis pas convaincu que ce n'est pas le serveur lui-même, mais j'apprécierais toute aide supplémentaire pour confirmer et/ou me sortir de ce terrier de lapin. Ce serait une énorme victoire de le faire fonctionner.
env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install --force-reinstall --no-cache-dir {PACKAGE}
Je ne suis pas sûr à 100% que l'installation contre l'openssl ait réellement fait quoi que ce soit, car cela semblait agir de la même manière que l'installation sans (par exemple, la vitesse et la messagerie semblaient toutes identiques)
Comme indiqué dans un autre fil (ci-dessus) se connectant directement via openSSL appears
pour être heureux ?
openssl s_client -connect XXX.102.7.147:443
CONNECTED(00000003)
write:errno=0
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 198 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1493384325
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
---
Euh ... OpenSSL est techniquement correct, mais OpenSSL n'a négocié aucun chiffrement (c'est-à-dire qu'il semble avoir négocié SSL_NULL_WITH_NULL_NULL
. Pouvez-vous exécuter ssllabs sur votre serveur et vérifier quelles suites de chiffrement il prend en charge?
@Lukasa Ce n'est pas exposé sur Internet, y a-t-il une sonde de ligne de commande que je pourrais déclencher et qui pourrait vous fournir un aperçu adéquat?
Vous pouvez essayer cipherscan .
@Lukasa l'a installé ... son jeu est bancal (pas de sortie, je le regarde) ... je posterai si je trouve quelque chose qui pourrait être transmis. Merci pour les conseils !
@Lukasa merci beaucoup pour votre aide - n'a jamais fait fonctionner le cipherscan - mais a corrigé nos problèmes. Cela n'avait rien à voir avec tout cela, et c'était une stupide inadéquation IP dans nos environnements... leçons apprises ! Merci ...
Pas de problème du tout, content que ça s'arrange !
streamlink -l debug h ttpstream://https :// www.arconaitv.us/stream.php?id=43 pire
[cli][info] streamlink s'exécute en tant que root ! Fais attention!
[cli][déboguer] OS : Linux-4.14.0-041400-generic-x86_64-with-Ubuntu-14.04-trusty
[cli][débogage] Python : 2.7.6
[cli] [débogage] Lien de diffusion : 0.13.0+27.g2ff314c
[cli] [debug] Requêtes (2.19.1), Chaussettes (1.6.7), Websocket (0.48.0)
[cli][info] Plugin correspondant trouvé http pour l'URL h ttpstream://https :// www.arconaitv.us/stream.php?id=43
[plugin.http][debug] URL= https://www.arconaitv.us/stream.php?id=43; paramètres={}
[cli][info] Flux disponibles : en direct (le pire, le meilleur)
[cli][info] Flux d'ouverture : en direct (http)
[cli][debug] Pré-mise en mémoire tampon de 8192 octets
[cli][info] Premier joueur : /usr/bin/vlc
[cli][debug] Écriture du flux dans la sortie
[cli][info] Stream terminé
[cli][info] Fermeture du flux actuellement ouvert..
essayé mais pas de chance
atlast got it working tvplayer sur pc local. J'ai installé Tinyproxy sur mon PC local mais dans vps httpproxy xxxx ne fonctionne pas.
est-ce que tinyproxy est ok ou j'ai besoin d'un autre serveur proxy à installer sur mon ordinateur local.
Salut @maanich , cela ne semble pas être directement lié à ce problème, ou être un rapport de défaut pour les demandes, ce à quoi ce suivi de problème est réservé. Si vous avez des questions sur la configuration du système, celles-ci seront mieux traitées sur une plate-forme comme StackOverflow . Merci!
streamlink --https-proxy " http://8xxxx :8000/" --tvplayer-email [email protected] --tvplayer-password vcvdf3 --http-no-ssl-verify https://tvplayer.com/watch /itv meilleur --player-no-close --stdout | /var/tmp/youtube/ffmpeg -y -i pipe:0 -vcodec copy -acodec copy -flags -global_header -hls_flags delete_segments -hls_time 10 -hls_list_size 6 /mnt/hls/arc.m3u8
ffmpeg version 4.0-statique https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2018 les développeurs FFmpeg
construit avec gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
configuration : --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 -- enable-libxml2 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame -- enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable -libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavdevice 58. 3.100 / 58. 3.100
libavfilter 7. 16.100 / 7. 16.100
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
libpostproc 55. 1.100 / 55. 1.100
[console][info] streamlink s'exécute en tant que root ! Fais attention!
[console][info] Plugin TVplayer correspondant trouvé pour l'URL https://tvplayer.com/watch/itv
Erreur: impossible URL ouverte: https://live.tvplayer.com/stream.m3u8?id=204&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cCo6XC9cL2xpdmUudHZwbGF5ZXIuY29tXC9zdHJlYW0ubTN1OD9pZD0yMDQiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE1MjkwNTc0OTR9LCJJcEFkZHJlc3MiOnsiQVdTOlNvdXJjZUlwIjoiNjIuMjEwLjE0Mi42NlwvMzIifX19XX0_&Signature=mHOteYcUu4QsbGD N0E ~ 7meDUGT8VN7bVOBAHa-0Mk6ROA9XHYx3aIAZMAo3dFjOGuWk-3MszJzRFHdv ~ ~ -CCsmX3D8XQa2zvzfuIWfMAT yDshroXBN25iW6ZJ0-7lGla00jMTUpm5sW-uDy18OkiBWgGvDVas2Lz-EW ~ 5 LTw2YWvEpqkvRB9OpcsHJj9RRQLuDVjwYKXwKvHTJmB1J ~sGE3aigaL7AZyBaIAUMcpk-xYMpDuPV9BsBN9AT397lFfRPFt155u~yeBHZ4JlUN2GINUBt0-CzGuYVq3dsO kYYEZJo9cQTVhArpo7ek03VbDP5egtCM8obN63AEkA__&Key-Pair-Id=APKAJGWDVCU5SXAPJELQ (erreur client 403)
pipe:0 : données non valides trouvées lors du traitement de l'entrée
des conseils s'il vous plaît n quel serveur proxy est bon pour streamlink le cas échéant
Commentaire le plus utile
Malheureusement, cela n'a rien à voir avec le problème que vous avez identifié, et entièrement à l'OpenSSL merdique fourni par OS X par défaut. La version 0.9.8y a de vrais problèmes avec l'exécution des poignées de main SSL, et certains serveurs ne le tolèrent pas bien. L'utilisation de Python 3 sur ma boîte OS X (donc en utilisant un OpenSSL plus récent) révèle qu'il n'y a pas de problème.
Vous avez deux options :
env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install PyOpenSSL
.