通过http代理连接到FTP服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过http代理连接到FTP服务器相关的知识,希望对你有一定的参考价值。

我的代码belove在调用方法ftp.connect()时给出了错误:socket.gaierror: [Errno 11001] getaddrinfo failed

我的问题是:为什么我可以连接到google.com但是当连接到ftp服务器时它会给我错误?我如何从http代理后面连接到ftp服务器?

import ftplib
import urllib.request

# ftp settings
ftpusername = 'abc'
ftppassword = 'xyz'
ftp_host = 'host'
ftp_port = 1234

proxy_url = 'http://username:password@host:port'
proxy_support = urllib.request.ProxyHandler({'http': proxy_url})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)

#url works ok
f = urllib.request.urlopen('http://www.google.com/')
print(f.read(500))

# Connecting to ftp fails
with ftplib.FTP() as ftp:
    ftp.connect(host=ftp_host, ftp_port=port)
    ftp.login(user=ftpusername, passwd=ftppassword)
    print(ftp.getwelcome())
    print(ftp.nlst())
    ftp.close()
    ftp.quit()
答案

您可以使用被动FTP连接。它可能解决了这个问题

以上是关于通过http代理连接到FTP服务器的主要内容,如果未能解决你的问题,请参考以下文章

使用C#中的代理连接到FTPS

通过代理连接到远程 weblogic 服务器时出现问题

无法通过 SOCKS5 代理服务器连接到互联网

通过 http 从连接到服务器的 NAS 下载文件

通过代理使用 Telnet 隧道 HTTP

CORBA 代理/代理通过 HTTP 还是通过套接字访问(对于 PHP)?