Integratsiyalar · Boshlovchi

Node.js da fetch, undici, axios va got bilan proksilarni qanday ishlatish kerak

Nod.js'ning qoʻllab-quvvatlanadigan versiyalarida NODE_USE_ENV_PROXY=1 HTTP_PROXy, HTTPS_PROX Y va NO_PROX larni oʻz ichiga olgan yuklash uchun faollashtiradi; --use-env-proxy Nod.js 22.21+ va 24.5+ da mavjud. Proksi agent yoki EnvHttpProxyAgent boshqa variantdir. Oʻz transportlari yoki shaxsiy agentlari boʻlgan kitobxonalar alohida konfiguratsiyaga ehtiyoj sezadi, shuning uchun butun jarayon qamrab olingan deb hisoblash oʻrniga har bir asbobni sinovdan oʻtkazing.

Oʻqish 6 boʻlim Ўрганилган Редакторлар гуруҳи Proxy Cyber

Ichki olish va undici#

Nuqtaning globali fetch Uni bir ProxyAgent soʻrov uchun dispatcher parametrini, yoki uni global bir marta bu bilan oʻrnatish setGlobalDispatcher.

oʻn bir
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 Ulanishlarni jamlaydi, shuning uchun ketma-ket talablar bir ulanish va natijada bitta chiqishni qayta ishlash mumkin. Har bir talab uchun yangi chiqish uchun agentni quyidagi bilan yarating pipelining: 0 va connections: 1, yoki boshqasini ishlating -sid- Mantiqiy sessiya uchun.

osi#

Axios'ning oʻzi proxy tanlov HTTPS tunnelini ishonchli qilmaydi; standart yondashuv agentdan https-proxy-agent va proxy: false.

osi
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);

olindi#

olindi
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#

Proksi agent
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());

Atrof-muhit oʻzgaruvchilari#

undici oʻqilmaydi HTTPS_PROXY Oʻrindosh EnvHttpProxyAgent, buni qiladi; uni global dispetcher sifatida qoʻying va barcha jarayonlar, shu jumladan fetch ustida qurilgan uchinchi tomon kitobxonalari ham proksi orqali oʻtadi.

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());

Bir vaqtda va aylanish#

  • Bir ProxyAgent Har bir yopishqoq seans uchun (aynan -sid-), sessiyaning barcha talablari tomonidan ulushlangan.
  • Koʻp marta aylanish uchun, bir agentni saqlab qoling, ammo aloqani qayta ishlashni oʻchiring yoki N sessiya ID bilan N agentlarni ishga tushiring va ularni aylantirib yurgizing.
  • Koʻrib chiqish UND_ERR_SOCKET va ECONNRESET: a residential exit went away; bir marta qayta urining, keyingi aloqa boshqasini tanlaydi.

Odamlar soʻraydigan savollar.#

Nega axios HTTPS uchun proksiimni eʼtiborsiz qoldiradi?

Uning ichki proksi qoʻllab-quvvatlashi CONNECT tunnellari uchun cheklangan. httpsAgent sifatida https-proxy-agent ni ishlating va axios uni oʻzi boshqarishga urinmasligi uchun proxy: false ga qoʻying.

Faqat baʼzi talablarni proksi orqali bajarish mumkinmi?

Ha. Dispetcher yoki agentga buni talab qiladigan iltimoslarni topshiring va boshqalarini oʻzgartirmasdan qoldiring; setGlobalDispatcher ni chaqirmaganingizda hech narsa global boʻlmaydi.

Hisobingiz

Barcha proksilarni bitta hisobdan boshqaring

Tarmoqlarni taqqoslang, buyurtma bering va bir paneldan balansingizni va qoʻllab-quvvatlash talablarini kuzating. Bizning jamoamiz toʻlovlarni koʻrib chiqadi va etkazib berishdan keyin aloqa maʼlumotlarini taqdim etadi.

Hisob yaratish