Undici định tuyến yêu cầu qua dispatcher. Tạo ProxyAgent cho proxy HTTP đã chọn và truyền vào lệnh fetch thay vì đổi dispatcher toàn cục của cả tiến trình.

npm install [email protected]
import { fetch, ProxyAgent } from 'undici';

const dispatcher = new ProxyAgent('http://203.0.113.10:8080');

try {
  const response = await fetch('https://example.com/', {
    dispatcher,
    signal: AbortSignal.timeout(15000),
  });

  console.log(response.status);
  console.log(await response.text());
} finally {
  await dispatcher.close();
}

Lưu chương trình thành tệp .mjs hoặc dùng dự án mô-đun ES. Thay IP tài liệu bằng proxy HTTP từ danh sách proxy HTTP. Phần nhập chủ ý dùng triển khai fetch của Undici, vì vậy tùy chọn dispatcher thuộc máy khách trong ví dụ.

Kiểm tra tương thích Node trước khi đổ lỗi IP

Phiên bản Node mà Undici hỗ trợ tùy bản phát hành gói. Ví dụ dùng Undici 8.12.3, cần Node 22.19.0 trở lên. Lỗi tải mô-đun hoặc phiên bản engine xảy ra trước khi yêu cầu tới proxy. Xem yêu cầu của gói đã cài, đừng cho rằng mọi Node chạy được Undici mới nhất.

Một agent có thể phục vụ nhiều yêu cầu

Chương trình ngắn đóng dispatcher khi xong. Nếu ứng dụng đang chạy gửi nhiều yêu cầu qua cùng điểm cuối, giữ agent cho khối lượng đó và đóng khi công việc kết thúc. Tạo rồi đóng agent cho từng URL ngăn tái sử dụng kết nối hữu ích.

Dispatcher toàn cục chỉ phù hợp khi bạn có ý thay đổi rộng hơn. Truyền rõ ràng giúp thử IP proxy mà không đổi yêu cầu đi ra của thành phần khác.

Xem phản hồi và giai đoạn lỗi

fetch không coi mọi mã lỗi HTTP là Promise bị từ chối. 403 hoặc 429 có thể là phản hồi thật của website được proxy chuyển qua. Lỗi kết nối hoặc đường hầm có thể từ chối yêu cầu trước khi có đối tượng phản hồi. Đọc trạng thái riêng với lỗi do lời gọi ném ra.

Nếu cần xác thực, ProxyAgent của Undici có tùy chọn ở hàm tạo. Đừng thêm tiêu đề cấp quyền proxy vào tiêu đề yêu cầu tới website; agent xử lý một chặng kết nối khác.

Bài viết liên quan