urllib2를 사용하고 다른 IP 주소에서 요청하고 싶습니다.다른 IP 주소에서 요청
나는이 문제를 확인했지만 나는 운이없는 오전 : 링크에서 Source interface with Python and urllib2
코드 :
class BoundHTTPHandler(urllib2.HTTPHandler):
def __init__(self, source_address=None, debuglevel=0):
urllib2.HTTPHandler.__init__(self, debuglevel)
self.http_class = functools.partial(httplib.HTTPConnection,
source_address=source_address)
def http_open(self, req):
return self.do_open(self.http_class, req)
# test
handler = BoundHTTPHandler("192.168.1.1", 0)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
urllib2.urlopen("http://google.com/").read()
오류 : 형식 오류 : 초기화() 예기치 않은 키워드 인수 'source_address'
있어그리고 urllib2를 사용하기 전에이 코드를 어떻게 실행합니까?
import socket
true_socket = socket.socket
def bound_socket(*a, **k):
sock = true_socket(*a, **k)
sock.bind((sourceIP, 0))
return sock
socket.socket = bound_socket
그렇다면 bound_socket 함수를 사용하면됩니다.
편집 파이썬 버전이 source_address를 지원하지 않는다고 생각합니다. 따라서 나는 오류가 발생합니다.
그럼 소켓 코드를 사용해 보겠습니다.
당신의 파이썬 버전은 무엇입니까? – jfs
여기에 monkey-patches'socket'이있는 코드 예제가 있으며, 파이썬 2.4+에서'urllib2'에 대한 SSL 클라이언트/서버 인증서 검증을 지원하기 위해'HTTPSHandler()'를 정의합니다 (https://gist.github.com/). zed/1347055). 이것은 파이썬 2.4+에서'source_address'를 활성화 할 수 있음을 보여줍니다 (이것은 ssl을 활성화하는 것보다 간단합니다). – jfs
세 바스 챤이 옳습니다. 파이썬 버전은 무엇입니까? 파이썬 2.6에서는 HTTPConnection이 source_address를 __init __()의 인수로 사용하지 않습니다. –