CPython 3.14 imaplib SOCKS ಮೂಲಕ ಪರಿಶೀಲಿಸಿದ TLS ನೊಂದಿಗೆ
ಸಾಕೆಟ್ಗಳನ್ನು ಜಾಗತಿಕವಾಗಿ ಬದಲಾಯಿಸದೆ ಅಥವಾ ಮೇಲ್ ಸರ್ವರ್ನ TLS ಗುರುತನ್ನು ಕಳೆದುಕೊಳ್ಳದೆ CPython 3.14 ನ IMAP SSL ಸಂಪರ್ಕವನ್ನು 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 ದೃಢೀಕರಣ.