在Python中通过FTP代理连接ftplib?

时间:2017-11-07 21:12:59

标签: python python-3.x proxy ftp ftplib

我正在尝试从FTP下载文件。它在家里工作正常但是当我在公司网络上运行时它不起作用。我知道代理有一些事情要做。我在Python中查看了一些有关代理问题的帖子。我试图建立与代理的连接。它适用于url,但在连接到FTP时失败。有谁知道这样做的方法?提前谢谢。

以下是我的代码:

main

我收到的错误消息:

int main( void )

我可以使用FileZilla通过代理连接,选择具有规范的自定义FTP代理:

#include <stdio.h>

void add( int *a, const int *b, const int *c, size_t size); /* Function Prototype */

#define N   5

int main( void ) 
{
    int a[N];
    const int b[N] = { 1, 2, 3, 4, 5 };
    const int c[N] = { 1, 1, 1, 1, 1 };

    add( a, b, c, N );

    for ( size_t i = 0; i < N; i++ ) 
    {
        printf( "%d\t", a[i] );
    }

    return 0;
}

void add( int *a, const int *b, const int *c, size_t size ) 
{
    for ( size_t i = 0; i < size; i++ ) 
    {
        a[i] = b[i] + c[i];
    }
}

FTP Proxy using FileZilla

1 个答案:

答案 0 :(得分:0)

您正在使用FTP代理进行连接。

FTP代理无法使用HTTP,因此针对http:// www.google.com的{​​{1}}网址的测试完全无关紧要,并且无法证明任何内容。

FTP代理作为FTP服务器。您连接到代理,而不是实际的服务器。然后使用用户名(或其他凭据)的一些特殊语法来指定您的实际目标FTP服务器及其凭据。在您的情况下,用户名的特殊语法是user@host user_proxy

这适用于您的具体情况:

host_proxy = '192.168.149.50'
user_proxy = 'XXX'
pass_proxy = 'YYY'

user = 'user'
pass = 'burnt_data'
host = 'ba1.geog.umd.edu'

u = "%s@%s %s" % (user, host, user_proxy)

ftp = ftplib.FTP(host_proxy, u, pass, pass_proxy)

不需要其他代码(urllib或其他任何代码)。