diff --git a/scrapy/core/downloader/handlers/ftp.py b/scrapy/core/downloader/handlers/ftp.py index 603c1e2e3..1398140b4 100644 --- a/scrapy/core/downloader/handlers/ftp.py +++ b/scrapy/core/downloader/handlers/ftp.py @@ -67,17 +67,18 @@ class FTPDownloadHandler(object): } def __init__(self, settings): - self.anonymous_user = settings['FTP_ANONYMOUS_USER'] - self.anonymous_password = settings['FTP_ANONYMOUS_PASSWORD'] + self.default_user = settings['FTP_USER'] + self.default_password = settings['FTP_PASSWORD'] + self.passive_mode = settings['FTP_PASSIVE_MODE'] def download_request(self, request, spider): parsed_url = urlparse_cached(request) - user = request.meta.get("ftp_user", self.anonymous_user) - password = request.meta.get("ftp_password") - if user == self.anonymous_user and password is None: - password = self.anonymous_password + user = request.meta.get("ftp_user", self.default_user) + password = request.meta.get("ftp_password", self.default_password) + passive_mode = 1 if bool(request.meta.get("ftp_passive", + self.passive_mode)) else 0 creator = ClientCreator(reactor, FTPClient, user, password, - passive=request.meta.get("ftp_passive", 1)) + passive=passive_mode) return creator.connectTCP(parsed_url.hostname, parsed_url.port or 21).addCallback(self.gotClient, request, unquote(parsed_url.path)) diff --git a/scrapy/settings/default_settings.py b/scrapy/settings/default_settings.py index a21c2584a..9ecefbbb5 100644 --- a/scrapy/settings/default_settings.py +++ b/scrapy/settings/default_settings.py @@ -161,8 +161,9 @@ FEED_EXPORTERS_BASE = { FILES_STORE_S3_ACL = 'private' -FTP_ANONYMOUS_USER = 'anonymous' -FTP_ANONYMOUS_PASSWORD = 'anonymous@example.com' +FTP_USER = 'anonymous' +FTP_PASSWORD = 'anonymous@example.com' +FTP_PASSIVE_MODE = True HTTPCACHE_ENABLED = False HTTPCACHE_DIR = 'httpcache'