EPSV 消除的是 FTP 地址问题,而不是第二条连接
当 FTP 登录可以经由代理完成,但列目录或传输准备失败时,理解被动数据端点。
EPSV 仍然会另开一条 FTP 数据连接。它改变的是端点信息,而不是连接数量。
传统的 PASV 应答给出地址和端口。该地址在服务器网络之外可能不可用。EPSV 给出端口,并使用与控制连接相关联的服务器地址。
经由代理时,要保留 FTP 服务器的逻辑身份。中间设备的监听地址并不自动就是拥有所返回数据端口的服务器。
数据连接还需要既定的代理路径,以及到达所选端口的权限。接受一条发往 FTP 控制端口的 CONNECT,并不等于放行随后的每一条数据连接。
在禁用 EPSV 之前,检查被动应答,以及为传输请求的服务器地址和端口。FTP 登录成功只建立控制连接;数据连接仍待验证。使用 Python ftplib 时,同时追踪两个 socket 构造器,而不是只依赖 PySocks 的默认行为。