Python3 подключиться к FTP через прокси - PullRequest
2 голосов
/ 21 апреля 2020

Я смотрю, как я могу использовать python3 для подключения к ftp-серверу и проверки его содержимого - главное, что мне нужно указать настройки прокси (подключиться через прокси-сервер).

Мне не нужно для предоставления имени пользователя и пароля для прокси-сервера, только http-адрес и порт 8080. При подключении к ftp (порт 21) мне нужно указать имя пользователя и пароль.

Я немного хорош в PowerShell, и он делает это без особых хлопот. Я могу использовать этот пример , чтобы загрузить winscp, добавить параметры прокси и затем подключиться к ftp.

$sessionOptions.AddRawSettings("ProxyHost","My_PROXY") 

Однако я все еще изучаю python3, и эта та же самая задача действительно смущает меня. До сих пор я знаю, что ftplib не обрабатывает прокси, и я должен использовать urllib3, но я не могу найти хороших примеров.

from ftplib import FTP

site = FTP('proxy_address.com:8080') # throws errors
site.set_debuglevel(1)
msg = site.login('username@ftp.someserver.net', 'password')
site.cwd('/')

  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python37\lib\ftplib.py", line 117, in __init__
    self.connect(host)
  File "C:\Program Files\Python37\lib\ftplib.py", line 152, in connect
    source_address=self.source_address)
  File "C:\Program Files\Python37\lib\socket.py", line 707, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "C:\Program Files\Python37\lib\socket.py", line 748, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

Ниже приведена еще одна из нескольких попыток, но это выдает ошибку, что я Отсутствующий аргумент 'url'.

from urllib3 import ProxyManager

proxy = ProxyManager('http://my_http_proxy_address:8080')
proxy.request('ftp://username:password@server.com')

Я твердо уверен, что в python есть несколько простой способ установить ftp-соединение через прокси, но я просто не знаю об этом. Не могли бы вы поделиться своим опытом в этой топи c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...