Node ਦੇ Undici ਨਾਲ ਪ੍ਰਾਕਸੀ IP ਵਰਤੋ
ਇੱਕ fetch ਬੇਨਤੀ ਨੂੰ Undici ProxyAgent ਦਿਓ ਅਤੇ ਕਨੈਕਸ਼ਨ ਪੂਲ ਹੋਰ Node ਟ੍ਰੈਫਿਕ ਤੋਂ ਵੱਖ ਰੱਖੋ।
Undici ਬੇਨਤੀ dispatcher ਰਾਹੀਂ ਭੇਜਦਾ ਹੈ। ਚੁਣੇ HTTP ਪ੍ਰਾਕਸੀ ਲਈ ProxyAgent ਬਣਾ ਕੇ ਪੂਰੇ ਪ੍ਰੋਸੈਸ ਦਾ ਗਲੋਬਲ dispatcher ਬਦਲਣ ਦੀ ਥਾਂ fetch ਕਾਲ ਨੂੰ ਦਿਓ।
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();
}
ਪ੍ਰੋਗਰਾਮ .mjs ਫਾਇਲ ਵਜੋਂ ਸੰਭਾਲੋ ਜਾਂ ES ਮੋਡਿਊਲ ਪ੍ਰੋਜੈਕਟ ਵਰਤੋ। ਦਸਤਾਵੇਜ਼ IP ਦੀ ਥਾਂ HTTP ਪ੍ਰਾਕਸੀ ਸੂਚੀ ਤੋਂ HTTP ਪ੍ਰਾਕਸੀ ਦਿਓ। ਇੰਪੋਰਟ ਜਾਣਬੁੱਝ ਕੇ Undici ਦਾ fetch ਅਮਲ ਵਰਤਦਾ ਹੈ, ਇਸ ਲਈ dispatcher ਵਿਕਲਪ ਉਦਾਹਰਨ ਦੇ ਕਲਾਇੰਟ ਦਾ ਹੈ।
IP ਨੂੰ ਦੋਸ਼ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ Node ਅਨੁਕੂਲਤਾ ਜਾਂਚੋ
Undici ਦੇ ਸਮਰਥਿਤ Node ਵਰਜਨ ਪੈਕੇਜ ਰਿਲੀਜ਼ ਉੱਤੇ ਨਿਰਭਰ ਹਨ। ਉਦਾਹਰਨ Undici 8.12.3 ਵਰਤਦੀ ਹੈ, ਜਿਸ ਨੂੰ Node 22.19.0 ਜਾਂ ਨਵਾਂ ਚਾਹੀਦਾ ਹੈ। ਮੋਡਿਊਲ ਲੋਡ ਜਾਂ ਇੰਜਣ ਵਰਜਨ ਗਲਤੀ ਬੇਨਤੀ ਦੇ ਪ੍ਰਾਕਸੀ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਹੁੰਦੀ ਹੈ। ਹਰ Node ਨਵੀਨਤਮ Undici ਚਲਾਉਂਦਾ ਨਾ ਮੰਨੋ; ਇੰਸਟਾਲ ਪੈਕੇਜ ਦੀ ਲੋੜ ਜਾਂਚੋ।
ਇੱਕ agent ਦੁਹਰਾਈਆਂ ਬੇਨਤੀਆਂ ਸੰਭਾਲ ਸਕਦਾ ਹੈ
ਛੋਟਾ ਪ੍ਰੋਗਰਾਮ ਅੰਤ ਵਿੱਚ dispatcher ਬੰਦ ਕਰਦਾ ਹੈ। ਚੱਲਦੀ ਐਪ ਉਸੇ ਐਂਡਪੁਆਇੰਟ ਰਾਹੀਂ ਕਈ ਬੇਨਤੀਆਂ ਭੇਜੇ ਤਾਂ agent ਉਸ ਕੰਮ ਲਈ ਰੱਖੋ ਅਤੇ ਕੰਮ ਮੁੱਕਣ ਉੱਤੇ ਬੰਦ ਕਰੋ। ਹਰ URL ਲਈ agent ਬਣਾਉਣਾ ਤੇ ਬੰਦ ਕਰਨਾ ਲਾਭਦਾਇਕ ਕਨੈਕਸ਼ਨ ਮੁੜ ਵਰਤੋਂ ਰੋਕਦਾ ਹੈ।
ਗਲੋਬਲ dispatcher ਸਿਰਫ਼ ਵਿਆਪਕ ਤਬਦੀਲੀ ਚਾਹੁਣ ਉੱਤੇ ਢੁੱਕਵਾਂ ਹੈ। ਸਪਸ਼ਟ ਦੇਣ ਨਾਲ ਹੋਰ ਹਿੱਸੇ ਦੀਆਂ ਬਾਹਰ ਜਾਣ ਵਾਲੀਆਂ ਬੇਨਤੀਆਂ ਬਦਲੇ ਬਿਨਾਂ ਪ੍ਰਾਕਸੀ IP ਟੈਸਟ ਸੌਖਾ ਹੈ।
ਜਵਾਬ ਅਤੇ ਅਸਫਲ ਪੜਾਅ ਵੇਖੋ
fetch ਹਰ HTTP ਗਲਤੀ ਸਥਿਤੀ ਨੂੰ ਰੱਦ ਹੋਇਆ Promise ਨਹੀਂ ਮੰਨਦਾ। 403 ਜਾਂ 429 ਪ੍ਰਾਕਸੀ ਲਿਆਇਆ ਵੈੱਬਸਾਈਟ ਦਾ ਅਸਲ ਜਵਾਬ ਹੋ ਸਕਦਾ ਹੈ। ਕਨੈਕਸ਼ਨ ਜਾਂ ਸੁਰੰਗ ਗਲਤੀ ਜਵਾਬ ਆਬਜੈਕਟ ਬਣਨ ਤੋਂ ਪਹਿਲਾਂ ਬੇਨਤੀ ਰੱਦ ਕਰ ਸਕਦੀ ਹੈ। ਸਥਿਤੀ ਨੂੰ ਕਾਲ ਦੀਆਂ ਸੁੱਟੀਆਂ ਗਲਤੀਆਂ ਤੋਂ ਵੱਖ ਪੜ੍ਹੋ।
ਪ੍ਰਮਾਣੀਕਰਨ ਚਾਹੀਦਾ ਹੋਵੇ ਤਾਂ Undici ਦਾ ProxyAgent ਕਨਸਟਰਕਟਰ ਵਿਕਲਪ ਦਿੰਦਾ ਹੈ। ਵੈੱਬਸਾਈਟ ਬੇਨਤੀ ਹੇਡਰ ਵਿੱਚ ਪ੍ਰਾਕਸੀ ਅਧਿਕਾਰ ਹੇਡਰ ਨਾ ਜੋੜੋ; agent ਹੋਰ ਕਨੈਕਸ਼ਨ ਭਾਗ ਸੰਭਾਲਦਾ ਹੈ।