Tìm kiếm xây dựng và tách rời#
Nút là toàn cục fetch Là undici. ProxyAgent theo yêu cầu dispatcher tùy chọn, hoặc đặt nó trên toàn cầu một lần với setGlobalDispatcher.
import { fetch, ProxyAgent, setGlobalDispatcher } from "undici";
const proxy = new ProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");
// Per request
const res = await fetch("https://api.ipify.org", { dispatcher: proxy });
console.log(await res.text());
// Or globally, for every fetch in the process
setGlobalDispatcher(proxy);A ProxyAgent Các hồ bơi kết nối, vì vậy các yêu cầu liên tiếp có thể sử dụng lại một kết nối và do đó một lối thoát. Đối với một thoát thoát mới cho mỗi yêu cầu tạo tác nhân bằng pipelining: 0 và connections: 1Hoặc đơn giản là dùng một thứ khác. -sid- Một phiên họp hợp lý.
axios#
của chính người Axios proxy Tùy chọn không đào hầm HTTPS đáng tin cậy; phương pháp chuẩn là một tác nhân từ https-proxy-agent và proxy: false.
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
const agent = new HttpsProxyAgent("http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000");
const client = axios.create({ httpsAgent: agent, httpAgent: agent, proxy: false, timeout: 30000 });
const { data } = await client.get("https://api.ipify.org");
console.log(data);đã nhận#
import got from "got";
import { HttpsProxyAgent } from "https-proxy-agent";
const agent = new HttpsProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");
const body = await got("https://api.ipify.org", { agent: { https: agent, http: agent }, timeout: { request: 30000 } }).text();
console.log(body);SOCKS5#
import fetch from "node-fetch";
import { SocksProxyAgent } from "socks-proxy-agent";
const agent = new SocksProxyAgent(process.env.PROXY_URL);
const response = await fetch("https://api.ipify.org", { agent });
console.log(await response.text());Biến#
Chưa đọc HTTPS_PROXY theo mặc định. Tàu phiên bản mới nhất EnvHttpProxyAgentNó được đặt như là bộ điều phối toàn cầu và toàn bộ quá trình, bao gồm cả thư viện ba bên xây dựng trên thu thập, đi qua ủy ban.
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
// HTTPS_PROXY=http://USER-cc-us:PASS@res.proxy-cyber.com:9000 NO_PROXY=localhost node app.js
setGlobalDispatcher(new EnvHttpProxyAgent());Comment#
- Một.
ProxyAgentmỗi phiên chạy dính (khác nhau-sid-), được chia sẻ bởi mọi yêu cầu của phiên họp đó. - Để xoay rộng, giữ một đặc vụ nhưng tắt sử dụng lại kết nối, hoặc chạy N đặc vụ N với ID phiên chạy và kết nối chúng.
- Xem
UND_ERR_SOCKETvàECONNRESET: một lối thoát dân cư đã biến mất; hãy thử lại một lần, kết nối tiếp theo sẽ chọn một lần khác.
Người ta thắc mắc#
Tại sao Axios lại bỏ qua proxy của tôi cho HTTPS?
Hỗ trợ proxy có sẵn của nó bị hạn chế cho các đường hầm CONNECT. Dùng https-poxy-gent như httpsAgent và đặt proxy: sai để axios không cố gắng tự xử lý nó.
Tôi có thể proxy một số yêu cầu không?
Vâng, chuyển giao thông điệp viên hoặc đặc vụ trên các yêu cầu cần nó và để cho những người khác không bị ảnh hưởng; không có gì là toàn cầu trừ khi bạn gọi cho SetGlobalDispacher.