Proxy nào cũng cần một cách để biết request đến từ đúng chủ sở hữu. Có hai cách phổ biến: gửi username và password kèm mỗi kết nối, hoặc xác thực proxy bằng IP whitelist, tức chỉ cho phép lưu lượng từ những địa chỉ bạn khai báo trước. Cả hai đều chặn người lạ dùng proxy của bạn. Chúng khác nhau ở chỗ hoạt động được trong những môi trường nào, điều gì làm chúng hỏng, và bạn khắc phục ra sao khi thông tin bị lộ. Bài viết này giải thích cả hai, đi qua vài tình huống thực tế và cách chọn.
Xác thực bằng username và password hoạt động thế nào
Với xác thực bằng mật khẩu, proxy chấp nhận kết nối từ bất kỳ IP nào, sau đó yêu cầu thông tin đăng nhập. Ứng dụng của bạn gửi username và password, proxy sẽ chuyển tiếp lưu lượng hoặc từ chối.
- HTTP proxy dùng header
Proxy-Authorization. Khi ứng dụng kết nối mà không có header này, proxy trả về mã407 Proxy Authentication Required, và ứng dụng thử lại kèm thông tin đăng nhập. - SOCKS5 proxy có bước xác thực username và password riêng ngay trong quá trình bắt tay kết nối.
Trong thực tế, bạn thường ghi thông tin đăng nhập trực tiếp vào URL proxy:
curl -x http://USERNAME:PASSWORD@HOST:PORT https://example.com
curl -x socks5h://USERNAME:PASSWORD@HOST:PORT https://example.com
Ưu điểm của cách này là tính linh hoạt. Bạn có thể dùng proxy từ laptop ở quán cà phê, điện thoại dùng 4G hay một máy chủ, không cần cấu hình gì thêm ngoài thông tin đăng nhập. Nhược điểm là thông tin đăng nhập nằm rải rác trong file cấu hình, script và phần cài đặt của các công cụ; bất kỳ ai sao chép được đều có thể dùng proxy của bạn từ bất cứ đâu.
IP whitelist hoạt động thế nào
Với IP whitelist (còn gọi là allowlist), proxy kiểm tra IP nguồn của từng kết nối. Nếu IP nằm trong danh sách, lưu lượng được cho qua mà không cần username hay password. Nếu không, kết nối bị từ chối.
Lúc này ứng dụng chỉ cần host và port:
curl -x http://HOST:PORT https://example.com
Ưu điểm là không còn bí mật nào để lộ: biết host và port cũng vô ích nếu request không xuất phát từ địa chỉ được phép. Whitelist còn giải quyết một vấn đề rất thực tế. Nhiều ứng dụng và phần cài đặt của hệ điều hành hoặc không gửi được thông tin đăng nhập proxy, hoặc xử lý kém với SOCKS5. Chrome không chấp nhận username và password cho SOCKS5 proxy, còn phần cài đặt proxy hệ thống trên Windows và macOS hoạt động thiếu ổn định với SOCKS5 có xác thực. Khi dùng whitelist, các ứng dụng đó chỉ việc kết nối.
Nhược điểm là IP nguồn của bạn phải cố định và chỉ thuộc về riêng bạn.
Xác thực proxy bằng IP whitelist hay mật khẩu: so sánh đánh đổi
| Username và password | IP whitelist | |
|---|---|---|
| Kết nối được từ đâu | Bất cứ đâu | Chỉ từ IP trong danh sách |
| Thứ có thể bị lộ | Thông tin đăng nhập | Không có bí mật; rủi ro là IP được phép bị dùng chung với người khác |
| Hỗ trợ ứng dụng | Cần ứng dụng gửi được thông tin đăng nhập | Ứng dụng nào nhận host và port đều dùng được |
| SOCKS5 trong trình duyệt và cài đặt hệ thống | Thường không hỗ trợ hoặc chập chờn | Hoạt động |
| Khi đổi mạng | Không phải làm gì | Cập nhật danh sách |
| Khắc phục khi bị lộ | Đổi mật khẩu | Gỡ IP khỏi danh sách |
Rủi ro ngầm khi whitelist sai IP
Whitelist tin tưởng tất cả những ai dùng chung địa chỉ được phép. Điều đó ổn khi địa chỉ là máy chủ do bạn kiểm soát, nhưng sẽ thành vấn đề trong các trường hợp sau:
- Mạng gia đình thường nhận IP công cộng thay đổi sau khi khởi động lại modem hoặc sau vài ngày, nên whitelist âm thầm không còn khớp. Đây là chuyện quen thuộc với nhiều thuê bao cáp quang tại Việt Nam.
- Mạng di động và một số nhà mạng cố định đặt rất nhiều khách hàng sau cùng một IP công cộng (carrier-grade NAT). Whitelist IP đó đồng nghĩa với mở proxy cho người lạ dùng chung mạng.
- Văn phòng và coworking chia một IP cho tất cả mọi người trong tòa nhà.
Trước khi thêm một địa chỉ, hãy kiểm tra IP công cộng của chính máy sẽ dùng proxy, và tự hỏi địa chỉ đó có thuộc riêng bạn không. Một máy chủ cloud với IP công cộng riêng là nguồn sạch nhất: địa chỉ không đổi trong suốt thời gian máy chủ tồn tại, và không ai khác gửi lưu lượng từ nó.
Các tình huống thường gặp
Scraper hoặc bot chạy trên VPS
Whitelist IP công cộng của máy chủ và bỏ thông tin đăng nhập khỏi code. Script và file môi trường của bạn sẽ không còn chứa thứ gì đáng để đánh cắp. Cách này kết hợp tốt với các mẫu trong bài scraping bằng Python với proxy.
Trình duyệt hoặc cài đặt hệ điều hành cần SOCKS5
Hãy dùng whitelist. Cài đặt của trình duyệt và hệ điều hành chính là nơi xác thực mật khẩu cho SOCKS5 hay thất bại nhất. Bài cài proxy cho Chrome và Firefox và bài cài proxy trên Windows và macOS có hướng dẫn từng bước.
Một nhóm làm việc từ nhiều địa điểm
Giữ xác thực bằng mật khẩu. Chỉ giao cho mỗi người những proxy họ cần, và đổi mật khẩu khi có người rời nhóm. Đây là trường hợp phổ biến với các agency quản lý fanpage hay shop online có nhân sự làm từ xa.
Trình duyệt antidetect hoặc công cụ tự động hóa
Phần lớn các công cụ này nhận đầy đủ thông tin đăng nhập cho từng profile, nên dùng mật khẩu là hợp lý. Chỉ dùng whitelist khi mọi profile đều chạy trên một máy cố định.
Cách hoạt động trên Cloudj
Proxy của Cloudj mặc định xác thực bằng username và password. Bạn có thể chuyển sang IP whitelist với tối đa 20 địa chỉ; whitelist thay thế việc truy cập bằng mật khẩu, nghĩa là kết nối từ các IP trong danh sách chạy không cần thông tin đăng nhập, còn kết nối từ nơi khác bị từ chối.
Thông tin đăng nhập (host, port, username, password) hiển thị trong console Cloudj. Mỗi lần xem đều được ghi log và bạn nhận được thông báo, nên một lượt xem bất ngờ là tín hiệu để hành động. Bạn có thể đổi mật khẩu trong console bất cứ lúc nào; mật khẩu cũ sẽ ngừng hoạt động, cắt quyền của bất kỳ ai đã sao chép nó. Nếu dùng whitelist, hãy rà lại danh sách khi xóa một máy chủ hoặc khi văn phòng đổi nhà mạng.
Điều này áp dụng cho cả hai loại proxy: proxy IPv4 riêng dùng IP tĩnh đăng ký dưới tên nhà mạng, và proxy static residential có tại Mỹ và Việt Nam. Để có bức tranh tổng thể, hãy đọc hướng dẫn proxy riêng và bài proxy riêng và proxy dùng chung, đồng thời xem bài SOCKS5 và HTTP proxy để hiểu xác thực khác nhau thế nào giữa hai giao thức.
Danh sách kiểm tra ngắn
- Liệt kê mọi nơi proxy sẽ chạy: máy chủ, laptop, điện thoại, công cụ.
- Nếu tất cả đều có IP cố định và chỉ thuộc về bạn, hãy dùng whitelist.
- Nếu có thiết bị di chuyển giữa các mạng, dùng mật khẩu cho thiết bị đó, hoặc đặt một VPS nhỏ làm điểm trung gian.
- Không bao giờ whitelist IP văn phòng dùng chung, IP mạng di động hay IP carrier-grade NAT.
- Đổi mật khẩu khi thay đổi nhân sự, sau khi chia sẻ file cấu hình, và mỗi khi nhận thông báo xem thông tin đăng nhập mà bạn không chủ động thực hiện.
Câu hỏi thường gặp
Có thể dùng whitelist và mật khẩu cùng lúc không?
Trên Cloudj, whitelist thay thế việc truy cập bằng mật khẩu, vì vậy hãy chọn phương thức phù hợp với nơi proxy sẽ được sử dụng.
Tôi có thể whitelist bao nhiêu IP?
Tối đa 20 địa chỉ trên Cloudj.
Công cụ của tôi sẽ ra sao khi đổi mật khẩu?
Mật khẩu cũ ngừng hoạt động, nên bạn cần cập nhật mọi công cụ đang dùng nó. Hãy chọn thời điểm ít việc để đổi.
Vì sao Chrome liên tục lỗi với SOCKS5 proxy của tôi?
Chrome không hỗ trợ username và password cho SOCKS5. Hãy whitelist IP của bạn, hoặc dùng HTTP proxy, loại mà Chrome có thể xác thực.
Chọn phương thức phù hợp
Nếu proxy chạy từ các máy chủ có IP cố định, whitelist đơn giản hơn và không để lại bí mật nào trong code. Nếu mọi người kết nối từ nhiều mạng khác nhau, hãy giữ mật khẩu và đổi định kỳ. Bạn có thể chuyển phương thức và đổi thông tin đăng nhập trong console Cloudj, còn giá trực tiếp theo từng IP có trên trang bảng giá.