SOCKS5 và HTTP proxy khác nhau thế nào? Nên chọn loại nào
Trong bài này
Khi mua proxy, bạn thường nhận hai lựa chọn giao thức: HTTP (hay "HTTP/HTTPS") và SOCKS5. Cả hai đều đưa lưu lượng của bạn ra internet qua IP của proxy, nhưng chúng làm việc ở hai tầng khác nhau, xử lý DNS khác nhau và không phải phần mềm nào cũng hỗ trợ cả hai. Bài này giải thích từng loại bằng ngôn ngữ dễ hiểu và chỉ ra nên chọn loại nào cho từng công cụ.
HTTP proxy hoạt động thế nào?
HTTP proxy hiểu ngôn ngữ của web. Có hai trường hợp:
- Trang
http://: trình duyệt gửi cả yêu cầu (gồm địa chỉ đầy đủ) cho proxy, proxy đi lấy trang và trả lại. - Trang
https://— gần như mọi trang hiện nay: trình duyệt dùng lệnhCONNECTđể nhờ proxy mở một "đường hầm" tới máy chủ đích, rồi tự mã hoá dữ liệu bên trong đường hầm đó. Proxy biết bạn đang kết nối tới tên miền nào, nhưng không đọc được nội dung. Cơ chế này được mô tả trong tài liệu về phương thức CONNECT.
Tài khoản và mật khẩu được gửi trong header Proxy-Authorization. Nếu sai, proxy trả về mã lỗi 407 Proxy Authentication Required.
Khi nhà cung cấp ghi "HTTP/HTTPS", thường nghĩa là proxy dùng được cho cả trang http:// lẫn https:// (qua CONNECT), chứ không nhất thiết là kết nối giữa bạn và proxy được mã hoá.
SOCKS5 hoạt động thế nào?
SOCKS5 làm việc ở tầng thấp hơn: nó không quan tâm bạn đang gửi gì, chỉ chuyển tiếp kết nối TCP tới địa chỉ bạn yêu cầu. Nhờ vậy SOCKS5 dùng được cho cả những ứng dụng không phải trình duyệt web — ứng dụng chat, email, game, công cụ dòng lệnh.
Giao thức được định nghĩa trong RFC 1928; cách đăng nhập bằng tài khoản và mật khẩu nằm trong RFC 1929. SOCKS5 còn có lệnh cho lưu lượng UDP, nhưng không phải proxy nào cũng hỗ trợ — hãy hỏi nhà cung cấp nếu bạn cần.
Cũng như HTTP proxy, SOCKS5 không tự mã hoá dữ liệu. Các trang HTTPS vẫn được mã hoá từ trình duyệt tới website, bất kể bạn dùng loại proxy nào.
socks5 và socks5h: chuyện phân giải DNS
Trước khi kết nối tới một tên miền, máy tính phải hỏi DNS để đổi tên miền thành địa chỉ IP. Câu hỏi đó do ai thực hiện là điểm khác biệt quan trọng:
socks5://— máy của bạn tự phân giải DNS rồi gửi địa chỉ IP cho proxy. Truy vấn DNS đi qua mạng của bạn (lộ cho nhà mạng của bạn thấy bạn đang vào trang nào), và các dịch vụ CDN có thể trả về máy chủ gần Việt Nam thay vì gần Singapore.socks5h://— tên miền được gửi nguyên cho proxy, proxy tự phân giải DNS. Không rò rỉ DNS, và kết quả phân giải đúng như người dùng ở nước của proxy.
Với HTTP proxy, tên miền luôn được gửi cho proxy (trong lệnh CONNECT hoặc trong yêu cầu), nên không có vấn đề này. Khi dùng SOCKS5 với cURL hoặc Python, hãy viết socks5h://.
Bảng so sánh nhanh
| Tiêu chí | HTTP(S) proxy | SOCKS5 |
|---|---|---|
| Tầng hoạt động | Giao thức web (HTTP) | Kết nối TCP, mọi giao thức |
| Dùng cho | Trình duyệt, API, công cụ web | Mọi ứng dụng hỗ trợ SOCKS5 |
| Xác thực | Tài khoản/mật khẩu qua header | Tài khoản/mật khẩu lúc bắt tay (RFC 1929) |
| Phân giải DNS | Tại proxy | Tuỳ client: socks5h tại proxy |
| Chrome, Edge có mật khẩu | Có (hiện hộp đăng nhập) | Không hỗ trợ |
| Trình duyệt antidetect | Hỗ trợ | Hỗ trợ |
| Mã hoá dữ liệu | Không (HTTPS vẫn mã hoá đầu cuối) | Không (HTTPS vẫn mã hoá đầu cuối) |
Về tốc độ, hai giao thức gần như ngang nhau: phần lớn thời gian nằm ở đường truyền của proxy, không phải ở giao thức.
Vì sao trình duyệt thường không dùng được SOCKS5 có mật khẩu?
Đây là điểm khiến nhiều người mất thời gian nhất. Chrome và Edge (cùng nền Chromium) không hỗ trợ xác thực cho SOCKS5 — tài liệu kỹ thuật của Chromium ghi rõ không có phương thức xác thực nào cho SOCKSv5. Firefox có ô cài SOCKS5 nhưng không có chỗ nhập tài khoản và mật khẩu cho nó.
Vì vậy:
- Với trình duyệt thông thường và cài đặt proxy của hệ điều hành, hãy dùng HTTP. Trình duyệt sẽ hiện hộp hỏi tài khoản và mật khẩu khi cần.
- Với trình duyệt antidetect như GoLogin, AdsPower, Hidemyacc, GenLogin hay Multilogin, cả HTTP và SOCKS5 có mật khẩu đều dùng được, vì các trình duyệt này tự xử lý kết nối proxy.
Nên chọn HTTP hay SOCKS5?
| Bạn dùng proxy với | Nên chọn |
|---|---|
| Chrome, Edge, Safari, cài đặt proxy của Windows/macOS | HTTP |
| Trình duyệt antidetect | HTTP hoặc SOCKS5 — chọn một, đổi sang loại kia nếu một trang chạy không ổn |
| cURL, Python (requests), Node.js | HTTP cho đơn giản; SOCKS5 thì dùng socks5h:// |
| Playwright, Puppeteer, Selenium | HTTP (trình duyệt Chromium không hỗ trợ SOCKS5 có mật khẩu) |
| Ứng dụng không phải web: chat, email, game | SOCKS5 |
Nếu chưa chắc, cứ bắt đầu với HTTP: đó là lựa chọn được hỗ trợ rộng rãi nhất. Cách cài từng nơi có trong hướng dẫn cài proxy trên Windows, macOS, iPhone và Android.
Dùng HTTP và SOCKS5 với 65Proxy
Proxy 4G Singapore của 65Proxy hỗ trợ cả hai giao thức. Thông tin kết nối — host, cổng HTTP, cổng SOCKS5, tài khoản và mật khẩu — nằm trong mục Proxy của tôi. Các định dạng thường dùng:
# HTTP / HTTPS
http://USER:PASS@HOST:PORT
# SOCKS5 (proxy tự phân giải DNS)
socks5h://USER:PASS@HOST:PORT
# Dạng host:port:user:pass cho tool
HOST:PORT:USER:PASSVí dụ kiểm tra nhanh bằng cURL với từng giao thức:
curl -x "http://USER:PASS@HOST:PORT" https://api.ipify.org
curl -x "socks5h://USER:PASS@HOST:PORT" https://api.ipify.orgNếu một trong hai lệnh báo lỗi, xem các lỗi proxy thường gặp và cách khắc phục.
Câu hỏi thường gặp
SOCKS5 có an toàn hơn HTTP proxy không?
Không hẳn. Cả hai đều không mã hoá dữ liệu; điều bảo vệ dữ liệu của bạn là HTTPS giữa trình duyệt và website. Chọn giao thức theo công cụ bạn dùng, không phải theo độ "an toàn".
SOCKS4 khác SOCKS5 thế nào?
SOCKS4 là phiên bản cũ: không có tài khoản/mật khẩu đúng nghĩa, không hỗ trợ IPv6 và UDP. Proxy hiện đại dùng SOCKS5.
Vì sao cùng một proxy mà cổng HTTP và SOCKS5 khác nhau?
Nhiều nhà cung cấp chạy hai giao thức trên hai cổng riêng. Hãy dùng đúng cổng cho đúng giao thức: điền cổng SOCKS5 vào ô HTTP (hoặc ngược lại) là một nguyên nhân phổ biến khiến proxy "không chạy".