Trả lời nhanh
Làm sao tôi dùng proxy với curl?
Dùng curl -x http://USERNAME:[email protected]:7777 https://api.ipify.org cho proxy HTTP, hoặc --socks5-hostname gw.crawlrelay.com:7778 với -U USERNAME:PASSWORD cho SOCKS5. CrawlRelay proxy dân cư lấy quốc gia và phiên sticky trong tên đăng nhập, ví dụ như USERNAME-country-de-session-t1-ttl-10. Bắt đầu từ 0,50 US$/GB. Thanh toán bằng crypto, không cần KYC.
Các cờ curl bạn cần
-x / --proxy | URL proxy: http://host:port, thông tin đăng nhập tùy chọn bên trong |
|---|---|
-U / --proxy-user | Thông tin đăng nhập proxy dưới dạng USERNAME:PASSWORD, không hiện trong URL |
--socks5-hostname | Proxy SOCKS5 với DNS được giải quyết tại điểm thoát |
-v | Hiển thị trao đổi CONNECT và dòng trạng thái của proxy |
-w | In thời gian, kích thước và %{http_connect}, trạng thái CONNECT của proxy |
--max-time, --connect-timeout | Giới hạn tổng thời gian và thời gian kết nối, tính bằng giây |
Các lệnh proxy cơ bản là gì?
Mỗi lệnh đều in ra IP thoát mà website nhìn thấy.
# Rotating exit, any country
curl -x http://gw.crawlrelay.com:7777 -U USERNAME:PASSWORD https://api.ipify.org
# Country and city (city availability varies)
curl -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us-city-chicago:PASSWORD https://api.ipify.org
# Sticky: run it twice, the IP stays the same for up to 10 minutes (it can change earlier)
curl -x http://gw.crawlrelay.com:7777 -U USERNAME-country-de-session-t1-ttl-10:PASSWORD https://api.ipify.org
# SOCKS5, DNS resolved at the exit
curl --socks5-hostname gw.crawlrelay.com:7778 -U USERNAME-country-gb:PASSWORD https://api.ipify.orgLàm thế nào để gỡ lỗi kết nối proxy với curl?
Chạy với -v và đọc các dòng xung quanh CONNECT. Một kết nối thành công sẽ hiển thị HTTP/1.1 200 Connection established, sau đó là bắt tay TLS với website. Bất kỳ trạng thái nào khác trên dòng đó đến từ proxy: 407 nghĩa là cần xác thực, 502 hoặc 504 nghĩa là lỗi tại điểm thoát hoặc đích. Định dạng -w bên dưới in cùng một thông tin trên một dòng, thuận tiện cho vòng lặp và kiểm tra CI.
# Full exchange, including the proxy's answer to CONNECT
curl -v -x http://gw.crawlrelay.com:7777 -U USERNAME:PASSWORD https://example.com/ -o /dev/null
# One line: proxy CONNECT status, HTTP status, compressed bytes and timings
curl -s --compressed -o /dev/null -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us:PASSWORD \
-w 'connect=%{http_connect} http=%{http_code} bytes=%{size_download} tcp=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n' \
https://example.com/Làm sao để kiểm tra việc xoay vòng và phiên làm việc?
Yêu cầu IP nhiều lần. Nếu không có session ID, mỗi lần chạy là một kết nối mới và thường cho IP khác. Với session ID, IP sẽ giữ nguyên cho đến khi TTL kết thúc, mặc dù có thể thay đổi sớm hơn.
echo "rotating:"
for i in 1 2 3 4 5; do
curl -s -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us:PASSWORD https://api.ipify.org; echo
done
echo "sticky:"
for i in 1 2 3 4 5; do
curl -s -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us-session-loop1-ttl-5:PASSWORD https://api.ipify.org; echo
doneLàm sao để dùng curl với proxy trên Windows?
Gọi curl.exe, không phải curl. Trong Windows PowerShell 5.1, curl là alias của Invoke-WebRequest, nó không nhận hiểu -x hoặc -U. Windows 10 và 11 có curl thật được gọi là curl.exe. Trong PowerShell, đặt dấu nháy cho các tham số chứa ký tự đặc biệt và viết $ nguyên văn trong mật khẩu bên trong dấu nháy đơn.
curl.exe -x http://gw.crawlrelay.com:7777 -U 'USERNAME-country-fr:PASSWORD' https://api.ipify.orgLàm sao để thiết lập proxy cho mọi lệnh?
curl đọc biến môi trường https_proxy và http_proxy và nhiều công cụ khác cũng vậy. Thiết lập cho một phiên shell, và dùng NO_PROXY cho những host không cần đi qua proxy, như API của bạn. Tránh đặt mật khẩu trong biến được xuất tới các tiến trình con trên máy chia sẻ.
export https_proxy="http://USERNAME-country-us:[email protected]:7777"
export http_proxy="$https_proxy"
export NO_PROXY="localhost,127.0.0.1,.internal.example"
curl https://api.ipify.org # now uses the proxy
unset https_proxy http_proxy # back to directcurl và proxy: các câu hỏi
Sự khác biệt giữa --socks5 và --socks5-hostname là gì?
Với --socks5, curl giải quyết hostname trên máy của bạn và gửi địa chỉ IP tới proxy. Với --socks5-hostname, nó gửi hostname và proxy sẽ giải quyết. Dùng --socks5-hostname cho scraping để câu trả lời DNS khớp với quốc gia điểm thoát, và bộ giải quyết cục bộ của bạn không thấy tên miền bạn truy cập.
Tại sao curl báo 'Kết nối tunnel CONNECT thất bại, phản hồi 407'?
Proxy từ chối chứng thực hoặc không nhận được. Kiểm tra tên người dùng và mật khẩu, mã hóa URL ký tự đặc biệt nếu trong URL -x, hoặc dùng -U để truyền. Trang 407 liệt kê các nguyên nhân khác.
Làm thế nào để biết một trang tiêu tốn bao nhiêu byte qua proxy?
Thêm --compressed -o /dev/null -w '%{size_download}\n'. --compressed khiến curl yêu cầu gzip hoặc brotli giống trình quét của bạn, và %{size_download} đếm số byte nén đã truyền. Nếu không có, máy chủ gửi trang không nén và con số có thể cao hơn nhiều. Chạy trên vài trang thật để ước tính lưu lượng cho mỗi 1.000 trang.
curl có dùng HTTP/2 hoặc HTTP/3 qua proxy được không?
HTTP/2 chạy trong tunnel CONNECT khi website hỗ trợ, vì tunnel truyền TLS end-to-end. HTTP/3 chạy qua UDP, mà tunnel CONNECT qua proxy HTTP không hỗ trợ UDP, nên dùng HTTP/2 hoặc HTTP/1.1 qua gateway.
Kiểm tra mục tiêu từ dòng lệnh
1,50 US$ cho 1 GB, đủ cho hàng ngàn bài test curl.