2012-10-22 2 views
5

मैं HTTP संबंधित सामग्री करने के लिए पाइथन अनुरोध लाइब्रेरी का उपयोग कर रहा हूं। मैंने कॉर्पोरेट आईएसए सर्वर से एनटीएलएम चुनौतियों का उत्तर देने के लिए प्रॉक्सी के रूप में कार्य करने के लिए अपने कंप्यूटर पर मुफ्त एनटीएलएमएप्स का उपयोग करके प्रॉक्सी सर्वर सेट किया है। हालांकि, प्रतिक्रिया हमेशा खाली दिखाई देती है, जैसा कि नीचे दिखाया गया है:पाइथन अनुरोधों में https प्रॉक्सी समर्थन लाइब्रेरी

>>> import requests 
>>> r = requests.get('https://www.google.com') 
>>> r.text 
u'<HTML></HTML>\r\n' 

हालांकि http अनुरोध में ऐसी कोई समस्या नहीं है। और, जब मैं urllib2 लाइब्रेरी का उपयोग कर रहा हूं, तो यह सही प्रतिक्रिया प्राप्त कर सकता है। मैंने 'अनुरोध' और 'urllib2' लाइब्रेरी का उपयोग करने के बीच संदेश अंतर की तुलना की, और पाया कि 'अनुरोध' 'GET' का उपयोग करता है, जबकि 'urllib2' 'कनेक्शन' का उपयोग करता है, जैसा कि नीचे दिए गए कच्चे संदेश में दिखाया गया है (पहला 'अनुरोध' लाइब्रेरी है)। क्या कोई जानता है कि कोई समाधान है या नहीं? क्या यह 'अनुरोध' पुस्तकालय का एक बग है? अग्रिम में धन्यवाद।

22.10.2012 11:01:41 Version 0.9.9.0.1 
*** Got client request header. 
*** Client header: 
===== 
GET https://www.google.com/ HTTP/1.1 
Host: www.google.com 
Proxy-Connection: Keep-Alive 
Accept-Encoding: gzip, deflate, compress 
Accept: */* 
User-Agent: python-requests/0.14.1 CPython/2.7.2 Darwin/12.1.0 

*** Client request header does not have 'Content-Length' or 'Transfer-Encoding' parameter and it must not have any body. 
*** Replacing values in client header...Done. 
*** New client header: 
===== 
GET https://www.google.com/ HTTP/1.1 
Host: www.google.com 
Proxy-Connection: Keep-Alive 
Accept-Encoding: gzip, deflate, compress 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) 

*** Connecting to remote server...(10.220.15.36:9000)...Done. 
*** Sending client request header to remote server...Done. 
*** Got remote server response header. 
*** Remote server header: 
===== 
HTTP/1.0 200 OK 
Content-Type: text/html 
Refresh: 0; URL=https://www.google.com/ 

*** Could not find server 'Content-Length' parameter. 
*** Authentication routine started. 
*** Authentication not required. 
*** Authentication routine finished. 
*** Sending remote server response header to client...Done. 
*** Sent 15 bytes to client. (all - 0, len - 0) 
*** Remote server closed connection. (Server buffer - 0 bytes) 
*** No server's data to send to the client. (server's buffer - 0 bytes) 
*** Termination conditions detected (remote server closed connection). Stop Request issued. 
*** Finishing procedure started. 
*** Closing thread...Done. 

संदेश 'urllib2' पुस्तकालय से भेजा:

22.10.2012 11:03:49 Version 0.9.9.0.1 
*** Got client request header. 
*** Client header: 
===== 
CONNECT www.google.com:443 HTTP/1.0 

*** Client request header does not have 'Content-Length' or 'Transfer-Encoding' parameter and it must not have any body. 
*** Replacing values in client header...Done. 
*** New client header: 
===== 
CONNECT www.google.com:443 HTTP/1.0 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) 

*** Connecting to remote server...(10.220.15.36:9000)...Done. 
*** Sending client request header to remote server...Done. 
*** Got remote server response header. 
*** Remote server header: 
===== 
HTTP/1.1 407 Proxy Authentication Required (The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied.) 
Via: 1.1 LASISA2 
Proxy-Authenticate: Negotiate 
Proxy-Authenticate: Kerberos 
Proxy-Authenticate: NTLM 
Connection: close 
Proxy-Connection: close 
Pragma: no-cache 
Cache-Control: no-cache 
Content-Type: text/html 
Content-Length: 718 

*** Server 'Content-Length' found to be 718. 
*** Authentication routine started. 
*** Got Error 407 - "Proxy authentication required". 
*** Authentication methods allowed: Negotiate, Kerberos, NTLM 
*** Using NTLM authentication method. 
*** Authorization in progress... 
*** Closing connection to the remote server...Done. 
*** Building environment for NTLM. 
*** Using custom NTLM flags: 06820000 
*** NTLM version with LM response only. 
*** NTLM Domain/Host/User: IGTMASTER/BEATLES.LOCAL/TFSBVTVA 
*** NTLM hashed passwords found. 
*** Environment has been built successfully. 
*** Connecting to remote server...(10.220.15.36:9000)...Done. 
*** Resetting remote server status...Done. (Server buffer - 651 bytes) 
*** Remote server buffer flushed. 
*** Fake NTLM header with Msg1: 
===== 
CONNECT www.google.com:443 HTTP/1.0 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) 
Proxy-Connection: Keep-Alive 
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAA 

*** Sending Fake NTLM header with Msg1...Done. 
*** There must be no body to send. 
*** Waiting for message 2 from remote server... 
*** Got remote server response header. 
*** Remote server header: 
===== 
HTTP/1.1 407 Proxy Authentication Required (Access is denied.) 
Via: 1.1 LASISA2 
Proxy-Authenticate: NTLM TlRMTVNTUAACAAAACQAJADgAAAAGgoECnmQdttSFW6oAAAAAAAAAAJAAkABBAAAABQLODgAAAA9JR1RNQVNURVICABIASQBHAFQATQBBAFMAVABFAFIAAQAOAEwAQQBTAEkAUwBBADIABAAaAGkAcwAuAGEAZAAuAGkAZwB0AC4AYwBvAG0AAwAqAGwAYQBzAGkAcwBhADIALgBpAHMALgBhAGQALgBpAGcAdAAuAGMAbwBtAAUAFABhAGQALgBpAGcAdAAuAGMAbwBtAAAAAAA= 
Connection: Keep-Alive 
Proxy-Connection: Keep-Alive 
Pragma: no-cache 
Cache-Control: no-cache 
Content-Type: text/html 
Content-Length: 0 

*** Server 'Content-Length' found to be 0. 
*** Got NTLM message 2 from remote server. 
*** Resetting remote server status...Done. (Server buffer - 0 bytes) 
*** Remote server buffer flushed. 
*** Sending Fake NTLM header (not body) with Msg3...Done. 
*** Fake NTLM header with Msg3: 
===== 
CONNECT www.google.com:443 HTTP/1.0 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) 
Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAF4AAAAAAAAAdgAAAAkACQBAAAAACAAIAEkAAAANAA0AUQAAAAAAAAB2AAAABoIAAElHVE1BU1RFUlRGU0JWVFZBQkVBVExFUy5MT0NBTMwaDvCTdLkOsE7vD6Tog1RoolpOLnh4WQ== 

*** End of NTLM authorization process. 
*** Authentication routine finished. 
*** Got remote server response header. 
*** Remote server header: 
===== 
HTTP/1.1 200 Connection established 
Proxy-Connection: close 
Connection: close 
Via: 1.1 LASISA2 

*** Remote server response to the 'CONNECT' request. It must not have any body. 
*** Authentication routine started. 
*** Authentication not required. 
*** Authentication routine finished. 
*** Sending remote server response header to client...Done. 
*** Lowered authentication flags down. As the code is neither 401 nor 407. 
*** Successful 'CONNECT' request detected. Going to tunnel mode. 
*** Resetting client status...Done. (Client buffer - 114 bytes) 
*** Resetting remote server status...Done. (Server buffer - 0 bytes) 
*** Request completed. 
*** Tunnelled 114 bytes to remote server. 
*** Tunnelled 1725 bytes to client. 
*** Tunnelled 186 bytes to remote server. 
*** Tunnelled 47 bytes to client. 
*** Tunnelled 142 bytes to remote server. 
*** Tunnelled 4096 bytes to client. 
*** Tunnelled 248 bytes to client. 
*** Tunnelled 2076 bytes to client. 
*** Tunnelled 4096 bytes to client. 
*** Tunnelled 1198 bytes to client. 
*** Remote server closed connection. (Server buffer - 0 bytes) 
*** Termination conditions detected (remote server closed connection). Stop Request issued. 
*** Finishing procedure started. 
*** Closing thread...Done. 

उत्तर

1

https प्रॉक्सी "जुड़ भी" यह जानबूझकर है urllib2 इसे उस तरह से करता है कि का उपयोग करना चाहिए। कनेक्ट सुरक्षित ट्रांसमिशन के लिए सुरंग स्थापित करता है जो HTTPS के लिए आवश्यक है।

+0

धन्यवाद। तो क्या आपको लगता है कि यह अनुरोध लाइब्रेरी का एक बग है? यदि हां, तो मुझे डेवलपर को यह जानने की आवश्यकता हो सकती है। – EricCui

0

जैसा कि मैं समझता हूं कि यह urllib3 में एक बग है जो अनुरोध हुड के तहत उपयोग करता है। यह बग रिपोर्ट देखें: https://github.com/shazow/urllib3/issues/50

+0

धन्यवाद। मैंने समस्या डेवलपर को समस्या पोस्ट की है। यह लिंक देखें: https://github.com/kennethreitz/requests/issues/905 – EricCui

+0

मुझे पूरा यकीन है कि वे पहले से ही जानते हैं, और समस्या पर काम कर रहे हैं :) – aychedee

+0

बग ठीक कर दिया गया है, और https प्रॉक्सी काम कर रहे हैं संस्करण 2.0.0+ जो जारी किया गया है :) – jpoppe

संबंधित मुद्दे