Форум сайта python.su
скажите пожалуйста, если каждый поток ставит себе соксХендлер, чтобы работать через свою прокси, как получается так что у всех эти прокси разные?
# каждый поток ставит прокси так:
socks_hnd = SocksHandler.SocksHandler(PROXY_TYPE_HTTP, ip, port)
opener = urllib.request.build_opener(socks_hnd)
urllib.request.install_opener(opener)
Офлайн
Попробуйте этот код:
class HTTPWithProxy:
def __init__( self, proxy, user_agent='Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3', headers={} ):
''' proxy - {'http':'ipaddres:port'} '''
# создаем опенер, который может работать через прокси
self.opener = urllib.request.build_opener( urllib.request.ProxyHandler( proxy ) )
self.opener.addheaders = [ {'User-agent', user_agent} ]
def request( self, url, data={}, timeout=5 ):
if data:
try:
html = self.opener.open( url, data, timeout )
except Exception as error:
print( 'Error:', error )
else:
try:
html = self.opener.open( url, None, timeout )
except Exception as error:
print( 'Error:', error )
return html
connect = HTTPWithProxy( proxy )
response = connect.request( 'http://cmyip.com' )
page = response.read()
Отредактировано (Сен. 4, 2011 10:23:28)
Офлайн
спасибо, но рабочий код и у меня есть
я хотел бы понять как он работает
Офлайн
устанавливается в библиотеку как синглетон
Офлайн