المدمج في جلب وundici#
العقدة العالمية fetch هو undici. أعطها أ ProxyAgent لكل طلب مع dispatcher الخيار، أو قم بتعيينه عالميًا مرة واحدة باستخدام 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 وصلات المسبح، لذا الطلبات المتتالية قد تعيد استخدام اتصال واحد، ومن ثم خروج واحد، وكي يخلق خروج جديد لكل طلب الوكيل مع pipelining: 0 و connections: 1، أو ببساطة استخدم مختلفًا -sid- لكل جلسة منطقية.
أكسيوس#
أكسيوس الخاصة proxy الخيار لا يعتمد على النفق HTTPS؛ والنهج المعياري هو عامل من https-proxy-agent و 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);حصلت#
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);الجوارب5#
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());متغيرات البيئة#
undici لا يقرأ HTTPS_PROXY بواسطة التخلف عن الدفع سفينة نسخ غير رسمية EnvHttpProxyAgentوهذا ما يُحدث؛ إذ أن تحديدها على أنها المرسل العالمي والعملية برمتها، بما في ذلك مكتبات الأطراف الثالثة التي تُبنى على الجلبة، يُعبر عن طريق البروكسي.
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());التزامن والدوران#
- واحد
ProxyAgentلكل جلسة لزجة (مختلفة-sid-)، تشاطره جميع طلبات تلك الدورة. - للتناوب الواسع، الاحتفاظ بوكيل واحد ولكن لا يمكن ربطه، أو تشغيل وكلاء N مع ids الدورة N وجولة.
- شاهد
UND_ERR_SOCKETوECONNRESETمخرج سكني ذهب، وعاد مرة، وتصلة أخرى.
أسئلة يطرحها الناس#
لماذا يتجاهل (أكيوس) بروكسيي لـ (هـ.ت.ب.س)؟
ويقتصر الدعم الذي تقدمه الوكالة في مجال التصريف على الأنفاق الكونية، ويستخدم الموقع الشبكي " Proxy-agent " على العنوان التالي: httpsAgent and set proxy: false so axios does not try to handle it itself.
هل يمكنني بروكسي بعض الطلبات فقط؟
نعم، مرر المرسل أو العميل على الطلبات التي تحتاجها وترك الآخرين غير ملامسة؛ لا شيء عالمي إلا إذا ناديت (عالمي ديسباتشر)