Уведомления

Группа в Telegram: @pythonsu

#1 Май 28, 2016 10:07:07

ivanzzz
Зарегистрирован: 2016-02-08
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

IMAP4_SSL через прокси

Для IMAP4 и IMAP4_SSL переопределил метод open для подключения через прокси.С IMAP4 получилось, а вот с IMAP4_SSL он не реагирует на установленные прокси вообще. Использую socks4.

class SOCKS_IMAP4(imaplib.IMAP4):
    def __init__(self, host = '', port = imaplib.IMAP4_PORT,proxy_type = None, proxy = None):
            self.proxy = proxy
            self.proxy_type = proxy_type
            imaplib.IMAP4.__init__(self, host, port)
    def open(self,host,port=imaplib.IMAP4_PORT):
        self.host = host
        self.port = port
        self.sock = socksocket()        
        if self.proxy and self.proxy_type:
            proxy_ip,proxy_port = self.proxy.split(':')
            self.sock.setproxy(self.proxy_type,proxy_ip,int(proxy_port))
        self.sock.connect((host,port))
        self.file = self.sock.makefile('rb')
class SOCKS_IMAP4_SSL(imaplib.IMAP4_SSL):
    def __init__(self, host = '', port = imaplib.IMAP4_SSL_PORT,proxy_type = None, proxy = None,):
            self.proxy = proxy
            self.proxy_type = proxy_type
            imaplib.IMAP4_SSL.__init__(self, host, port)
    def open(self, host, port=imaplib.IMAP4_SSL_PORT):
        self.host = host
        self.port = port
        self.sock = socksocket()
        #actual privoxy default setting, but as said, you may want to parameterize it
        if self.proxy and self.proxy_type:
            proxy_ip,proxy_port = self.proxy.split(':')
            self.sock.setproxy(self.proxy_type,proxy_ip,int(proxy_port))
        self.sock = socket.create_connection((host, port))
        self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
        self.file = self.sslobj.makefile('rb')

Офлайн

#2 Май 30, 2016 10:29:57

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

IMAP4_SSL через прокси

У вас на самом прокси открыт 443?

Пример конфигурации для кальмара тут
https://habrahabr.ru/post/267851/

Вам нужен метод коннект для SSL + поиграйтесь с версиями.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version