Cách sử dụng cURL với Proxy: Các bước và Thực tiễn tốt nhất
Senior Web Scraping Engineer
Tăng cường tự động hóa và thu thập dữ liệu của bạn với Scrapeless Proxies — nhanh chóng, đáng tin cậy và giá cả phải chăng.
Công cụ dòng lệnh cURL là một tiện ích mạnh mẽ để chuyển dữ liệu với cú pháp URL, được sử dụng rộng rãi để kiểm tra API, gỡ lỗi vấn đề mạng và thu thập dữ liệu web đơn giản. Để thực hiện những nhiệm vụ này một cách ẩn danh hoặc để truy cập nội dung bị hạn chế địa lý, bạn phải cấu hình cURL để định tuyến các yêu cầu của nó qua một máy chủ proxy. Hướng dẫn này chi tiết các phương pháp khác nhau để thiết lập proxy với cURL.
Phương pháp 1: Sử dụng cờ --proxy
Cách cụ thể nhất để chỉ định một proxy cho một yêu cầu cURL đơn lẻ là sử dụng cờ --proxy (hoặc viết tắt của nó, -x). Cờ này yêu cầu URL proxy đầy đủ, bao gồm giao thức, địa chỉ IP và cổng.
Cú pháp:
bash
curl --proxy <GIAO_THỨC>://<ĐỊA_CHỈ_IP>:<CỔNG> <URL>
Ví dụ:
bash
curl --proxy "http://47.90.205.231:33333" "https://httpbin.io/ip"
Viết tắt -x có chức năng tương đương và thường được ưu tiên do tính ngắn gọn:
bash
curl -x "http://47.90.205.231:33333" "https://httpbin.io/ip"
Phương pháp 2: Xử lý xác thực proxy
Đối với các proxy yêu cầu xác thực, bạn có thể nhúng thông tin đăng nhập trực tiếp vào URL proxy, tương tự như HTTPX:
bash
curl -x "http://<TÊN_NHÀ_SỬ_DỤNG>:<MẬT_KHẨU>@proxy.scrapeless.com:1337" "https://httpbin.io/ip"
Ngoài ra, bạn có thể sử dụng cờ --proxy-user và --proxy-password, cách này thường an toàn hơn vì nó tách biệt thông tin đăng nhập khỏi URL proxy chính:
bash
curl -x "http://proxy.scrapeless.com:1337" --proxy-user "<TÊN_NHÀ_SỬ_DỤNG>:<MẬT_KHẨU>" "https://httpbin.io/ip"
Phương pháp 3: Sử dụng biến môi trường
Để thiết lập các cài đặt proxy liên tục cho nhiều lệnh cURL, bạn có thể đặt các biến môi trường. cURL tự động kiểm tra http_proxy, https_proxy và all_proxy.
bash
# Đặt proxy cho lưu lượng HTTP và HTTPS
export http_proxy="http://proxy.scrapeless.com:1337"
export https_proxy="http://proxy.scrapeless.com:1337"
# Bây giờ, bất kỳ lệnh cURL nào sau đó sẽ sử dụng proxy
curl "https://httpbin.io/ip"
Để dừng sử dụng proxy, chỉ cần hủy các biến: unset http_proxy https_proxy.
Thực hành tốt nhất cho cURL và Proxy
- Khớp giao thức: Đảm bảo giao thức proxy khớp với giao thức yêu cầu (ví dụ: sử dụng proxy HTTPS cho yêu cầu HTTPS).
- Hỗ trợ SOCKS: cURL hỗ trợ proxy SOCKS (SOCKS4, SOCKS5) bằng cách chỉ định giao thức trong URL proxy, ví dụ:
socks5://ip:port. - Xoay vòng: Mặc dù cURL không có chức năng xoay vòng tích hợp, bạn có thể thực hiện điều này bằng cách sử dụng một kịch bản shell đơn giản chọn ngẫu nhiên một proxy từ danh sách trước khi thực thi lệnh cURL. Đây là một kỹ thuật phổ biến khi thực hiện thu thập dữ liệu tự động.
Giải pháp proxy được khuyến nghị: Scrapeless Proxies
Khi sử dụng cURL để trích xuất dữ liệu, chất lượng của proxy có ảnh hưởng trực tiếp đến tỷ lệ thành công của bạn. Scrapeless Proxies cung cấp độ tin cậy và tốc độ cần thiết cho các hoạt động dòng lệnh tần suất cao. Proxy Datacenter của họ lý tưởng cho tính chất tập trung vào tốc độ của cURL, cung cấp độ trễ thấp và băng thông cao, trong khi Proxy Residential của họ cung cấp mức độ ẩn danh cao nhất cho những mục tiêu nhạy cảm.
Các câu hỏi thường gặp (FAQ)
Q: Làm thế nào để tôi biết cURL có đang sử dụng proxy không?
A: Bạn có thể sử dụng một dịch vụ như https://httpbin.io/ip để kiểm tra địa chỉ IP mà yêu cầu xuất phát từ đó. Nếu IP trả về khớp với IP của proxy của bạn, proxy đang hoạt động. Bạn cũng có thể sử dụng cờ -v (chi tiết) trong cURL để xem thông tin kết nối, điều này sẽ hiển thị chi tiết bắt tay proxy.
H: Cổng proxy mặc định cho cURL là gì?
Đ: cURL không có cổng proxy mặc định. Nếu bạn không chỉ định cổng trong URL proxy, cURL sẽ thường mặc định sử dụng cổng tiêu chuẩn cho giao thức (ví dụ: 1080 cho SOCKS, 8080 hoặc 3128 cho HTTP), nhưng luôn là thực hành tốt nhất để rõ ràng bao gồm cổng [7].
H: Làm thế nào tôi có thể bỏ qua proxy cho một yêu cầu cụ thể?
Đ: Nếu bạn đã thiết lập các biến môi trường, bạn có thể sử dụng cờ --noproxy để chỉ định danh sách các máy chủ cần được truy cập trực tiếp, hoặc sử dụng --noproxy "*" để bỏ qua proxy cho tất cả các máy chủ trong lệnh cụ thể đó.
Tài liệu tham khảo
[1] Tài liệu Selenium: Proxy Chrome
[2] Cloudflare: Proxy Server là gì?
[3] TechRadar Pro: Proxy server là gì và nó hoạt động như thế nào?
[4] Tài liệu HTTPX: Proxy
[5] RFC 1928: Giao thức SOCKS Phiên bản 5
[6] Trang Man cURL
[7] IANA Đăng ký Tên Dịch vụ và Số Cổng Giao thức Vận chuyển
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.



