تنزيل FTP عبر SOCKS باستخدام PycURL
دع libcurl يدير اتصالي التحكم والبيانات السلبية في تنزيل FTP عبر وسيط SOCKS5.
يتيح PycURL دعم libcurl لـFTP وSOCKS عبر مقبض نقل واحد. في تنزيل FTP سلبي، يمكن للتطبيق أن يترك اتصال التحكم واتصال البيانات المنفصل لذلك التطبيق البرمجي.
import pycurl
transfer = pycurl.Curl()
try:
transfer.setopt(pycurl.URL, ftp_url)
transfer.setopt(pycurl.PROXY, "socks5h://proxy.example.net:1080")
transfer.setopt(pycurl.NOPROXY, "")
transfer.setopt(pycurl.WRITEDATA, output)
transfer.setopt(pycurl.CONNECTTIMEOUT, 10)
transfer.setopt(pycurl.TIMEOUT, 60)
transfer.perform()
finally:
transfer.close()
ftp_url هو عنوان URL لمورد FTP في التطبيق، وoutput تدفق إخراج ثنائي مفتوح مسبقًا. المهل الزمنية حدودٌ مثالية تُختار بحسب حجم الملف المتوقع والاتصال. بالنسبة لمورد FTP عام حيث يُسمح بالوسطاء العامين، تقدم قائمة وسطاء SOCKS5 مرشحين لعنوان الوسيط؛ تحقق من أن العقدة المختارة تسمح بوجهتي اتصال التحكم والبيانات السلبية معًا.
يفوض socks5h تحليل اسم مضيف الوجهة إلى وسيط SOCKS. حقل NOPROXY فارغ صراحةً حتى لا يتجاوز إعداد no_proxy الموروث المسار في هذا النقل.
اترك FTP النشط معطلًا: فهو يتوقع اتصالًا واردًا من الخادم وغير متاح في وضع الوسيط هذا. يجب أن تسمح سياسة الخروج لدى الوسيط بمنفذ تحكم FTP ومنفذ البيانات السلبية المختار للنقل. لذا فإن نجاح تسجيل الدخول وحده لا يثبت إمكانية تنزيل الملف.
عند الحاجة إلى المصادقة، استخدم PROXYUSERNAME وPROXYPASSWORD في PycURL للوسيط؛ أما بيانات خادم FTP فتخص اتصال FTP.