urllib2 그리고 프록시
urllib2로 프록시를 사용할 수 있다.
# 프록시 주소와 포트:
proxy_info = { 'host' : 'proxy.myisp.com',
'port' : 3128
}
# 프록시를 위하여 처리자를 만든다
proxy_support = urllib2.ProxyHandler({"http" :
"http://%(host)s:%(port)d" % proxy_info})
# 이 처리자를 사용하는 개방자(opener)를 만든다:
opener = urllib2.build_opener(proxy_support)
# 다음 이 개방자를 urllib2를 위한 기본 개방자로 설치한다:
urllib2.install_opener(opener)
# 이제 HTTP 요청을 전송할 수 있다:
htmlpage =
urllib2.urlopen("http://sebsauvage.net/").read(200000)
이 트릭이 멋진 이유는 전체 프로그램을 위하여 프록시 매개변수들을 설정해 주기 때문이다.
프록시에 인증이 필요하면, 역시 그것도 할 수 있다!
proxy_info = { 'host' :
'proxy.myisp.com',
'port' : 3128,
'user' : 'John Doe',
'pass' : 'mysecret007'
}
proxy_support = urllib2.ProxyHandler({"http" :
"http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info})
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
htmlpage =
urllib2.urlopen("http://sebsauvage.net/").read(200000)
(이 코드 조각은 주로 http://groups.google.com/groups?selm=mailman.983901970.11969.python-list%40python.org에서 영감을 얻었다.
)
파이썬 2.4.2부터, urllib2는 오직 다음의 프록시 인증 방법만 지원한다: Basic 그리고 Digest.
프록시가 (윈도우즈/IE-종속적인) NTLM을 사용하면, 운이 따르지 않는 것이다.
이 트릭 외에도, 더 간단하게 프록시를 설정하는 방법이 있다:
import os
os.environ['HTTP_PROXY'] = 'http://proxy.myisp.com:3128'
os.environ['FTP_PROXY']로도 똑같이 할 수 있다.