首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于HTTP代理的cURL (pycurl) FTP

基于HTTP代理的cURL (pycurl) FTP
EN

Stack Overflow用户
提问于 2012-02-06 18:56:48
回答 2查看 13.9K关注 0票数 3

我编写了简单的上传脚本,然后就完成了接下来的工作: curl尝试执行,将放到ftp服务器上:

简化代码:

代码语言:javascript
复制
import pycurl
from os.path import getsize

c = pycurl.Curl()
c.setopt(pycurl.URL, 'ftp://<ftp_name>:21/asus.c')
c.setopt(pycurl.USERPWD, 'username:password')
c.setopt(pycurl.PROXY, '10.0.0.35')
c.setopt(pycurl.PROXYPORT, 3128)
c.setopt(pycurl.VERBOSE, 1)
f = open('asus.c')
c.setopt(pycurl.INFILE, f)
c.setopt(pycurl.INFILESIZE, getsize('asus.c'))
c.setopt(pycurl.HTTPPROXYTUNNEL, 1)
c.setopt(pycurl.UPLOAD, 1)
c.perform()

几个月前,几乎相同的代码运行良好,但是:

代码语言:javascript
复制
* About to connect() to proxy <IP> port 3128 (#0)
*   Trying <IP>... * connected
* Connected to <IP> (<IP>) port 3128 (#0)
* Establish HTTP proxy tunnel to <ftp_name>:21
* Server auth using Basic with user 'username'
> CONNECT <ftp_name>:21 HTTP/1.1
Host: <ftp_name>:21
User-Agent: PycURL/7.21.6
Proxy-Connection: Keep-Alive

< HTTP/1.0 200 Connection established
< 
* Proxy replied OK to CONNECT request
* Server auth using Basic with user 'username'
> PUT /asus.c HTTP/1.1
Authorization: Basic _______________________________
User-Agent: PycURL/7.21.6
Host: <ftp_name>:21
Accept: */*
Content-Length: 2627
Expect: 100-continue

220 ProFTPD 1.3.3 Server (______ FTP Server) [<IP>]
500 PUT not understood
500 AUTHORIZATION: not understood
500 USER-AGENT: not understood
500 HOST: not understood
500 ACCEPT: not understood
500 CONTENT-LENGTH: not understood
500 EXPECT: not understood
500 Invalid command: try being more creative

当我尝试在shell中这样做时,同样的反应是:

代码语言:javascript
复制
curl --upload-file "asus.c" --proxy 10.0.0.35:3128 \
--proxytunnel -u username:password ftp://<ftp_name>/asus.c

为什么?我错过了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-03-24 19:11:28

这是为我工作的格式。

代码语言:javascript
复制
curl --user 'ftp_user:ftp_password' --disable-epsv --proxytunnel -x 'yourproxy.com:port' -T 'your.localfile' 'ftp://remote.ftp.org:port/path' -v

我花了很多时间在这些参数上挣扎,如果你有卷曲作为ftp问题,请告诉我。

以下是一些与此相关的参数:

如果需要代理凭据,请使用-U or --proxy-user <proxy_user:proxy_password>

如果您有远程ftp用户名和密码,则为-u or --user <ftp_user:ftp_password>

如果代理使用摘要身份验证,则为--proxy-digest

如果代理使用基本身份验证,则为--proxy-basic

如果要检测代理身份验证,请使用--proxy-anyauth

如果您只想列出一个FTP目录,则为-l or --list-only

使用摘要身份验证的--digest远程ftp

使用基本身份验证的--basic远程ftp

-3 or --sslv3 ( SSL )强制curl在连接远程ssl服务器时使用ssl版本3。

-p or --proxytunnel,如果您有-x or --proxy,这个选项将导致非http协议试图通过代理隧道,而不是仅仅使用它来执行类似http的操作。

如果需要详细的话,可以使用-v or --verbose

--ftp-ssl

票数 2
EN

Stack Overflow用户

发布于 2012-03-15 03:55:58

ftp上载的语法是:

代码语言:javascript
复制
curl -u "Remote-FTP-Username@remote.ftp.server Proxy-Username:Remote-Pass"     --ftp-account Proxy-Password --upload-file local-file     ftp://my-ftp.proxy.server:21/remote/upload/path/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9165594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档