ጥያቄው መስመር የNode HTTPን በፕሮክሲ የሚያስተላልፈው
የNode ኮር ደንበኛን በመጠቀም የግንኙነት መጨረሻ ነጥብ፣ ፍጹም ዒላማ እና Host ራስጌን በመለየት ቀላል የHTTP ፕሮክሲ ጥያቄ ይገንቡ።
በፊት አቅጣጫ ፕሮክሲ በኩል ለሚደረግ ተራ የHTTP ጥያቄ Node ከፕሮክሲው ጋር ይገናኛል እና የመድረሻውን URL በጥያቄው መስመር ውስጥ ይልካል። ሶስት እሴቶች ያንን አንድ ጥያቄ ይገልጻሉ፦
| እሴት | ምሳሌ |
|---|---|
| የTCP ግንኙነት መጨረሻ ነጥብ | proxy.example:8080 |
| የጥያቄ ዒላማ | http://example.com/news?q=proxy |
| Host ራስጌ | example.com |
ይህ የNode 22 ምሳሌ መለያዩን ግልጽ ያደርገዋል፦
const http = require('node:http');
const destination = new URL('http://example.com/news?q=proxy');
const request = http.get({
hostname: 'proxy.example',
port: 8080,
path: destination.href,
headers: { Host: destination.host },
signal: AbortSignal.timeout(15000),
}, (response) => {
console.log(response.statusCode);
response.on('error', console.error);
response.resume();
});
request.on('error', console.error);
መጨረሻ ነጥቡ የቦታ ያዥ ነው፤ ለሕዝብ የHTTP ሙከራ ከHTTP ፕሮክሲ ዝርዝር እጩ ይምረጡ እና ምላሹን ይመርምሩ። ምሳሌው ሁኔታውን ካተመ በኋላ ምላሹን ያጠጣዋል፤ አንድ መተግበሪያ በምትኩ አካሉን ሊጠቀም ይችላል። ጥያቄው የጥያቄ ዒላማው አካል ሆኖ ይቆያል።
ሙሉው URL ለምን እዚያ ይገባል
የመነሻ አገልጋይ በተለምዶ እንደ /news?q=proxy ያለ ዒላማ ይቀበላል። የፊት አቅጣጫ ፕሮክሲም መድረሻውን ይፈልጋል፣ ስለዚህ HTTP/1.1 ፍጹሙን ቅርጽ ዒላማ ይገልጻል፦
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
በHTTP/1.1 ደንቦች መሠረት፣ ፍጹሙን ቅርጽ የተቀበለ ፕሮክሲ ሲያስተላልፍ የURIውን ስልጣን ይጠቀማል እና የማይጣጣም የተቀበለ Host መስክን ይተካል። ወጥነት ያለው የመድረሻ Host ራስጌ መላክ አሁንም የወጪውን ጥያቄ ከማያሻማ ያደርገዋል። የNode የግንኙነት አስተናጋጅ ስም መካከለኛው ነው፣ ስለዚህ በዚያ የግንኙነት አድራሻ ላይ ከመተማመን ይልቅ ራስጌውን ሆን ብለው ያዘጋጁ።
ማረጋገጫ ከተፈለገ፣ የፕሮክሲው ማስረጃዎች የራሱ የሆነው የመዝለል ክፍል ናቸው። የNode auth የጥያቄ አማራጭ ለሀብቱ Authorization ራስጌ ይፈጥራል፤ እሱ አጠቃላይ የፕሮክሲ መግቢያ አማራጭ አይደለም። ግብይቱ የበለጠ ሲወሳሰብ የፕሮክሲውን የሚፈለግ እቅድ እና ተስማሚ የፕሮክሲ ደንበኛ ይጠቀሙ።
HTTPS ዋሻ ይጨምራል
ይህ ምሳሌ ተራ የHTTP ማስተላለፍን ይሸፍናል። የተለመደ በHTTP ፕሮክሲ በኩል የHTTPS ግንኙነት መጀመሪያ CONNECT example.com:443 ይጠይቃል፣ ከዚያ በተቀበለው ዋሻ ውስጥ ወደ መድረሻው TLS ይጀምራል። የምሳሌውን URL ወደ HTTPS መቀየር እነዚያን ደረጃዎች አይጨምርም።
ለHTTPS ወይም ለተቀላቀለ ሥራ አስፈላጊውን የዋሻ ድጋፍ ያለው የተጠበቀ የፕሮክሲ ወኪል ወይም አስተላላፊ ይጠቀሙ። ለሚስማሙ የNode ስሪቶች አንድ አማራጭ Undici ከProxyAgent ጋር የሚሰጠው fetch ነው። ተራው የHTTP ግብይት ራሱ መቆጣጠር ወይም መረዳት የሚፈልጉት ነገር ሲሆን ይህን ትንሽ የኮር ደንበኛ ምሳሌ ያቆዩ።