Python 2.6.1에서 urllib2를 수행하여 HTTPS를 통한 프록시를 지원합니다

StackOverflow https://stackoverflow.com/questions/1030113

  •  06-07-2019
  •  | 
  •  

문제

하다 urllib2 Python 2.6.1에서 HTTPS를 통한 대리자?

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

노트

현재 URLLIB2는 프록시를 통해 HTTPS 위치의 가져 오기를 지원하지 않습니다. 이것은 문제가 될 수 있습니다.

웹 사이트에 로그인을 자동화하고 문서를 다운로드하려고합니다. 유효한 사용자 이름/비밀번호가 있습니다.

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 오류 [Errno 8] _SSL.C : 480 : 프로토콜 위반으로 EOF가 발생했습니다.

도움이 되었습니까?

해결책

당신이 인용 한 Michael Foord의 기사가 Python 2.6.1로 업데이트되는지 확실하지 않습니까? 프록시 핸들러에게 프록시가 HTTP에만 적합하다고 말하는 대신, 지금하고있는 것처럼 https에도 등록하십시오 (물론 프록시 핸들러를 호출하고 그 변수를 DITT) : 작동하거나 작동하지 않을 수도 있지만, 당신은조차도 견딜 수 없는, 그리고 그게 확실한 일하지 않아!-)

다른 팁

Python 2.6.3 및 기타 여러 가지에서 수정 :

  • _bugs.python.org/issue1424152 (_ _로 http로 대체 ...)
  • http://www.python.org/download/releases/2.6.3/news.txt

    문제 #1424152 : 프록시를 통해 작업하는 동안 SSL을 지원하기 위해 httplib, urllib2를 수정하십시오. Christopher Li의 원본 패치, Senthil Kumaran의 변경.

다른 사람이 미래 에이 문제를 겪고 있다면 지금 HTTPS를 지원한다고 지적하고 싶습니다. 프록시가이를 지원하거나 파이썬 라이브러리를 무한 루프에 넣는 버그로 들어갈 위험이 있는지 확인하고 싶습니다 (이런 일이 일어났습니다. 나에게).

자세한 내용은 HTTPS 프록시 지원을 테스트하는 Python 소스의 UnitTest를 참조하십시오.http://svn.python.org/view/python/branches/release26-maint/lib/test/test_urllib2.py?r1=74203&r2=74202&pathrev=74203

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top