socks.set_default_proxy() lưu các giá trị mặc định cho các đối tượng socksocket của PySocks trong tương lai. Nó không thay thế lớp socket gốc của Python. Vì vậy, nó không định tuyến lại ftplib chỉ vì lệnh gọi diễn ra trước một kết nối FTP.

Hãy theo dõi các constructor, không phải biến lưu URL proxy. ftplib tạo một kết nối điều khiển và các kết nối truyền tải bổ sung. Với FTP thụ động, đăng nhập thành công chỉ chứng minh rằng kết nối điều khiển đã hoạt động; socket dữ liệu dùng cho việc liệt kê hoặc truyền tệp cũng cần tuyến đường dự định.

Một công thức thay thế socket.socket hoặc bọc một module làm việc khác ngoài việc đặt giá trị mặc định của PySocks. Nó có thể ảnh hưởng đến các thư viện khác dùng chung module đó. Việc khôi phục bản gốc sau đó không làm các kết nối đồng thời tách khỏi thay đổi ấy.

Một lớp con ftplib tùy chỉnh có thể bao phủ các đường kết nối, nhưng phần nội bộ được sao chép mang theo các giả định của phiên bản Python mà nó lấy ra, bao gồm sentinel timeout và việc xử lý giao thức. Các bản cập nhật thư viện chuẩn không cập nhật bản sao đó.

Chọn một client được duy trì hoặc một tích hợp được hỗ trợ cho proxy và chế độ FTP cần thiết. Ví dụ tải FTP thụ động bằng PycURL minh họa một đường client riêng. Với tùy biến thuộc về ứng dụng, hãy xác định constructor nào mở từng socket điều khiển và dữ liệu và giữ nguyên hành vi gốc mà nó thay thế. Một giá trị proxy đúng chỉ hữu ích khi các constructor đó thực sự dùng nó.

Bài viết liên quan