2009-06-23 6 views
6

Python 2.6.1의 urllib2은 https를 통한 프록시를 지원합니까?Python 2.6.1의 urllib2는 https를 통한 프록시를 지원합니까?

나는 http://www.voidspace.org.uk/python/articles/urllib2.shtml에서 다음을 발견했습니다

NOTE

Currently urllib2 does not support fetching of https locations through a proxy. This can be a problem.

나는 웹 사이트 및 다운로드 문서에 로그인을 자동화 노력하고있어 나는 유효한 사용자 이름/암호가 있습니다.

proxy_info = { 
    'host':"axxx", # commented out the real data 
    'port':"1234" # commented out the real data 
} 

proxy_handler = urllib2.ProxyHandler(
       {"http" : "http://%(host)s:%(port)s" % proxy_info}) 
opener = urllib2.build_opener(proxy_handler, 
     urllib2.HTTPHandler(debuglevel=1),urllib2.HTTPCookieProcessor()) 
urllib2.install_opener(opener) 

fullurl = 'https://correct.url.to.login.page.com/user=a&pswd=b' # example 
req1 = urllib2.Request(url=fullurl, headers=headers) 
response = urllib2.urlopen(req1) 

나는이 HTTPS를 사용하여 유사한 페이지 위해 일하지만 했어 나는 프록시를 통해 얻을하지 않습니다 생각 - 그것은 단지 내가 프록시를 지정하지 않았을 때와 같은 방식으로 붙어됩니다. 프록시를 통해 나가야합니다.

기본 인증을 사용하지 않고 인증해야하지만 urllib2는 https 사이트 (URL을 통해 사이트에 사용자 이름/비밀번호를 제공)를 통과 할 때 인증을 알아낼 수 있습니까?

편집 : 아니, 나는

proxies = { 
     "http" : "http://%(host)s:%(port)s" % proxy_info, 
     "https" : "https://%(host)s:%(port)s" % proxy_info 
    } 

    proxy_handler = urllib2.ProxyHandler(proxies) 

테스트 그리고 오류 얻을 :

urllib2.URLError: urlopen error [Errno 8] _ssl.c:480: EOF occurred in violation of protocol

답변

3

내가 마이클 Foord의 문서는, 당신이 인용 것으로, 파이썬 2.6으로 업데이트 모르겠어요. 1 - 시도 해보지 않으시겠습니까? ProxyHandler를 호출하기 전에 프록시가 단지 http에 유용하다는 것을 알려주는 대신, https에도 등록하십시오 (물론 ProxyHandler를 호출하기 전에 한 번만 변수를 포맷해야합니다. DICT) : 그 또는 작동하지 않을 수 있지만, 당신은 심지어 을 시도하고, 그 확실히작동 아니다 -)

+0

아악, 그것은 나를 – stefanB

+0

불행히도의 'https'키와 프록시를 추가 (이 파이썬에서 실행이 좋을 것이다 아직도 내가 곱슬 곱슬와 함께 필요한 것을 알아 냈어요 BTW하지만) 해보자 :)있어 당신이 ProxyHandler에게 전달하는 dict에서 AFAIK는 CONNECT HTTP 메소드에 대한 지원이 없다고 문제를 해결하지 않을 것입니다. PyCurl을 사용하는 것이 가장 쉬운 해결 방법이지만 PyCurl에서의 Windows 지원 부족 (또는 최소한의 설치 용이성)은 코드를 배포하는 데 큰 장애물이 될 수 있습니다. – Tom

3
다른

Incase의 사람이 내가 원하는 미래에이 문제에있다! 프록시가 https 프록시를 지원한다는 점을 지적하고, 프록시가 프록시를 지원하는지 확인하거나 파이썬 라이브러리를 무한 루프에 넣는 버그에 빠질 위험이 있습니다 (이것은 나에게 일어난 일입니다). http://svn.python.org/view/python/branches/release26-maint/Lib/test/test_urllib2.py?r1=74203&r2=74202&pathrev=74203

+0

+1 정보 주셔서 감사합니다 – stefanB

+0

+1 파이썬 소스 단위 테스트에 연결하기 위해 – charmoniumQ

6

파이썬 2.6.3과 다른 여러 지점에서 수정 :

  • _bugs

    자세한 정보를 지원 프록시 HTTPS를 테스트하는 파이썬 소스의 유닛 테스트를 참조하십시오. python.org/issue1424152 (_을 http로 바꾸십시오)

  • http://www.python.org/download/releases/2.6.3/NEWS.txt

    문제 # 1424152 : 프록시를 사용하는 동안 httplib, urllib2가 SSL을 지원하도록 수정되었습니다. Christopher Li의 원본 패치, Senthil Kumaran의 변경 사항

+0

+1 정보 주셔서 감사합니다 – stefanB