PycURL ile SOCKS üzerinden FTP indirme
libcurl'ün bir FTP indirmesinin denetim ve pasif veri bağlantılarını SOCKS5 vekil sunucusu üzerinden yönetmesini sağlayın.
PycURL, libcurl'ün FTP ve SOCKS desteğini tek bir aktarım tanıtıcısı üzerinden sunar. Pasif FTP indirmesinde uygulama, hem denetim bağlantısını hem de ayrı veri bağlantısını bu uygulamaya bırakabilir.
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 uygulamanın FTP kaynak URL'sidir ve output zaten açılmış ikili çıktı akışıdır. Zaman aşımları, beklenen dosya boyutuna ve bağlantıya göre seçilecek örnek sınırlardır. Genel aracıların izin verildiği genel bir FTP kaynağı için SOCKS5 vekil listesi vekil URL'si için adaylar sunar; seçilen düğümün hem denetim hem de pasif veri hedeflerine izin verdiğini kontrol edin.
socks5h, hedef ana bilgisayar adı çözümlemesini SOCKS vekiline devreder. NOPROXY bilinçli olarak boştur; böylece devralınan no_proxy ortam ayarı bu aktarımın yolunu atlamaz.
Etkin FTP'yi devre dışı bırakın: sunucudan gelen bir bağlantı bekler ve bu vekil modunda kullanılamaz. Vekilin giden trafik politikası, FTP denetim bağlantı noktasına ve aktarım için seçilen pasif veri bağlantı noktasına izin vermelidir. Bu nedenle yalnızca başarılı oturum açma, dosyanın indirilebileceğini kanıtlamaz.
Kimlik doğrulama gerektiğinde aracı için PycURL'ün PROXYUSERNAME ve PROXYPASSWORD ayarlarını kullanın; FTP sunucusunun kimlik bilgileri FTP bağlantısına aittir.