PycURL mendedahkan sokongan FTP dan SOCKS libcurl melalui satu pengendali pemindahan. Dalam muat turun FTP pasif, aplikasi boleh menyerahkan sambungan kawalan dan sambungan data yang berasingan kepada pelaksanaan itu.

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 ialah URL sumber FTP aplikasi, dan output ialah aliran keluaran binari yang sudah dibuka. Had masa ialah had contoh yang perlu dipilih mengikut saiz fail dan sambungan yang dijangka. Untuk sumber FTP awam yang membenarkan perantara awam, senarai proksi SOCKS5 menawarkan calon untuk URL proksi; pastikan nod yang dipilih membenarkan destinasi kawalan dan destinasi data pasif.

socks5h menyerahkan penyelesaian nama hos destinasi kepada proksi SOCKS. NOPROXY sengaja dikosongkan supaya tetapan persekitaran no_proxy yang diwarisi tidak memintas laluan bagi pemindahan ini.

Biarkan FTP aktif dinyahdayakan: ia menjangka sambungan masuk daripada pelayan dan tidak tersedia dalam mod proksi ini. Dasar keluar proksi mesti membenarkan port kawalan FTP dan port data pasif yang dipilih untuk pemindahan. Jadi kejayaan log masuk sahaja tidak membuktikan fail boleh dimuat turun.

Apabila pengesahan diperlukan, gunakan PROXYUSERNAME dan PROXYPASSWORD PycURL untuk perantara; kelayakan pelayan FTP tergolong dalam sambungan FTP.

Artikel berkaitan