import ftplib ftps = ftplib.FTP_TLS(host='', user='', passwd='', acct='', keyfile=None, certfile=None, context=None, timeout=None, source_address=None, *, encoding='utf-8')
host=''
- хост FTP-сервера, user=''
- имя пользователя для доступа на FTP-сервер,passwd=''
- пароль пользователя для доступа на FTP-сервер,acct=''
- информация об аккаунте,keyfile=None
- ключ сертификата безопасности (устаревшая альтернатива context
),certfile=None
- сертификата безопасности (устаревшая альтернатива context
),context=None
- объект ssl.SSLContext
,timeout=None
- тайм-аут в секундах для попытки подключения к FTP,source_address=None
- привязывает сокет к исходному адресу,encoding='utf-8'
- кодировка FTP-сервера.Класс ftplib.FTP_TLS()
модуля ftplib
представляет собой подкласс ftplib.FTP()
, который добавляет поддержку TLS
к FTP
, как описано в RFC 4217.
Класс ftplib.FTP_TLS()
подключается, как обычно, к порту 21, неявно защищая управляющее соединение FTP-сервера перед аутентификацией. Для защиты подключения к данным пользователь должен явно запросить его, вызвав метод FTP_TLS.prot_p()
.
Аргумент context
- это объект ssl.SSLContext
, который позволяет объединять параметры конфигурации SSL, сертификаты и закрытые ключи в единую (потенциально долгоживущую) структуру.
Аргументы keyfile
и certfile
- это устаревшая альтернатива context
- они могут указывать на закрытый ключ в формате PEM
и файлы цепочки сертификатов (соответственно) для соединения SSL.
Изменено в Python 3.9: если аргумент timeout=0
, то он вызовет ошибку ValueError
, чтобы предотвратить создание неблокирующего сокета. Был добавлен параметр encoding
, а значение по умолчанию было изменено с Latin-1
на UTF-8
в соответствии с RFC 2640.
Пример сеанса с использованием класса ftplib.FTP_TLS()
:
>>> from ftplib import FTP_TLS >>> ftps = FTP_TLS('ftp.pureftpd.org') >>> ftps.login() # '230 Anonymous user logged in' >>> ftps.prot_p() # '200 Data protection level set to "private"' >>> ftps.nlst() # ['.', '..', '6jack', 'OpenBSD', 'blogbench', 'bsdcam', 'libpuzzle', # 'minidentd', 'mysql-udf-global-user-variables', 'php-jenkins-hash', # 'php-skein-hash', 'php-webdav', 'phpbench', 'pincaster', 'ping', # 'posto', 'pub', 'public', 'qscan', 'qtc', 'sharedance', 'skycache', # 'ucarp', 'antilink', 'clockspeed', 'djbdns-jedi', 'docs', # 'eaccelerator-jedi', 'francotone', 'fugu', 'ignore', 'metalog', # 'misc', 'phpaudit', 'piknik', 'public_keys', 'pure-ftpd', 'sound', # 'tmp', 'favicon.ico'] >>> ftps.quit() # '221-Goodbye. You uploaded 0 and downloaded 0 kbytes.\n221 Logout.'
FTP_TLS
.Класс
ftplib.FTP_TLS()
наследуется отftplib.FTP()
, следовательно наследует все методы определяемые классомftplib.FTP()
.
Класс ftplib.FTP_TLS()
определяет следующие дополнительные методы:
FTP_TLS.ssl_version
устанавливает используемую версию SSL,FTP_TLS.auth()
настраивает соединение с помощью TLS или SSL,FTP_TLS.ccc()
переключает канал на обычное соединение ,FTP_TLS.prot_p()
настраивает безопасное соединение,FTP_TLS.prot_c()
настраивает обычное соединение.FTP_TLS.ssl_version
:Атрибут FTP_TLS.ssl_version
устанавливает используемую версию SSL (по умолчанию ssl.PROTOCOL_SSLv23
).
FTP_TLS.auth()
:Метод FTP_TLS.auth()
настраивает безопасное управляющее соединение с помощью TLS или SSL, в зависимости от того, что указано в атрибуте FTP_TLS.ssl_version
.
FTP_TLS.ccc()
:Метод FTP_TLS.ccc()
возвращает канал управления обратно в открытый текст.
Такое поведение может быть полезно, чтобы воспользоваться преимуществами брандмауэров, которые знают, как обрабатывать NAT с незащищенным FTP без открытия фиксированных портов.
FTP_TLS.prot_p()
:Метод FTP_TLS.prot_p()
настраивает безопасное соединение для передачи данных.
FTP_TLS.prot_c()
:Метод FTP_TLS.prot_c()
настраивает подключение для передачи данных в виде открытого текста.