Hướng dẫn
Xác thực proxy: tên người dùng/mật khẩu hay IP whitelist?
Có hai cách cấp quyền dùng proxy: tên người dùng/mật khẩu gửi kèm mỗi kết nối, hoặc địa chỉ IP công khai đã đăng ký trong bảng điều khiển (IP whitelist). Bài viết giải thích hai phương thức hoạt động ra sao với HTTP và SOCKS5, kèm bảng so sánh, cách chọn theo tình huống, phương thức áp dụng cho từng sản phẩm WeProxy và cách sửa lỗi 407.
Tóm tắt nhanh
- Xác thực proxy có hai cách: với tên người dùng/mật khẩu, client gửi thông tin đăng nhập ở mỗi kết nối; với IP whitelist, proxy so sánh địa chỉ IP công khai mà kết nối đi tới với danh sách đã lưu trong bảng điều khiển.
- Tên người dùng/mật khẩu hợp với thiết bị có IP thay đổi thường xuyên (laptop, điện thoại, dữ liệu di động) và khi dùng theo nhóm; IP whitelist tiện hơn cho server IP tĩnh và chương trình không có ô mật khẩu.
- Whitelist cần địa chỉ công khai đi ra internet, không phải địa chỉ nội bộ của máy; nếu server kết nối tới gateway qua IPv6 thì thêm địa chỉ IPv6, còn trên cloud thì thêm địa chỉ NAT đầu ra.
- Chrome không hỗ trợ SOCKS5 proxy có tên người dùng/mật khẩu, và màn hình proxy hệ thống của Windows và Android không có ô mật khẩu; trong các trường hợp này hãy dùng IP whitelist hoặc HTTP + tên người dùng/mật khẩu.
- Sự cố xác thực thường hiện ra dưới dạng 407 Proxy Authentication Required: nguyên nhân hay gặp nhất là ký tự chưa mã hóa trong mật khẩu, IP công khai đã đổi hoặc IP đầu ra của server không có trong danh sách.
Xác thực proxy là việc proxy server kiểm tra ai đang mở kết nối và từ chối những ai không có quyền. Có hai phương thức: với tên người dùng/mật khẩu, client gửi thông tin đăng nhập ở mỗi kết nối; với IP whitelist (danh sách IP được phép), proxy nhìn vào địa chỉ IP công khai mà kết nối đi tới và chấp nhận không cần mật khẩu nếu địa chỉ đó đã được đăng ký trong danh sách.
Nếu địa chỉ IP của bạn thay đổi thường xuyên hoặc bạn dùng proxy trên nhiều thiết bị, hãy chọn tên người dùng/mật khẩu. Nếu code chạy trên một server có IP tĩnh, hoặc chương trình bạn dùng không có ô nhập mật khẩu, IP whitelist sẽ tiện hơn. Các ví dụ dùng địa chỉ gateway của WeProxy là gw.weproxy.com.tr:8989; USER và PASSWORD là thông tin trong bảng điều khiển khách hàng của bạn.
Xác thực proxy là gì và hoạt động ra sao?
Proxy phải biết nó đang chuyển lưu lượng của ai; một proxy mở sẽ cho lưu lượng của bất kỳ ai đi qua gói dịch vụ của bạn. Vì vậy việc xác thực diễn ra ngay đầu kết nối và có kết quả trước khi bất kỳ request nào tới website đích.
Với HTTP proxy, luồng này được định nghĩa trong RFC 9110. Nếu client kết nối mà không gửi thông tin đăng nhập, proxy trả về 407 Proxy Authentication Required kèm header Proxy-Authenticate. Client gửi lại request, lần này có header Proxy-Authorization: Basic .... Ở phương thức Basic, tên_người_dùng:mật_khẩu chỉ được mã hóa Base64 chứ không được mã hóa bảo mật (RFC 7617).
Ở SOCKS5, client trước tiên liệt kê các phương thức nó hỗ trợ (RFC 1928). 0x00 là kết nối không xác thực, 0x02 là tên người dùng/mật khẩu. Nếu proxy chọn 0x02, tên người dùng và mật khẩu được gửi dưới dạng văn bản thuần qua bước thương lượng con trong RFC 1929. Trong kết nối dùng IP whitelist, proxy chấp nhận 0x00, vì nó đã quyết định dựa trên IP nguồn rồi.
IP whitelist không phụ thuộc giao thức. Proxy so sánh địa chỉ mà kết nối TCP đi tới với danh sách đã lưu trong bảng điều khiển. Nếu địa chỉ có trong danh sách, kết nối được chấp nhận; nếu không, bạn sẽ thấy 407 với HTTP, còn với SOCKS5 là phương thức bị từ chối (0xFF) hoặc kết nối bị đóng.
Dùng proxy với tên người dùng và mật khẩu như thế nào?
Thông tin đăng nhập được thêm vào địa chỉ proxy hoặc nhập vào các ô riêng của chương trình. Trong cURL, cả hai cách viết đều chạy:
curl -x "http://USER:[email protected]:8989" https://api.ipify.org
curl -x "http://gw.weproxy.com.tr:8989" -U "USER:PASSWORD" https://api.ipify.org
Ưu điểm lớn nhất của phương thức này là tính di động. Cùng một dòng chạy được trên mạng gia đình, dữ liệu di động, cloud server và máy tính của đồng nghiệp. Khi IP đầu ra của bạn thay đổi, bạn không phải làm gì cả. Vì không quan trọng bạn kết nối từ thiết bị nào, việc chia sẻ trong nhóm cũng dễ.
Cái giá phải trả là mật khẩu nằm ở khắp nơi. Dòng proxy đi vào script, biến môi trường, profile antidetect và đôi khi cả log. Một ảnh chụp màn hình được chia sẻ hoặc một file cấu hình bị đẩy lên repository công khai là đủ để người khác dùng gói của bạn. Trong code, hãy đọc mật khẩu từ biến môi trường và xóa mật khẩu trong URL trước khi chia sẻ log.
Giới hạn thứ hai là có những chương trình hoàn toàn không nhận thông tin đăng nhập. Cờ --proxy-server của Chrome không đọc phần user:pass@, và Chrome không hỗ trợ SOCKS5 proxy có tên người dùng/mật khẩu. Màn hình proxy hệ thống của Windows và Android chỉ có ô host và port. Để dùng proxy có mật khẩu trong trình duyệt, bạn có thể dùng tiện ích mở rộng chính thức; cách cài đặt có trên trang tích hợp Chrome. Nếu mật khẩu chứa ký tự như @ hoặc :, ở dạng URL cần percent-encoding; quy tắc viết có trong hướng dẫn định dạng proxy.
IP whitelist là gì và hoạt động ra sao?
Với IP whitelist, bạn đăng ký địa chỉ IP công khai của mình trong bảng điều khiển khách hàng thay cho mật khẩu. Proxy chấp nhận kết nối từ địa chỉ này mà không cần mật khẩu. Dòng proxy rút gọn thành host:port:
curl -x "http://gw.weproxy.com.tr:8989" https://api.ipify.org
Địa chỉ cần đăng ký không được là địa chỉ nội bộ của máy tính (192.168.x.x, 10.x.x.x). Proxy chỉ thấy địa chỉ công khai đi ra internet. Bạn có thể xem địa chỉ này bằng cách mở công cụ My IP trên thiết bị sẽ dùng proxy khi proxy đang tắt, hoặc từ dòng lệnh:
curl https://api.ipify.org # địa chỉ IPv4 công khai của bạn
curl https://api64.ipify.org # địa chỉ IPv6 của bạn nếu có IPv6
Nếu server kết nối tới gateway qua IPv6, danh sách phải có địa chỉ IPv6; nếu bạn chỉ đăng ký địa chỉ IPv4, kết nối sẽ bị từ chối. Trên môi trường cloud, địa chỉ nội bộ của máy chạy code khác với địa chỉ NAT mà nó dùng để ra internet. Luôn ghi địa chỉ đầu ra (egress) vào danh sách.
Phương thức này loại bỏ hẳn thông tin đăng nhập. Không có mật khẩu nào để lộ, và cả những chương trình không có ô mật khẩu cũng dùng được proxy. Giới hạn của nó là địa chỉ phải cố định. Với mạng gia đình, khi modem khởi động lại; với dữ liệu di động, khi chuyển trạm phát sóng; hoặc khi đổi VPN server, IP công khai sẽ thay đổi và kết nối bị từ chối.
Một số nhà cung cấp dịch vụ internet và nhà mạng di động dùng CGNAT để chia sẻ cùng một IP công khai cho nhiều thuê bao. Khi bạn thêm một địa chỉ dùng chung vào whitelist, mọi người đứng sau địa chỉ đó đều có thể kết nối vào gói của bạn mà không cần mật khẩu. Chỉ dùng whitelist với những địa chỉ tĩnh thuộc về bạn.
So sánh tên người dùng/mật khẩu và IP whitelist
| Tiêu chí | Tên người dùng/mật khẩu | IP whitelist |
|---|---|---|
| Dòng proxy | http://USER:PASSWORD@host:port | host:port |
| Khi IP đầu ra của bạn thay đổi | Không ảnh hưởng | Kết nối bị từ chối, bạn cần cập nhật danh sách |
| Nhiều thiết bị | Tất cả kết nối bằng cùng thông tin | IP công khai của từng thiết bị được thêm vào danh sách |
| Rủi ro rò rỉ | Mật khẩu bị sao chép cùng với dòng proxy | Không có mật khẩu; với IP dùng chung, người khác cũng kết nối được |
| Chương trình không có ô mật khẩu | Không chạy hoặc hiện cửa sổ hỏi mật khẩu | Chạy được |
| Chrome và SOCKS5 | Không hỗ trợ | Chạy được |
| Bắt tay SOCKS5 | Chọn phương thức + xác thực | Chỉ chọn phương thức |
| Cách dùng điển hình | Laptop, di động, làm việc nhóm, profile antidetect | Server IP tĩnh, VPS, cài đặt proxy hệ thống |
Xác thực chỉ tạo ra chênh lệch tốc độ ở các kết nối mới. SOCKS5 có tên người dùng/mật khẩu cần thêm một vòng gửi-nhận ở mỗi kết nối mới; IP whitelist không có bước này. Với các kết nối được giữ mở, bạn sẽ không cảm nhận được khác biệt. Những khác biệt còn lại giữa hai giao thức có trong bài HTTP vs SOCKS5.
Nên chọn phương thức nào trong trường hợp nào?
| Tình huống | Phương thức nên dùng | Lý do |
|---|---|---|
| Scraper hoặc bot trên VPS có IP tĩnh | IP whitelist | Mật khẩu không nằm trong code, dòng proxy ngắn gọn |
| Laptop, làm việc ở nhà và ở văn phòng | Tên người dùng/mật khẩu | IP công khai thay đổi trong ngày |
| Điện thoại hoặc dữ liệu di động | Tên người dùng/mật khẩu | IP của nhà mạng thay đổi thường xuyên và có thể bị dùng chung |
| SOCKS5 với Puppeteer hoặc Chrome | IP whitelist hoặc HTTP + tên người dùng/mật khẩu | Chrome không hỗ trợ SOCKS5 có mật khẩu |
| Cài đặt proxy hệ thống trên Windows hoặc Android | IP whitelist | Màn hình không có ô mật khẩu |
| Nhiều profile trong trình duyệt antidetect | Tên người dùng/mật khẩu | Mỗi profile mang dòng proxy riêng |
| Chia sẻ proxy trong nhóm | Tên người dùng/mật khẩu | Mỗi người kết nối từ một mạng khác nhau |
Một số nhóm dùng kết hợp cả hai. Các tác vụ trên server kết nối bằng whitelist, còn các bài test trên laptop dùng tên người dùng/mật khẩu. Nếu sản phẩm của bạn hỗ trợ cả hai phương thức, cách bố trí này giúp mật khẩu không lọt vào file trên server. Ví dụ code cho cả hai phương thức trong Python có trong bài dùng proxy trong Python; cách thiết lập Puppeteer có trên trang tích hợp Puppeteer.
Sản phẩm WeProxy dùng phương thức xác thực nào?
Phương thức nào được bật tùy theo sản phẩm. Theo thông tin trên các trang sản phẩm:
| Sản phẩm | Xác thực | Ghi chú |
|---|---|---|
| Static Residential IPv4 | Chỉ tên người dùng/mật khẩu | Sản phẩm này không có IP whitelist |
| Mobile 4G/5G Proxy | Chỉ tên người dùng/mật khẩu | Không có IP whitelist; endpoint là HTTP |
| Rotating Residential IPv4 không giới hạn | Tên người dùng/mật khẩu | Thông tin được cấp trong bảng điều khiển |
| Static Datacenter IPv4 | Tên người dùng/mật khẩu | Thẻ gói ghi User:Pass auth |
| Static Datacenter IPv6 | Hỗ trợ IP whitelist | Phần tính năng ghi quản lý whitelist dễ dàng |
| Gaming Proxy | Tên người dùng/mật khẩu, IP whitelist tùy chọn | Thông tin có trong bảng điều khiển sau khi thanh toán |
Với các sản phẩm khác, phương thức và giao thức được hỗ trợ được ghi trong phần thông số kỹ thuật và FAQ của trang sản phẩm. Các câu hỏi chung được tập hợp trên trang FAQ. Thông tin đăng nhập và cài đặt whitelist được quản lý trong bảng điều khiển khách hàng. Chỉ thêm vào whitelist những địa chỉ IP thuộc về bạn hoặc bạn được phép sử dụng.
IP whitelist của website đích: khi cần IP đầu ra cố định
Từ whitelist đôi khi được dùng theo chiều ngược lại. API của một đối tác, một trang quản trị hoặc một dịch vụ thanh toán có thể chỉ trả lời request đến từ các IP đã đăng ký. Khi đó bạn ghi vào danh sách IP đầu ra mà proxy cấp cho bạn; bạn kết nối tới proxy bằng cách nào thì không quan trọng.
Việc này cần một sản phẩm có địa chỉ đầu ra không đổi. Với rotating proxy, IP đổi theo từng request hoặc khi hết thời gian phiên; danh sách của phía bên kia mất hiệu lực ngay lần đổi đầu tiên. Static datacenter IPv4 proxy cấp cho bạn một IP tĩnh dành riêng; địa chỉ giữ nguyên trong suốt thời hạn gói. Bạn kết nối tới proxy bằng tên người dùng/mật khẩu, còn dịch vụ đích nhận diện IP đầu ra cố định. Khác biệt giữa mô hình IP tĩnh và IP xoay có trong hướng dẫn sticky và rotating proxy, còn cách chọn giữa datacenter và ISP proxy có trong bài ISP proxy vs datacenter proxy.
Khắc phục lỗi 407 và sự cố whitelist như thế nào?
Phần lớn sự cố xác thực xuất hiện dưới dạng 407 Proxy Authentication Required. Ở SOCKS5, cùng sự cố đó thường biểu hiện bằng việc kết nối bị đóng ngay lập tức.
| Triệu chứng | Nguyên nhân có thể | Cách khắc phục |
|---|---|---|
407, dòng proxy trông có vẻ đúng | Mật khẩu có @, : hoặc / chưa mã hóa | Percent-encode mật khẩu trong URL |
407, hôm qua vẫn chạy | IP công khai đã đổi, địa chỉ trong whitelist đã cũ | Tìm địa chỉ mới bằng My IP và thêm vào bảng điều khiển |
Chạy ở máy local, trên server báo 407 | IP đầu ra của server không có trong danh sách | Chạy curl https://api.ipify.org trên server và thêm địa chỉ |
407 trên server có IPv6 | Kết nối tới gateway qua IPv6, danh sách chỉ có IPv4 | Thêm cả địa chỉ IPv6 hoặc buộc kết nối IPv4 |
407 khi đang bật VPN | Kết nối tới proxy từ IP đầu ra của VPN | Thêm IP đầu ra của VPN hoặc chuyển sang tên người dùng/mật khẩu |
| SOCKS5 không kết nối được trong Chrome | Chrome không hỗ trợ SOCKS5 có mật khẩu | Dùng scheme HTTP hoặc IP whitelist |
| Cài đặt hệ thống liên tục hiện cửa sổ hỏi mật khẩu | Chương trình không hỗ trợ ô mật khẩu | Dùng IP whitelist |
Để biết bản thân dòng proxy có đúng hay không mà không phụ thuộc vào chương trình, hãy dán nó vào proxy checker. Một dòng chạy được trong checker nhưng không chạy trong chương trình của bạn cho thấy vấn đề nằm ở phần cài đặt proxy của chương trình. Các mã 407, 403, 429 và 502 đến từ tầng nào được giải thích trong hướng dẫn mã lỗi proxy. Cách sắp thứ tự khi dùng VPN cùng với proxy có trong bài proxy hay VPN.
Danh sách kiểm tra để giữ an toàn thông tin xác thực proxy
- Không ghi mật khẩu vào repository code; đọc nó từ biến môi trường hoặc trình quản lý bí mật.
- Xóa mật khẩu trong URL trước khi gửi log, báo cáo lỗi và yêu cầu hỗ trợ.
- Nếu nghi ngờ mật khẩu bị lộ, hãy ngừng dùng và yêu cầu thông tin mới qua bảng điều khiển khách hàng hoặc đội hỗ trợ.
- Chỉ thêm vào whitelist những địa chỉ tĩnh thuộc về bạn; không thêm IP gia đình và di động nằm sau CGNAT.
- Gỡ IP của các server bạn không còn dùng khỏi danh sách. Địa chỉ của một VPS đã hủy có thể được cấp cho khách hàng khác sau một thời gian.
- Với HTTP proxy, thông tin Basic đi tới proxy mà không được mã hóa. Với đích HTTPS, nội dung trang vẫn được mã hóa trong tunnel
CONNECT, nhưng hãy tính đến điều này khi dùng thông tin proxy trên những mạng bạn không tin tưởng.
Dù chọn phương thức nào, khi làm việc qua proxy bạn vẫn phải tuân theo điều khoản sử dụng của website đích, file robots.txt, GDPR và quy định bảo vệ dữ liệu cá nhân tại địa phương, chẳng hạn các quy định về bảo vệ dữ liệu cá nhân của Việt Nam. Những cách sử dụng được phép với dịch vụ WeProxy được ghi trên trang chính sách sử dụng chấp nhận được.
Câu hỏi thường gặp
IP whitelist trong proxy là gì?
IP whitelist là cách cấp quyền dùng proxy bằng địa chỉ IP thay cho mật khẩu. Bạn đăng ký IP công khai của mình trong bảng điều khiển khách hàng, và proxy chấp nhận kết nối từ địa chỉ đó mà không hỏi tên người dùng hay mật khẩu. Dòng proxy rút gọn thành host:port. Cách này hợp với server IP tĩnh và chương trình không có ô mật khẩu; khi IP đổi, bạn cần cập nhật danh sách.
Tên người dùng/mật khẩu hay IP whitelist an toàn hơn?
Mỗi cách có rủi ro riêng. Với tên người dùng/mật khẩu, mật khẩu có thể lộ qua code, log hoặc ảnh chụp màn hình. IP whitelist không có mật khẩu để lộ, nhưng nếu bạn thêm IP gia đình hoặc di động dùng chung qua CGNAT, ai đứng sau địa chỉ đó cũng kết nối được. Có IP server tĩnh của riêng bạn thì chọn whitelist; IP hay đổi thì dùng tên người dùng/mật khẩu lưu trong biến môi trường.
Nên thêm địa chỉ IP nào vào whitelist?
Hãy thêm địa chỉ IP công khai mà thiết bị dùng proxy đi ra internet; các địa chỉ nội bộ như 192.168.x.x hoặc 10.x.x.x không có tác dụng. Bạn có thể xem địa chỉ này bằng công cụ My IP khi proxy đang tắt, hoặc bằng lệnh curl https://api.ipify.org. Nếu server kết nối tới gateway qua IPv6, hãy thêm cả địa chỉ IPv6. Trên cloud, ghi địa chỉ NAT đầu ra thay cho địa chỉ nội bộ của máy.
Vì sao dùng IP whitelist mà vẫn bị lỗi 407?
Nghĩa là proxy không thấy địa chỉ của kết nối trong danh sách. Nguyên nhân hay gặp: IP gia đình đổi sau khi modem khởi động lại, script chuyển sang server chưa có trong danh sách, server kết nối tới gateway qua IPv6, hoặc VPN đang bật. Hãy kiểm tra lại IP công khai trên thiết bị dùng proxy và so với danh sách trong bảng điều khiển; nếu địa chỉ hay đổi, chuyển sang tên người dùng/mật khẩu.
Vì sao SOCKS5 proxy có mật khẩu không chạy trong Chrome hoặc Puppeteer?
Chrome không hỗ trợ SOCKS5 proxy có tên người dùng và mật khẩu, và cờ --proxy-server cũng không đọc phần user:pass@. Vì vậy khi đưa SOCKS5 có mật khẩu cho Puppeteer hoặc Chrome, kết nối không được thiết lập. Hãy dùng HTTP proxy và cung cấp thông tin đăng nhập qua page.authenticate(), hoặc thêm IP server vào whitelist rồi kết nối SOCKS5 không mật khẩu. Khi dùng thủ công trong trình duyệt, có thể dùng tiện ích WeProxy Manager.









