Tóm tắt
- Sử dụng
curl --proxycho một yêu cầu proxy curl một lần trên Linux. Truyền điểm cuối proxy riêng biệt với--proxy-userđể lệnh vẫn dễ đọc và thông tin xác thực proxy được phân biệt rõ ràng với thông tin xác thực máy chủ gốc. - Chọn giao thức proxy một cách có chủ đích.
http://,https://,socks5://, vàsocks5h://mô tả cách curl kết nối với proxy;socks5h://cũng di chuyển việc phân giải DNS đến proxy. - Chỉ sử dụng biến môi trường hoặc tệp cấu hình curl khi proxy cần giữ lại. Cờ một lần dễ dàng kiểm tra hơn, trong khi
http_proxy,https_proxy,ALL_PROXY,NO_PROXY, và~/.curlrcthì tốt hơn cho quy trình làm việc có thể lặp lại. - Xác minh ba kết quả riêng biệt. Xác nhận rằng curl đã đến được proxy, rằng điểm đến thấy địa chỉ IP ra như mong đợi, và rằng điểm đến đã trả lại trạng thái HTTP mà tác vụ của bạn yêu cầu.
- Xem xét thông tin xác thực như bí mật. Lịch sử lệnh, siêu dữ liệu quy trình, biến môi trường, và tệp cấu hình có thể đọc được đều có thể tiết lộ mật khẩu proxy nếu máy chủ bị chia sẻ hoặc kiểm soát kém.
- Sử dụng URL Proxy được tạo bởi kênh Nstproxy của bạn. Không sao chép tên miền cổng từ một hướng dẫn cũ vì máy chủ, cổng, tên người dùng, và các tham số phiên do bảng điều khiển tạo ra là có thẩm quyền cho tài khoản của bạn.
Những gì cài đặt Curl Proxy trên Linux thay đổi
Cài đặt curl proxy trên Linux gửi kết nối của curl đến một điểm cuối trung gian, sau đó kết nối đến đích thay mặt cho bạn. Curl sử dụng -x hoặc --proxy cho điểm cuối đó và giả định là một proxy HTTP khi URL proxy không có giao thức, theo tài liệu dành cho proxy HTTP chính thức của curl.
URL điểm đến và URL proxy mô tả các bước mạng khác nhau. Ví dụ, một điểm đến HTTPS được đến qua proxy HTTP vẫn nhận được kết nối TLS từ đầu đến cuối sau khi curl yêu cầu proxy tạo một đường hầm CONNECT. Một proxy HTTPS cũng thêm TLS vào bước kết nối từ máy khách đến proxy.
| Thành phần lệnh | Kiểm soát điều gì | Ví dụ |
|---|---|---|
| URL điểm đến | Trang web hoặc API mà bạn muốn đến | https://example.com/health |
| Giao thức proxy | Cách curl kết nối với proxy | http:// hoặc socks5h:// |
| Điểm cuối proxy | Máy chủ và cổng proxy đã tạo | $PROXY_HOST:$PROXY_PORT |
| Thông tin xác thực proxy | Xác thực tại trung gian | $PROXY_USER:$PROXY_PASS |
| Thông tin xác thực gốc | Xác thực tại điểm đến | Một -u, mã thông báo, hoặc tiêu đề riêng khi cần thiết |
Nhìn qua một chút
Nếu bạn cần một điểm cuối HTTP hoặc SOCKS5 được tạo cho các bài kiểm tra curl có thể lặp lại, Nstproxy cho phép bạn tạo URL Proxy trong một Kênh và ánh xạ các giá trị của nó trực tiếp vào các lệnh dưới đây.
Kiểm tra Curl trên Linux trước khi bạn cấu hình Proxy
Kiểm tra bản dựng curl đã cài đặt cho biết các giao thức và tính năng proxy nào có trên máy chủ Linux đó. Hầu hết các phân phối hiện tại bao gồm curl hoặc cung cấp qua trình quản lý gói chuẩn, nhưng danh sách tính năng của tệp nhị phân hữu ích hơn nhiều so với việc giả định hỗ trợ từ tên hệ điều hành.
curl --version curl --help proxy
Tìm kiếm HTTP, HTTPS, và HTTPS-proxy trong đầu ra giao thức hoặc tính năng khi những khả năng đó quan trọng. Đối với SOCKS, trợ giúp proxy nên liệt kê các tùy chọn như --socks5 và --socks5-hostname.
Nếu curl bị thiếu, hãy cài đặt nó từ kho lưu trữ phân phối và chạy lại curl --version. Trên Debian hoặc Ubuntu, lệnh cài đặt là sudo apt-get update && sudo apt-get install curl; trên Fedora, sử dụng sudo dnf install curl; và trên Arch Linux, sử dụng sudo pacman -S curl.
Sao chép URL Proxy Nstproxy của bạn vào các biến an toàn
Cài đặt tái sử dụng an toàn nhất sao chép URL Proxy cụ thể cho tài khoản vào các biến shell mà không công khai các giá trị thực. Quy trình tạo proxy của Nstproxy bắt đầu trong một Kênh: bật Tạo Proxy, chọn các tham số và sao chép URL Proxy kết quả. Định dạng tích hợp curl chính thức phân tách --proxy host:port khỏi --proxy-user username:password.
Khối dưới đây là một mẫu minh họa vì nó yêu cầu thông tin xác thực được tạo ra trong bảng điều khiển của riêng bạn:
read -r -p "Máy chủ proxy: " PROXY_HOST read -r -p "Cổng proxy: " PROXY_PORT read -r -p "Tên người dùng proxy: " PROXY_USER
read -r -s -p "Mật khẩu proxy: " PROXY_PASS
echo
export PROXY_HOST PROXY_PORT PROXY_USER PROXY_PASS
read -s ngăn không cho mật khẩu được hiện trên màn hình khi bạn nhập, nhưng việc xuất một bí mật không phải là một biên giới bảo mật phổ quát. Trên một máy chủ chia sẻ hoặc được quản lý chặt chẽ, hãy sử dụng kho bí mật của hệ điều hành hoặc một bí mật của quá trình được tiêm vào và giữ thông tin xác thực ra khỏi các tệp khởi động shell.
Gửi Yêu Cầu HTTP hoặc HTTPS Qua Proxy
Lệnh xác thực tiêu chuẩn sử dụng --proxy cho điểm cuối và --proxy-user cho cặp thông tin xác thực. Cấu trúc này cũng giúp dễ dàng thay thế hoặc xoay vòng thông tin xác thực mà không cần chỉnh sửa URL đích.
Lệnh dưới đây là một mẫu phụ thuộc vào yêu cầu; nó trở nên có thể chạy sau khi bạn thay thế bốn biến môi trường bằng giá trị từ URL Proxy Nstproxy đã tạo của bạn:
curl --silent --show-error --fail-with-body \ --connect-timeout 10 \ --max-time 30 \ --proxy "http://${PROXY_HOST}:${PROXY_PORT}" \ --proxy-user "${PROXY_USER}:${PROXY_PASS}" \ "https://httpbin.org/ip"
Tiền tố http:// mô tả kết nối đến proxy, không phải giao thức của đích. Một điểm đến HTTPS thông thường đi qua proxy HTTP trong một đường hầm CONNECT, trong khi https://$PROXY_HOST:$PROXY_PORT yêu cầu TLS giữa curl và proxy.
Đừng thêm --insecure như một biện pháp sửa lỗi thường xuyên. Tùy chọn đó làm yếu đi việc xác minh chứng chỉ cho kết nối đến đích; một proxy HTTPS có các điều khiển xác minh riêng biệt như --proxy-cacert và --proxy-insecure, và tắt bất kỳ kiểm tra nào nên là một bước chẩn đoán ngắn, có tài liệu chứ không phải một cài đặt sản xuất.
Sử Dụng SOCKS5 Mà Không Rò Rỉ DNS Đích
Sử dụng socks5h:// khi proxy nên giải quyết tên miền đích. Tài liệu SOCKS chính thức của curl phân biệt socks5://, giải quyết đích cục bộ, với socks5h://, chuyển tên miền đến proxy.
Hình dạng lệnh và sự chuyển giao tên miền phía proxy đã chạy qua một proxy SOCKS5 có xác thực cục bộ; một yêu cầu Nstproxy thực sự vẫn yêu cầu thông tin xác thực tài khoản đã tạo.
curl --silent --show-error --fail-with-body \ --connect-timeout 10 \ --max-time 30 \ --proxy "socks5h://${PROXY_HOST}:${PROXY_PORT}" \ --proxy-user "${PROXY_USER}:${PROXY_PASS}" \ "https://httpbin.org/ip"
Đối với các cuộc gọi API HTTP thông thường, một proxy HTTP hoặc proxy SOCKS5 có thể hoạt động. HTTP thường là lựa chọn trực tiếp hơn cho lưu lượng chỉ web, trong khi SOCKS5 hữu ích khi một ứng dụng cần một phương tiện proxy tổng quát hơn. Quyết định cụ thể của curl thường là vị trí DNS, đó là lý do tại sao socks5h:// nên được ghi rõ chứ không phải ngụ ý. Để so sánh giao thức rộng hơn, xem hướng dẫn của Nstproxy về SOCKS5 so với HTTP proxies.
Đặt Biến Môi Trường Proxy Cho Các Lệnh Lặp Lại
Biến môi trường cho phép nhiều lệnh curl chia sẻ một cấu hình proxy mà không cần lặp lại --proxy. Curl đọc các biến theo từng giao thức, quay lại ALL_PROXY, và cho phép NO_PROXY bỏ qua các máy chủ đã chọn, như đã được tài liệu trong hướng dẫn biến môi trường proxy chính thức.
Luồng biến môi trường này đã chạy qua một proxy HTTP có xác thực cục bộ; sử dụng các giá trị Nstproxy đã tạo trước khi chạy nó chống lại dịch vụ.
export http_proxy="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}" export https_proxy="$http_proxy" export NO_PROXY="localhost,127.0.0.1,.internal.example" curl --silent --show-error --fail-with-body "https://httpbin.org/ip" unset http_proxy https_proxy ALL_PROXY NO_PROXY
Cách viết chữ thường của http_proxy là có chủ ý. Curl từ chối HTTP_PROXY viết hoa vì môi trường CGI có thể tạo biến đó từ một tiêu đề Proxy đến, điều này historically đã khiến việc tin tưởng nó không an toàn. Các biến theo giao thức khác có thể viết hoa, nhưng việc giữ tên viết thường nhất quán giảm thiểu bất ngờ trong các tệp kịch bản shell Linux.
Sử dụng NO_PROXY cho các dịch vụ và miền cục bộ cần giữ nguyên đường dẫn trực tiếp. Một dấu chấm phía trước như .internal.example sẽ khớp với miền và các miền con của nó, trong khi * sẽ bỏ qua proxy cho mọi đích. Curl cũng hỗ trợ --noproxy như một phương thức ghi đè một lệnh.
Làm Cho Cài Đặt Proxy Curl Bền Vững Với Tệp Cấu Hình
Một tệp cấu hình curl phù hợp khi cùng một tài khoản Linux được kiểm soát cần các mặc định giống nhau qua các phiên. Curl đọc một cấu hình mặc định trừ khi -q được cung cấp; các vị trí tìm kiếm Linux đã được tài liệu bao gồm $CURL_HOME/.curlrc, $XDG_CONFIG_HOME/curlrc, và $HOME/.curlrc theo thứ tự đó, theo tài liệu tham khảo tệp cấu hình chính thức.
Cú pháp cấu hình đã được curl tiêu thụ thành công với một proxy xác thực cục bộ; thay thế mọi chỗ giữ chỗ trước khi sử dụng tệp với Nstproxy.
proxy = "http://PROXY_HOST:PROXY_PORT" proxy-user = "PROXY_USER:PROXY_PASS" connect-timeout = 10 max-time = 30 show-error
Bảo vệ một tệp chứa thông tin xác thực để những người dùng cục bộ khác không thể đọc được:
chmod 600 ~/.curlrc curl "https://httpbin.org/ip" curl -q "https://httpbin.org/ip" # Bỏ qua cấu hình mặc định của curl cho lần chạy này
Một tệp cấu hình cải thiện khả năng lặp lại nhưng không mã hóa mật khẩu dưới dạng văn bản thuần túy. Ưu tiên một thông tin xác thực ngắn hạn hoặc một cơ chế tiêm bí mật bên ngoài khi máy chủ được chia sẻ, sao lưu rộng rãi hoặc quản lý bởi nhiều người điều hành.
Xác minh Proxy, Mã Thoát và Trạng Thái HTTP Một Cách Riêng Biệt
Một xác minh đáng tin cậy kiểm tra đường dẫn mạng và kết quả ứng dụng thay vì coi bất kỳ thân phản hồi nào là thành công. Đầu tiên so sánh IP đầu ra trực tiếp với IP đầu ra qua proxy; sau đó ghi lại mã thoát của curl và trạng thái HTTP của điểm đến.
Đầu ra và luồng mã thoát dưới đây đã được chạy qua một proxy xác thực cục bộ; địa chỉ IP quan sát trong lần chạy của bạn sẽ phụ thuộc vào điểm cuối Nstproxy và các tham số định tuyến được tạo cho tài khoản của bạn.
curl --silent --show-error "https://httpbin.org/ip" curl --silent --show-error \ --proxy "http://${PROXY_HOST}:${PROXY_PORT}" \ --proxy-user "${PROXY_USER}:${PROXY_PASS}" \ --output /tmp/proxy-check.json \ --write-out $'http_code=%{http_code}\nremote_ip=%{remote_ip}\nexit_message=%{errormsg}\n' \ "https://httpbin.org/ip" status=$? printf 'curl_exit=%s\n' "$status" cat /tmp/proxy-check.json
Một IP đầu ra đã thay đổi xác nhận rằng điểm đến đã thấy một địa chỉ mạng khác, nhưng không chứng minh rằng mọi mục tiêu đều sẽ chấp nhận địa chỉ đó. Kiểm tra điểm cuối công khai chính xác hoặc được ủy quyền mà quy trình công việc của bạn cần, giữ cho khối lượng yêu cầu trong giới hạn và ghi lại trạng thái dự kiến và sơ đồ phản hồi. Hướng dẫn kiểm tra proxy của Nstproxy cung cấp các kiểm tra bổ sung cho vị trí, độ trễ, quyền truy cập mục tiêu và danh tiếng IP.
Sử dụng -v chỉ khi chẩn đoán vì đầu ra chi tiết có thể tiết lộ tên máy chủ proxy, tên người dùng, tiêu đề yêu cầu và các chi tiết hoạt động khác trong nhật ký terminal. Chuyển hướng chẩn đoán tới một tệp được bảo vệ khi đầu ra cần được giữ lại.
Xử lý Lỗi Proxy Curl Thường Gặp
Lỗi proxy curl dễ giải quyết nhất khi bạn xác định được bước nhảy nào đã thất bại. Kết nối từ khách hàng đến proxy, xác thực proxy, kết nối từ proxy đến nguồn gốc và phản hồi từ nguồn gốc có thể thất bại độc lập.
| Triệu chứng | Giới hạn có thể | Những gì cần kiểm tra |
|---|---|---|
| Không thể giải quyết proxy | DNS cục bộ hoặc tên máy chủ proxy | Sao chép lại tên máy chủ đã tạo và xóa các khoảng trắng hoặc dấu ngoặc kép thừa |
| Kết nối bị từ chối | Máy chủ hoặc cổng proxy | Xác minh cổng đã tạo, quy tắc tường lửa và trạng thái kênh |
| Kết nối bị thời gian hết | Tuyến đường hoặc điểm cuối không khả dụng | Kiểm tra khả năng tiếp cận DNS, TCP, và một --connect-timeout trong giới hạn |
| HTTP 407 | Xác thực proxy | Sao chép lại tên người dùng/mật khẩu proxy và kiểm tra phương thức xác thực được quảng cáo |
| HTTP 401 | Xác thực điểm đến | Kiểm tra mã thông báo hoặc thông tin xác thực nguồn gốc điểm đến, không phải --proxy-user |
| HTTP 403 | Chính sách điểm đến | Xác nhận ủy quyền, tỷ lệ yêu cầu, quy tắc điểm cuối, và liệu IP đầu ra có được chấp nhận hay không |
| Lỗi xác thực TLS | Chuỗi chứng chỉ điểm đến hoặc chứng chỉ HTTPS-proxy | Xác định bước nhảy nào đã thất bại và cài đặt CA đúng thay vì vô hiệu hóa các kiểm tra |
| Vị trí sai hoặc IP không thay đổi | Tham số proxy hoặc quy tắc bỏ qua | Kiểm tra các tham số phiên/địa lý, NO_PROXY, .curlrc, và biến shell |
HTTP 407 có ý nghĩa chính xác: proxy thiếu thông tin xác thực hợp lệ và nên mô tả phương pháp được chấp nhận trong Proxy-Authenticate, trong khi khách hàng có thể thử lại với Proxy-Authorization, như đã được định nghĩa bởi tham chiếu HTTP 407 của MDN. Điều này khác với 401 hoặc 403 từ phía mục tiêu.
Để có một bản theo dõi chi tiết, hãy chạy cùng một yêu cầu với --verbose và kiểm tra bước thất bại đầu tiên. Đừng dán các bản theo dõi chưa bị che khuất vào vé hoặc chat vì Proxy-Authorization và các giá trị mở rộng môi trường có thể chứa thông tin bí mật. Nstproxy cũng duy trì một cái nhìn tổng quan về các loại lỗi máy chủ proxy và cách khắc phục.
Tại sao Nstproxy Phù hợp với Quy trình Curl
Nstproxy phù hợp với các quy trình làm việc curl cần các điểm cuối HTTP hoặc SOCKS5 do tài khoản tạo ra thay vì danh sách proxy công khai đã được mã hóa cứng. Bảng điều khiển tạo một URL Proxy từ cài đặt Kênh, và việc tích hợp curl đã được tài liệu hóa ánh xạ URL đó vào --proxy cộng với --proxy-user. Cách tiếp cận này hoạt động cho các nhà phát triển thử nghiệm API, các nhà vận hành xác thực hành vi khu vực, và các nhóm dữ liệu thực hiện các yêu cầu được ủy quyền đến các điểm cuối công khai. Quyết định lựa chọn chính là sản phẩm proxy, vị trí, hành vi phiên và mô hình lập hóa đơn phù hợp với khối lượng công việc hơn là một tuyên bố phổ quát rằng một loại proxy luôn vượt trội.
- Tùy chọn curl tiêu chuẩn — Hình dạng kết nối được tài liệu hóa sử dụng các cờ proxy và xác thực proxy của curl, vì vậy không cần thư viện khách bổ sung.
- Lựa chọn HTTP và SOCKS5 — Nstproxy tài liệu cả hai giao thức, cho phép lệnh sử dụng một đường hầm HTTP hoặc giải quyết tên miền SOCKS5 bên proxy khi phù hợp.
- Cấu hình do kênh tạo ra — URL Proxy do tài khoản tạo ra vẫn là nguồn thông tin chính xác cho máy chủ, cổng, thông tin xác thực và các tham số định tuyến.
- Lựa chọn sản phẩm theo khối lượng công việc — Các proxy Residential Lite được định vị cho việc thu thập dữ liệu tiết kiệm chi phí, trong khi các dòng proxy sống khác giải quyết các yêu cầu về độ bền, nhà cung cấp hoặc hạ tầng khác nhau.
Hãy xem xét mức giá Residential Lite hiện tại trước khi chọn gói, vì các mức giá và gói đã công bố có thể thay đổi.
Nhìn nhanh
Tạo một URL Proxy cụ thể theo Kênh trong Nstproxy, sau đó dán điểm cuối và thông tin xác thực của nó vào các mẫu curl đã được xác minh thay vì dựa vào một gateway cũ đã sao chép từ tài khoản khác.
Kết luận
Một quy trình làm việc proxy curl Linux đáng tin cậy bắt đầu với một sơ đồ proxy rõ ràng, tách thông tin xác thực proxy khỏi thông tin xác thực đích, và xác thực mỗi lần nhảy mạng. Sử dụng các cờ một lần trong khi thử nghiệm, chuyển sang biến môi trường hoặc tệp cấu hình bảo vệ chỉ khi độ bền được biện minh, và ưu tiên socks5h:// khi DNS đích nên được giải quyết bởi proxy. Quan trọng nhất, hãy sử dụng URL Proxy hiện tại được tạo ra trong Kênh Nstproxy của bạn và coi mỗi lệnh, môi trường, dấu vết và tệp mang thông tin xác thực là nhạy cảm.
Câu hỏi thường gặp
H: Làm thế nào để sử dụng proxy với curl trên Linux?
Sử dụng curl --proxy "http://HOST:PORT" --proxy-user "USER:PASS" "https://example.com" sau khi thay thế các giá trị tạm thời bằng điểm cuối mà bạn đã tạo. Thêm --connect-timeout và --max-time để một điểm cuối thất bại không để lệnh chờ vô thời hạn.
H: Tại sao curl lại trả về HTTP 407?
HTTP 407 có nghĩa là proxy không nhận được thông tin xác thực proxy hợp lệ. Sao chép lại tên người dùng và mật khẩu đã tạo, xác minh phương pháp xác thực proxy, và giữ thông tin xác thực nguồn tách biệt khỏi --proxy-user.
H: Sự khác biệt giữa socks5:// và socks5h:// trong curl là gì?
socks5:// khiến curl giải quyết tên miền đích một cách cục bộ, trong khi socks5h:// gửi tên miền đến proxy SOCKS5 để giải quyết. Sử dụng socks5h:// khi DNS bên proxy là một phần của yêu cầu định tuyến hoặc bảo mật.
H: Làm thế nào để tôi xác nhận rằng curl đang sử dụng proxy?
So sánh phản hồi trực tiếp và qua proxy từ một điểm kiểm tra IP, sau đó kiểm tra mã thoát của curl và trạng thái HTTP đích. Một IP đã thay đổi xác nhận luồng ra đã quan sát, nhưng bạn vẫn nên kiểm tra đúng mục tiêu được ủy quyền mà quy trình làm việc của bạn cần.
H: Việc đặt https_proxy có nghĩa là proxy tự nó sử dụng HTTPS không?
Không. Tên biến chọn các yêu cầu mà URL đích bắt đầu bằng https://; sơ đồ của giá trị xác định cách curl kết nối với proxy. Ví dụ, https_proxy=http://HOST:PORT định tuyến các điểm đến HTTPS qua một đường hầm proxy HTTP.
H: Làm thế nào để tôi bỏ qua proxy cholocalhost hoặc một miền nội bộ?
Đặt NO_PROXY="localhost,127.0.0.1,.internal.example" hoặc sử dụng --noproxy cho một lệnh duy nhất. Chạy unset NO_PROXY khi ngoại lệ không còn áp dụng.
H: Có an toàn khi lưu mật khẩu proxy trong ~/.curlrc không?
Một mật khẩu trong ~/.curlrc là văn bản thuần, vì vậy tệp này chỉ phù hợp với một tài khoản được kiểm soát có quyền hạn chế như chế độ 600. Các máy chủ chia sẻ và triển khai tự động nên sử dụng một cơ chế quản lý bí mật hoặc tiêm chuyên dụng thay vào đó.
H: Tôi có nên sử dụng --insecure khi một yêu cầu qua proxy gặp lỗi TLS không?
Không, không phải là một cách khắc phục bình thường. Đầu tiên xác định xem việc xác thực chứng chỉ có bị thất bại trên kết nối đến đích hay kết nối HTTPS-proxy không, cài đặt CA đúng, và chỉ sử dụng tùy chọn không an toàn cho một chẩn đoán ngắn mà được tài liệu hóa rõ ràng và không bao giờ để lộ lưu lượng nhạy cảm.




