HTTPS

2015-03-06 11 views
5

के लिए चार्ल्स प्रॉक्सी के साथ पाइथन अनुरोधों की जांच करें मैं चार्ल्स प्रॉक्सी का उपयोग करके कुछ पायथन अनुरोधों को डीबग करना चाहता हूं।HTTPS

मैं फोन पर चार्ल्स के लिए प्रमाण पत्र शामिल करने की जरूरत है, लेकिन

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 

मैं चार्ल्स पर https पता जोड़ दिया,

मैं चार्ल्स पर मिलता है काम नहीं कर रहा:

एसएसएलहैंडशेक: हैंडशेक के दौरान रिमोट होस्ट बंद कनेक्शन

और त्रुटि

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 

उत्तर

4

साथ लॉग अजगर पर मैं जब मैं एक ऐसी ही समस्या का निवारण किया गया था इस सूत्र मिल गया। परिदृश्य में मैंने cert तर्क में भाग लिया था जिसका उपयोग ".crt" फ़ाइल के पथ को परिभाषित करने के लिए किया जा रहा था जब verify तर्क का उपयोग किया जाना चाहिए था।

सही उपयोग की तरह लग रही समाप्त हो गया: अलग http://docs.python-requests.org/en/master/user/advanced/#ssl-cert-verification


एक के रूप में मैं एक के लिए पथ निर्दिष्ट करने के लिए अनुरोध की क्षमता को रोजगार मिल:

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

अधिक जानकारी के लिए अनुरोध 'दस्तावेज़ देखें स्थानीय डीबगिंग के लिए चार्ल्स प्रॉक्सी का उपयोग करते समय REQUESTS_CA_BUNDLE पर्यावरणीय चर के माध्यम से ".crt"।

की तरह कुछ चल रहा है शेल में निम्न चार्ल्स '' .crt "के लिए हर अनुरोध कॉल करने के लिए पथ निर्दिष्ट करने के लिए बचाता है:

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