Wget Proxy: Cấu Hình HTTP, HTTPS Và SOCKS5 Chi Tiết
Wget proxy là phần cấu hình để công cụ tải file wget đi qua một máy chủ trung gian thay vì kết nối thẳng. Wget đọc proxy từ ba nguồn: biến môi trường, file .wgetrc và cờ -e trên dòng lệnh. Bài viết này ProxyVN hướng dẫn cả ba cách cho HTTP và HTTPS, cách xử lý SOCKS5, và các lỗi hay gặp.
Ba cách cấu hình wget proxy và khi nào dùng cách nào
Ba cách khác nhau ở phạm vi ảnh hưởng và độ bền. Chọn đúng cách ngay từ đầu tránh việc quên tắt proxy làm hỏng các lệnh tải khác.
Biến môi trường: nhanh, tạm thời
Đặt biến http_proxy và https_proxy trong phiên terminal hiện tại. Mọi lệnh wget chạy trong phiên đó đi qua proxy, và cấu hình mất khi đóng terminal. Hợp khi cần tải vài file qua proxy rồi thôi. Ưu điểm là không để lại dấu vết sau khi đóng phiên; nhược điểm là mở terminal mới phải đặt lại.
File .wgetrc: cố định cho một user
Ghi proxy vào file ~/.wgetrc thì mọi lệnh wget của user đó luôn dùng proxy, kể cả sau khi khởi động lại máy. Hợp khi máy luôn phải ra Internet qua proxy. Nhớ phân quyền file chặt vì nó chứa mật khẩu. Nhược điểm là dễ quên rằng proxy đang bật, dẫn tới lúng túng khi proxy hết hạn mà mọi lệnh wget đều báo lỗi.
Cờ -e trên lệnh: cho từng lần tải
Cờ -e cho phép nhét một tùy chọn cấu hình vào đúng một lệnh, không ảnh hưởng lệnh khác. Hợp khi anh em có cấu hình proxy mặc định nhưng muốn một lệnh cụ thể dùng proxy khác, hoặc không dùng proxy. Đây là cách linh hoạt nhất nhưng phải gõ dài mỗi lần.
/etc/environment cho toàn hệ thống
Trên máy chủ chuyên chạy tác vụ tải qua proxy, đặt biến trong /etc/environment để áp cho mọi user và mọi phiên. Cách này nằm ngoài phạm vi cấu hình riêng của wget nhưng wget vẫn đọc được vì nó đọc biến môi trường chung. Chi tiết ở phần cấu hình toàn hệ thống phía dưới.
|
Cách cấu hình |
Phạm vi |
Hợp khi |
|---|---|---|
|
Biến môi trường export |
Cả phiên terminal hiện tại |
Tạm dùng, bật tắt nhanh |
|
File ~/.wgetrc |
Mọi lệnh wget của user đó |
Dùng proxy lâu dài, ổn định |
|
Cờ -e trên lệnh |
Đúng một lệnh |
Ghi đè cấu hình cho một lần tải |
|
/etc/environment |
Toàn hệ thống, mọi user |
Máy chủ chuyên dụng đứng sau proxy |
Cấu hình wget proxy bằng biến môi trường
Đây là cách phổ biến nhất trên Linux và macOS. Wget và nhiều công cụ dòng lệnh khác đều đọc chung bộ biến này.
export http_proxy và https_proxy
Hướng dẫn đặt proxy cho wget của IPRoyal dùng cú pháp chuỗi http kèm username và mật khẩu trước dấu at, rồi tới địa chỉ và cổng. Đặt cả http_proxy cho URL không mã hóa và https_proxy cho URL mã hóa; thiếu một biến thì loại URL tương ứng đi thẳng. Nguồn proxy HTTP và SOCKS5 kèm sẵn username, mật khẩu để đặt vào biến môi trường có tại trang mua proxy.
Biến no_proxy để bỏ qua địa chỉ nội bộ
Biến no_proxy liệt kê các máy chủ không đi qua proxy, cách nhau bằng dấu phẩy, ví dụ localhost, 127.0.0.1 và các tên miền nội bộ. Đặt biến này để lệnh tải từ máy chủ trong mạng LAN không bị vòng qua proxy ngoài. Có thể ghi tên miền theo dạng có dấu chấm ở đầu để khớp cả các tên miền con, ví dụ một chuỗi bắt đầu bằng dấu chấm rồi tới tên công ty sẽ khớp mọi máy chủ thuộc tên miền đó. Cách thiết lập biến no_proxy đúng để bỏ qua địa chỉ nội bộ được nói kỹ trong bài no_proxy là gì.
Đặt một dòng cho một lệnh duy nhất
Có thể đặt biến ngay trước lệnh trên cùng một dòng. Biến chỉ có hiệu lực cho đúng lệnh đó, không ảnh hưởng phiên. Đây là cách gọn để thử một proxy mà không đụng cấu hình đang có. Bài của IPRoyal gọi đây là lệnh proxy một dòng, hữu ích khi muốn kiểm nhanh một IP mới trước khi đưa vào file cấu hình.
Cần lưu ý một điểm về bảo mật: dù đặt biến trước lệnh trên một dòng, chuỗi đầy đủ kèm mật khẩu vẫn được shell ghi vào lịch sử. Nếu chỉ thử một lần, có thể xóa dòng đó khỏi lịch sử ngay sau khi chạy, hoặc thêm một dấu cách ở đầu dòng nếu shell được cấu hình bỏ qua các dòng bắt đầu bằng khoảng trắng.
# Dat cho ca phien terminal hien taiexport http_proxy="http://user:[email protected]:8000"export https_proxy="http://user:[email protected]:8000"export no_proxy="localhost,127.0.0.1,.noi-bo.vn"wget https://vidu.com/file.zip# Hoac chi cho mot lenh duy nhathttp_proxy="http://user:[email protected]:8000" wget -v https://ipv4.icanhazip.com/
Đừng viết mật khẩu proxy thẳng vào lệnh wget. Nó nằm lại trong lịch sử shell và trong danh sách tiến trình mà người khác trên máy đọc được.

Ba cách đặt wget proxy
Cấu hình wget proxy trong file .wgetrc
File cấu hình cho phép đặt proxy một lần và quên đi. Cần biết wget tìm file ở đâu và cú pháp bên trong.
Thứ tự file wget đọc
Wget đọc cấu hình theo thứ tự: file người dùng ~/.wgetrc trước, rồi file toàn hệ thống /etc/wgetrc. Ngoài ra biến môi trường đặt trong ~/.bash_profile hoặc /etc/profile cũng được đọc. Giá trị trong file người dùng ghi đè file hệ thống.
Cú pháp trong ~/.wgetrc
Bật use_proxy bằng on hoặc yes, rồi đặt http_proxy, https_proxy, và ftp_proxy nếu cần, mỗi dòng một biến, giá trị là chuỗi http kèm đăng nhập. Không có dấu export vì đây là file cấu hình của wget, không phải script shell.
# ~/.wgetrc (chay: chmod 600 ~/.wgetrc de bao ve mat khau)use_proxy = onhttp_proxy = http://user:[email protected]:8000https_proxy = http://user:[email protected]:8000
Bảo mật: phân quyền file, không nhúng mật khẩu vào lệnh
Theo hướng dẫn wget proxy của Webshare, nên tránh nhúng username và mật khẩu proxy thẳng vào lệnh, thay vào đó dùng biến môi trường hoặc file cấu hình có phân quyền hạn chế. Chạy chmod 600 cho ~/.wgetrc để chỉ chủ file đọc được.
Nếu môi trường cho phép, ưu tiên gói proxy xác thực bằng danh sách IP cho phép thay vì username và mật khẩu. Khi đó file cấu hình không chứa bí mật nào, chỉ có địa chỉ và cổng, và việc lộ file cũng ít hậu quả hơn. Đổi lại, mỗi khi IP công cộng của máy thay đổi phải cập nhật danh sách cho phép ở bảng điều khiển.
Cấu hình wget proxy ngay trên dòng lệnh với -e
Cờ -e nhét một dòng cấu hình kiểu .wgetrc vào đúng một lệnh. Dùng khi cần ghi đè cấu hình mặc định cho một lần tải.
wget -e use_proxy=yes -e http_proxy=...
Kết hợp hai cờ -e: một để bật use_proxy, một để đặt địa chỉ proxy. Cách này không cần đặt biến môi trường trước, và cấu hình chỉ sống trong phạm vi lệnh đó. Mỗi cờ -e nhận đúng một dòng cú pháp kiểu file cấu hình, nên cần dùng nhiều cờ -e nếu muốn đặt nhiều tùy chọn.
Ghi đè cấu hình sẵn cho một lệnh
Nếu ~/.wgetrc đã bật proxy nhưng anh em cần tải một file từ máy chủ nội bộ không qua proxy, thêm -e use_proxy=off vào đúng lệnh đó. Cấu hình trong file vẫn giữ nguyên cho các lệnh sau. Cách ngược lại cũng đúng: file không bật proxy, nhưng một lệnh cần proxy thì thêm hai cờ -e cho riêng lệnh đó.
wget -e use_proxy=yes \ -e http_proxy=http://user:[email protected]:8000 \ https://vidu.com/file.zip# Bo qua proxy da cau hinh san cho rieng lenh naywget -e use_proxy=off https://noi-bo.vn/tai-lieu.pdf

Cờ -e ghi đè cấu hình cho một lệnh
Cấu hình wget proxy toàn hệ thống trên Linux
Trên máy chủ chạy nhiều tác vụ tải, đặt proxy một chỗ cho toàn hệ thống gọn hơn cấu hình từng user.
Sửa /etc/environment
Tài liệu cấu hình proxy trên Linux của Decodo hướng dẫn mở /etc/environment với quyền root, thêm các dòng http_proxy, https_proxy và no_proxy trỏ tới endpoint proxy, ví dụ dạng gate và cổng. Xác thực bằng username và mật khẩu vẫn theo cú pháp chuỗi http kèm đăng nhập trước dấu at. Cách cấu hình proxy toàn hệ thống trên Ubuntu qua nhiều file khác nhau được hướng dẫn trong bài cách cấu hình proxy Ubuntu.
Khóa file bằng chattr để cấu hình không mất
Decodo lưu ý một số hệ thống ghi đè /etc/environment sau khi khởi động lại. Chạy chattr cộng i để khóa file ở chế độ chỉ đọc, khởi động lại máy cho cấu hình có hiệu lực, và khi cần sửa thì chạy chattr trừ i để mở khóa. Bỏ bước khóa có thể khiến cấu hình biến mất sau lần khởi động sau.
Proxy cho apt và các công cụ khác
Biến trong /etc/environment áp cho wget, curl và phần lớn công cụ dòng lệnh. Riêng trình quản lý gói như apt đôi khi cần cấu hình proxy riêng trong file của nó, vì apt chạy dưới quyền hệ thống và không luôn đọc biến môi trường của user. Kiểm tra tài liệu của từng công cụ nếu nó vẫn không đi qua proxy.
wget proxy và SOCKS5: vì sao cần proxychains
Đây là chỗ nhiều người vướng. Wget bản chuẩn không định tuyến qua proxy SOCKS như với HTTP.
wget không định tuyến SOCKS gốc
Bài so sánh curl và wget của IPRoyal nêu rõ: wget chỉ hỗ trợ HTTP, HTTPS và FTP, và cấu hình proxy dựa trên biến môi trường. Nó không có cờ để đi qua SOCKS5 như curl. Một số hướng dẫn đưa biến socks_proxy nhưng wget bản mainline không dùng biến đó để định tuyến SOCKS thật.
Dùng proxychains bọc lệnh wget
Cách tin cậy để wget đi qua SOCKS5 là bọc lệnh trong proxychains hoặc tsocks. Các công cụ này chặn lời gọi mạng của wget ở tầng thấp và chuyển qua proxy SOCKS khai báo trong file cấu hình của chúng. Cài proxychains, sửa file cấu hình để trỏ tới proxy SOCKS5, rồi chạy proxychains kèm lệnh wget.
Trong file cấu hình proxychains, dòng khai báo proxy có dạng loại, địa chỉ, cổng, rồi username và mật khẩu nếu proxy cần xác thực. Bật tùy chọn proxy_dns trong file để tên miền cũng được giải qua proxy, tránh rò rỉ DNS. Cờ -q làm proxychains bớt in thông báo, giữ đầu ra sạch cho việc ghi log.
Khi nào nên chuyển sang curl
Nếu tác vụ chủ yếu là tải file đơn lẻ qua SOCKS5, curl gọn hơn vì hỗ trợ trực tiếp bằng cờ -x kèm socks5h, trong đó chữ h nghĩa là giải tên miền qua proxy để tránh rò rỉ DNS. Giữ wget cho việc tải đệ quy cả một site qua proxy HTTP, việc mà curl không làm được. Các cờ cURL để đi qua proxy HTTP và SOCKS5 được liệt kê trong bài cURL proxy là gì.
Trên nhiều bản Linux, cả wget và curl đều cài sẵn, nên không phải chọn một bỏ một. Dùng wget khi cần mirror hoặc theo liên kết nhiều tầng, dùng curl khi cần SOCKS5 hoặc gọi API. Biết điểm mạnh của từng công cụ tiết kiệm thời gian hơn là cố ép một công cụ làm việc của công cụ kia.
# wget khong dinh tuyen SOCKS goc -> boc bang proxychains# /etc/proxychains.conf: socks5 gate.example.com 1080 user passproxychains -q wget https://vidu.com/file.zip# curl thi ho tro SOCKS5 truc tiep, socks5h = giai DNS qua proxycurl -x socks5h://user:[email protected]:1080 -O https://vidu.com/file.zip
|
Tiêu chí |
wget |
curl |
|---|---|---|
|
Cấu hình proxy |
Biến môi trường hoặc .wgetrc |
Cờ -x hoặc biến môi trường |
|
SOCKS5 |
Không định tuyến gốc, cần proxychains |
Hỗ trợ trực tiếp bằng -x socks5h |
|
Tải đệ quy cả site |
Có |
Không |
|
Số giao thức |
HTTP, HTTPS, FTP |
Hàng chục giao thức |
|
Hợp cho |
Tải file, mirror site qua proxy HTTP |
Gọi API, tải qua SOCKS5 |
Kiểm tra, tắt wget proxy và xử lý lỗi chứng chỉ
Cấu hình xong phải xác nhận proxy hoạt động, và biết cách tắt cùng cách xử lý lỗi TLS hay gặp.
Kiểm tra IP bằng wget -qO- ifconfig.me
Chạy wget với hai cờ để in nội dung ra màn hình thay vì lưu file, tới một dịch vụ trả về IP người gọi. Nếu IP hiển thị là IP proxy chứ không phải IP máy, cấu hình đã đúng. Đây là cách kiểm nhanh nhất sau mỗi lần đổi cấu hình. Chạy thêm một lần với --no-proxy để so: hai kết quả phải khác nhau, nếu giống nhau nghĩa là proxy chưa thực sự được áp dụng.
Tắt proxy: --no-proxy hoặc use_proxy=off
Cho một lệnh, thêm cờ --no-proxy để bỏ qua mọi cấu hình proxy. Để tắt lâu dài, xóa hoặc đảo biến môi trường, hoặc sửa use_proxy trong ~/.wgetrc thành off. Quên tắt proxy khi nó hết hạn là lý do phổ biến khiến mọi lệnh wget bỗng báo lỗi kết nối.
Lỗi chứng chỉ và --no-check-certificate
Khi đi qua proxy, đôi khi wget báo lỗi xác minh chứng chỉ TLS. Cờ --no-check-certificate bỏ qua bước kiểm tra này, nhưng nó cũng tắt một lớp bảo vệ, chỉ dùng khi anh em tin nguồn tải và proxy. Tốt hơn là cập nhật kho chứng chỉ gốc của hệ thống hoặc dùng proxy không can thiệp vào TLS.
Bài của IPRoyal cũng nhắc đến việc khớp giao thức: dùng proxy HTTP cho URL HTTP, tránh trộn nhầm gây lỗi HTTPS. Nếu proxy hỗ trợ cả hai và anh em đặt cùng một địa chỉ cho http_proxy lẫn https_proxy, phần lớn trường hợp sẽ chạy trơn.

wget không định tuyến SOCKS, dùng proxychains
Lỗi thường gặp khi dùng wget proxy
Vài lỗi khiến proxy không có tác dụng hoặc lệnh tải thất bại.
Nhầm giao thức proxy với giao thức URL
Nếu chỉ đặt http_proxy mà tải một URL https, wget cho URL đó đi thẳng. Ngược lại, đặt https_proxy trỏ tới một proxy chỉ nói HTTP cũng gây lỗi. Đặt cả hai biến, cùng trỏ tới proxy, là cách an toàn nhất cho phần lớn trường hợp. Phân biệt proxy HTTP và proxy HTTPS để không đặt nhầm được nói trong bài proxy HTTPS là gì.
Nhầm email tài khoản với đăng nhập proxy
Username và mật khẩu proxy khác với email và mật khẩu tài khoản dịch vụ. Lấy đúng cặp đăng nhập proxy ở trang danh sách proxy. Lỗi 407 Proxy Authentication Required gần như luôn là do nhầm cặp này hoặc gõ sai ký tự. Cách khắc phục lỗi 407 khi proxy đòi xác thực được hướng dẫn riêng trong bài sửa lỗi 407 proxy authentication required.
Nhúng mật khẩu vào lệnh rồi lộ trong lịch sử shell
Gõ http_proxy kèm mật khẩu ngay trong lệnh khiến mật khẩu nằm lại trong file lịch sử shell và hiện trong danh sách tiến trình. Trên máy dùng chung, người khác đọc được. Dùng file .wgetrc phân quyền 600, hoặc biến môi trường đặt từ một file nguồn không lưu lịch sử.
Proxy chết mà cấu hình vẫn bật
Khi proxy hết hạn hoặc rớt, mọi lệnh wget đọc cấu hình đó đều báo lỗi kết nối, dễ khiến anh em tưởng wget hỏng. Chạy thử một lệnh với --no-proxy tới một trang bất kỳ để xác nhận mạng máy vẫn tốt. Nếu lệnh đó chạy được còn lệnh qua proxy thì không, vấn đề nằm ở proxy chứ không phải wget.
Đặt biến chữ hoa nhưng wget đọc chữ thường
Wget đọc biến http_proxy và https_proxy viết thường. Một số công cụ khác dùng bản chữ hoa HTTP_PROXY. Nếu đặt nhầm chỉ bản chữ hoa, wget bỏ qua và tải đi thẳng. Đặt cả hai bản cho an tâm, hoặc kiểm tra lại tên biến.
Checklist rút gọn
-
Đặt cả http_proxy và https_proxy, cùng trỏ tới proxy.
-
Với dùng lâu dài, ghi vào ~/.wgetrc rồi chmod 600.
-
SOCKS5: bọc lệnh bằng proxychains, hoặc chuyển sang curl -x socks5h.
-
Kiểm tra bằng wget -qO- một dịch vụ trả về IP.
-
Không gõ mật khẩu proxy thẳng vào lệnh.

Kiểm tra IP và bảo mật thông tin đăng nhập
Wget proxy với HTTP và HTTPS chỉ là đặt hai biến http_proxy và https_proxy, hoặc ghi chúng vào ~/.wgetrc, hoặc truyền qua cờ -e cho một lệnh. SOCKS5 thì wget không đi gốc, phải bọc bằng proxychains hoặc dùng curl. Luôn giấu mật khẩu trong file phân quyền chặt và kiểm tra IP sau khi cấu hình. Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam hỗ trợ anh em lấy đúng địa chỉ, cổng và thông tin đăng nhập cho wget.