CPython 3.14 imaplib SOCKS аркылуу текшерилген TLS менен
CPython 3.14 IMAP SSL байланышын сокеттерди глобалдуу алмаштырбастан жана почта серверинин TLS идентификациясын жоготпостон SOCKS аркылуу ылайыкташтырыңыз.
IMAP SSL байланышы почта серверин өзүнүн TLS өнөктөшү катары сактап, SOCKS аркылуу өтө алат. Пайдалуу интеграция чекити — кардар өз транспортун түзгөн жер, кадимки IMAP саламдашуусу жана мүмкүнчүлүктөрдү иштетүү башталганга чейин.
CPython 3.14 үчүн төмөнкү PySocks колдонгон кичинекей адаптерди көрсөтөт. Ал жеке транспорт илгегин кайра аныктайт, ошондуктан аны колдоодогу imaplib версиясына байлап кармаңыз:
import imaplib
import ssl
import socks
class SocksIMAP4SSL(imaplib.IMAP4_SSL):
def _create_socket(self, timeout):
stream = socks.create_connection(
(self.host, self.port),
timeout=timeout,
proxy_type=socks.SOCKS5,
proxy_addr="proxy.example",
proxy_port=1080,
proxy_rdns=True,
)
try:
return self.ssl_context.wrap_socket(
stream, server_hostname=self.host)
except Exception:
stream.close()
raise
context = ssl.create_default_context()
with SocksIMAP4SSL("imap.example", ssl_context=context,
timeout=15) as mailbox:
mailbox.noop()Аталыштар жана порт мурунтан эле жеткиликтүү прокси жана IMAP кызматы үчүн орун толтургучтар. Коомдук проксилерди колдонууга уруксат берилген коомдук IMAP дареги үчүн SOCKS5 прокси тизмеси талапкерлерди сунуштайт; ар бири керектүү почта хостуна жана портко уруксат бериши керек. PySocks көз карандылыгы SOCKS сүйлөшүүлөрүн камсыз кылат; imaplib дагы эле почта сессиясын инициализациялайт. Бул жерде socket.socket ордун толтуруунун эч кандай глобалдык түрү катышпайт.
Почта серверинин идентификациясын сактаңыз
TLS хост аты imap.example бойдон калат. Ал SOCKS хост аты эмес. ssl.create_default_context() өткөрүү кадимки сертификат жана хост атын текшерүүлөрдү атайын иштетет; жалгыз шифрленген сокет ошол текшерүүлөрдү орнотууга жетишсиз.
proxy_rdns=True SOCKS жолунан максаттуу хост атын иштетүүнү суранат. Эгер прокси аккаунтту талап кылса, анын колдогон ырастоо аргументтери ошол транспорт конфигурациясына таандык. Алар почта кутусуна кирбейт.
Сессияны инициализациялоону imaplib ке калтырыңыз
Адаптер TLS агымын кадимки конструкторго кайтарат. Эски мисалдан open() кайра ишке ашыруу таймаут параметрлерин, буферлөөнү жана башка инициализация күтүүлөрүн өткөрүп жибериши мүмкүн. CPython 3.14тө эски file жетүү да эркин кайра курулуучу талаа эмес, шайкештик касиети.
Китепкананы жаңыртканда бул жеке илгекти тиешелүү баштапкы код менен салыштырып карап чыгыңыз. Эгер ички классты колдоо ылайыксыз болсо, прокси транспортунун документтелген интерфейси бар почта кардарын тандаңыз. Каалаган жайгаштыруу ошол эле бөлүнүштү сакташы керек: прокси байланышы, максаттын TLS текшерүүсү, анан IMAP аутентификациясы.