2015-03-06 35 views
5

Desidero eseguire il debug di alcune richieste python utilizzando il proxy charles.verifica le richieste Python con il proxy charles per HTTPS

ho bisogno di includere il certificato per Charles sulla chiamata, ma non funziona

import requests 
endpoint_url = 'https://www.httpsnow.org/' 
r = requests.get(endpoint_url, verify=True, cert='/Users/iosdev/DopPy/charles.crt') 

print "empexo" 
print r 

ho aggiunto l'indirizzo https su Charles,

ottengo su Charles:

SSLHandshake: connessione remota host chiusa durante l'handshake

e pitone il registro con l'errore

empexo 
Traceback (most recent call last): 
    File "/Users/iosdev/DopPy/GetCelebs.py", line 15, in <module> 
    r = requests.get(endpoint_url, verify=True, cert='/Users/iosdev/DopPy/charles.crt') 
    File "/Users/iosdev/VenvPY26/lib/python2.6/site-packages/requests/api.py", line 65, in get 
    return request('get', url, **kwargs) 
    File "/Users/iosdev/VenvPY26/lib/python2.6/site-packages/requests/api.py", line 49, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "/Users/iosdev/VenvPY26/lib/python2.6/site-packages/requests/sessions.py", line 461, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/Users/iosdev/VenvPY26/lib/python2.6/site-packages/requests/sessions.py", line 573, in send 
    r = adapter.send(request, **kwargs) 
    File "/Users/iosdev/VenvPY26/lib/python2.6/site-packages/requests/adapters.py", line 431, in send 
    raise SSLError(e, request=request) 
requests.exceptions.SSLError: [Errno 336265225] _ssl.c:341: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib 

Process finished with exit code 1 

risposta

4

ho trovato questa discussione mentre stavo risoluzione di un problema simile. Nello scenario in cui sono stato eseguito l'argomento cert veniva utilizzato per definire il percorso di un file ".crt" quando l'argomento verify avrebbe dovuto essere utilizzato.

L'uso corretto ha finito per assomigliare:

requests.get(endpoint_url, verify='/path/to/file.crt') 

vedere la documentazione richieste per maggiori dettagli: http://docs.python-requests.org/en/master/user/advanced/#ssl-cert-verification


Per inciso, trovo che impiega la capacità di richiesta di specificare il percorso di un ".crt" tramite la variabile ambientale REQUESTS_CA_BUNDLE più efficace quando si utilizza Charles Proxy per il debugging locale.

esecuzione qualcosa di simile a quanto segue in guscio evita di dover specificare il percorso ".crt" Charles' per ogni richieste di chiamata:

REQUESTS_CA_BUNDLE=/path/to/file.crt 
export REQUESTS_CA_BUNDLE 
Problemi correlati