RCurl 可以通过 HTTP 隧道发送 FTP
当代理应当承载 FTP 协议而不是接收包含 FTP URL 的 HTTP GET 时,使用 httpproxytunnel。
libcurl 有两种不同的方式为 FTP URL 使用 HTTP 代理。不使用隧道时,它可以发送一个目标为 FTP URL 的 HTTP GET,请求代理充当 FTP 网关。
如果服务改为期望 HTTP CONNECT 隧道,请启用 RCurl 的相应选项:
result <- RCurl::getURL(
"ftp://ftp.example.net/pub/file.txt",
.opts = list(
proxy = "http://proxy.example.net:8080",
httpproxytunnel = TRUE
)
)
代理必须允许连接到 FTP 服务器所需的端口。仅限在 443 上使用 CONNECT 的服务,即使普通 HTTPS 浏览可用,也可能拒绝 FTP 的控制连接。
FTP 还会为列表或传输使用单独的数据连接。控制登录成功并不能证明协商好的数据目的地可以经由中间人放行。
此模式通过隧道承载 FTP 协议;它不会让明文 FTP 变成加密。需要保密时,请使用文件服务器所支持的安全协议以及匹配的 libcurl 构建。RCurl 可用的协议取决于它所使用的 libcurl 库。