IP và cổng proxy: ứng dụng cần định dạng nào?
Chuyển mục trong danh sách proxy thành URL HTTP hoặc SOCKS, điền các trường máy chủ và cổng riêng biệt, và định dạng địa chỉ IPv6 đúng cách.
Một số ứng dụng cần IP:port. Số khác cần URL bắt đầu bằng http:// hoặc socks5://. Cài đặt trình duyệt thường tách địa chỉ và cổng thành hai trường. Vì vậy, cùng một điểm cuối có thể xuất hiện dưới nhiều định dạng mà không đổi địa chỉ.
Một mục IPv4
Giả sử một danh sách proxy HTTP đưa ra proxy HTTP ví dụ 203.0.113.10:8080.
| Ứng dụng yêu cầu | Nhập |
|---|---|
| Máy chủ hoặc IP | 203.0.113.10 |
| Cổng | 8080 |
| URL proxy HTTP | http://203.0.113.10:8080 |
Đừng nhập cổng hai lần. Nếu ứng dụng đã có ô cổng, đặt 203.0.113.10:8080 vào ô máy chủ có thể khiến nó cố phân giải cả chuỗi như một tên máy chủ. Tương tự, đừng thêm scheme vào trường nói rõ chỉ nhận địa chỉ IP.
Scheme phải khớp với dịch vụ. Chọn HTTP hoặc SOCKS5 theo khả năng hỗ trợ của máy khách trước khi chuyển đổi địa chỉ. Viết socks5:// trước điểm cuối HTTP làm thay đổi nội dung máy khách gửi đi; nó không bật SOCKS5 trên máy chủ đó.
IPv6 cần ngoặc vuông trong URL
Địa chỉ IPv6 đã chứa dấu hai chấm nên URL bao địa chỉ trong ngoặc vuông trước khi thêm cổng:
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
Không có ngoặc, ranh giới giữa địa chỉ và cổng sẽ mơ hồ. Ứng dụng có các trường riêng thường cần 2001:db8::10 làm máy chủ và 8080 làm cổng; hãy theo định dạng đầu vào của ứng dụng. Cả hai địa chỉ ở đây đều là ví dụ tài liệu, không phải proxy đang hoạt động.
Phân tích URL thay vì tách tại mọi dấu hai chấm
Một đoạn Python ngắn có thể xử lý URL IPv4 và IPv6 có ngoặc bằng bộ phân tích URL chuẩn:
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
Thuộc tính hostname trả về địa chỉ không có ngoặc. Tách chuỗi gốc tại mọi dấu hai chấm sẽ làm hỏng ví dụ này. Trong công cụ nhập thực tế, cũng từ chối mục thiếu máy chủ, scheme không được hỗ trợ và cổng ngoài 1–65535. Phân tích URL cho biết các thành phần của nó; không chứng minh dịch vụ tồn tại.
Khi danh sách có tên người dùng và mật khẩu
Một cấu trúc URL phổ biến là http://username:password@host:port. Những ký tự như @, # và / trong thông tin đăng nhập cần được mã hóa URL đúng cách. Nếu máy khách có các trường đăng nhập riêng, dùng chúng thường dễ hơn tự ghép URL.
Kiểm tra định dạng gốc của nhà cung cấp trước khi chuyển chuỗi đăng nhập phân cách bằng dấu hai chấm. Bốn trường phân cách như vậy không có ý nghĩa chung cho mọi nơi, và mật khẩu tự nó có thể chứa dấu hai chấm. Bộ phân tích dành cho dòng IP:port đơn giản không nên âm thầm đoán một định dạng khác.