Форум сайта python.su
Для 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')
Офлайн
У вас на самом прокси открыт 443?
Пример конфигурации для кальмара тут
https://habrahabr.ru/post/267851/
Вам нужен метод коннект для SSL + поиграйтесь с версиями.
Офлайн