WeProxy

Hướng dẫn

Xác thực proxy: tên người dùng/mật khẩu hay IP whitelist?

đọc 9 phút

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ẩuIP whitelist
Dòng proxyhttp://USER:PASSWORD@host:porthost:port
Khi IP đầu ra của bạn thay đổiKhông ảnh hưởngKế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 tinIP 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 proxyKhô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ẩuKhông chạy hoặc hiện cửa sổ hỏi mật khẩuChạy được
Chrome và SOCKS5Không hỗ trợChạy được
Bắt tay SOCKS5Chọn phương thức + xác thựcChỉ chọn phương thức
Cách dùng điển hìnhLaptop, di động, làm việc nhóm, profile antidetectServer 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ốngPhương thức nên dùngLý do
Scraper hoặc bot trên VPS có IP tĩnhIP whitelistMậ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òngTên người dùng/mật khẩuIP công khai thay đổi trong ngày
Điện thoại hoặc dữ liệu di độngTên người dùng/mật khẩuIP của nhà mạng thay đổi thường xuyên và có thể bị dùng chung
SOCKS5 với Puppeteer hoặc ChromeIP whitelist hoặc HTTP + tên người dùng/mật khẩuChrome không hỗ trợ SOCKS5 có mật khẩu
Cài đặt proxy hệ thống trên Windows hoặc AndroidIP whitelistMàn hình không có ô mật khẩu
Nhiều profile trong trình duyệt antidetectTên người dùng/mật khẩuMỗi profile mang dòng proxy riêng
Chia sẻ proxy trong nhómTên người dùng/mật khẩuMỗ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ẩmXác thựcGhi chú
Static Residential IPv4Chỉ tên người dùng/mật khẩuSản phẩm này không có IP whitelist
Mobile 4G/5G ProxyChỉ tên người dùng/mật khẩuKhông có IP whitelist; endpoint là HTTP
Rotating Residential IPv4 không giới hạnTên người dùng/mật khẩuThông tin được cấp trong bảng điều khiển
Static Datacenter IPv4Tên người dùng/mật khẩuThẻ gói ghi User:Pass auth
Static Datacenter IPv6Hỗ trợ IP whitelistPhần tính năng ghi quản lý whitelist dễ dàng
Gaming ProxyTên người dùng/mật khẩu, IP whitelist tùy chọnThô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ứngNguyên nhân có thểCách khắc phục
407, dòng proxy trông có vẻ đúngMật khẩu có @, : hoặc / chưa mã hóaPercent-encode mật khẩu trong URL
407, hôm qua vẫn chạyIP 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 407IP đầu ra của server không có trong danh sáchChạy curl https://api.ipify.org trên server và thêm địa chỉ
407 trên server có IPv6Kết nối tới gateway qua IPv6, danh sách chỉ có IPv4Thêm cả địa chỉ IPv6 hoặc buộc kết nối IPv4
407 khi đang bật VPNKết nối tới proxy từ IP đầu ra của VPNThê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 ChromeChrome không hỗ trợ SOCKS5 có mật khẩuDù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ẩuChương trình không hỗ trợ ô mật khẩuDù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.

Bắt Đầu

Kiểm tra thiết lập proxy của bạn ngay hôm nay

Kiểm tra khả năng kết nối bằng các công cụ miễn phí hoặc trao đổi với bộ phận bán hàng để chọn gói phù hợp.