مقدار پیشفرض PySocks مسیر ftplib را عوض نمیکند
بهجای فرض اینکه set_default_proxy پیادهسازی بومی socket در پایتون را تغییر میدهد، سوکتهایی را که ftplib واقعاً میسازد دنبال کنید.
socks.set_default_proxy() مقادیر پیشفرض را برای اشیای PySocks socksocket در آینده ذخیره میکند. کلاس سوکت بومی پایتون را جایگزین نمیکند. در نتیجه، تنها به این دلیل که فراخوانی پیش از یک اتصال FTP رخ داده، ftplib را تغییر مسیر نمیدهد.
سازندهها را دنبال کنید، نه متغیری را که نشانی پروکسی در آن است. ftplib یک اتصال کنترل و اتصالهای انتقال اضافی میسازد. در FTP غیرفعال، ورود موفق تنها ثابت میکند که اتصال کنترل کار کرده است؛ سوکت دادهای که برای فهرست یا انتقال فایل به کار میرود هم به مسیر موردنظر نیاز دارد.
دستوری که socket.socket را جایگزین میکند یا ماژولی را میپیچد، کاری فراتر از تنظیم پیشفرضهای PySocks انجام میدهد. میتواند بر کتابخانههای دیگری که آن ماژول را به اشتراک میگذارند اثر بگذارد. بازگرداندن موقت نسخه اصلی در ادامه، اتصالهای همزمان را از این تغییر جدا نمیکند.
یک زیرکلاس سفارشی ftplib میتواند مسیرهای اتصال را پوشش دهد، اما بخشهای داخلی کپیشده فرضهای نسخه پایتونی را که از آن آمدهاند با خود دارند، از جمله نگهبانهای مهلت زمانی و مدیریت پروتکل. بهروزرسانیهای کتابخانه استاندارد این کپی را بهروز نمیکنند.
برای پروکسی و حالت FTP موردنیاز، یک کلاینت نگهداریشده یا یکپارچهسازی پشتیبانیشده انتخاب کنید. نمونه دانلود FTP غیرفعال با PycURL مسیری جداگانه در سمت کلاینت را نشان میدهد. برای سفارشیسازی در اختیار برنامه، مشخص کنید کدام سازنده هر سوکت کنترل و داده را باز میکند و رفتار لایه بالادست را که جایگزین میشود حفظ کنید. مقدار درست پروکسی تنها زمانی سودمند است که آن سازندهها واقعاً آن را مصرف کنند.