Найти - Пользователи
Полная версия: urllib2 Запросы через разные прокси
Начало » Web » urllib2 Запросы через разные прокси
1
Juster
Здрасивуйте, подскажите как сделать для каждого вызова urllib2.urlopen свой прокси. Юзаю следуещее, как это усовершентсвовать? В доках по либе видел метод set_proxy для Request, но не понял как юзать.

def initproxy():
if PROXY is not None :
proxy_support = urllib2.ProxyHandler( {“http” : PROXY} )
opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
else:
opener = urllib2.build_opener(urllib2.HTTPHandler)
opener.addheaders =
urllib2.install_opener(opener)

request = urllib2.Request(TARGET+self.path, “”, headers)
request.set_proxy(self,PROXY)
objurl = urllib2.urlopen(request)
Андрей Светлов
А именно так. Зарегистрировать свой opener. Как именно лучше всего - смотреть нужно отдельно. Твой метод тоже хорош.
Juster
Абсолютно согласен, чем меньше кода тем безопасней и быстрее. Только уточнить хотел мне initproxy перед каждым вызовом urllib2.urlopen вызывать? чтобы сменить прокси. Хочу делать запросы на разные прокси и наверно из разных потоков. Как лучше?
Андрей Светлов
Так ведь:

_opener = None
def urlopen(url, data=None):
global _opener
if _opener is None:
_opener = build_opener()
return _opener.open(url, data)

def install_opener(opener):
global _opener
_opener = opener

Делай свой opener как обычно, но запоминай его (в потоке, для каждого прокси - как удобней).
А потом всего лишь нужно вызвать opener.open(url_or_request, data=None)
Опять повторю совет - читай исходники!!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB