פרוקסי HTTP ו־SOCKS ב־Axios עבור Node.js
הגדירו פרוקסי HTTP במתאם Node HTTP של Axios, או השתמשו בסוכן SOCKS כאשר ה־IP שנבחר הוא נקודת קצה של SOCKS.
מתאם Node HTTP של Axios מקבל אובייקט פרוקסי HTTP עם מארח ופורט מספרי:
import axios from 'axios';
const response = await axios.get('https://example.com/', {
adapter: 'http',
proxy: {
protocol: 'http',
host: '203.0.113.10',
port: 8080,
},
timeout: 15000,
});
console.log(response.status);
החליפו את נקודת הקצה לתיעוד ברשומת HTTP מהשירות שלכם או מתוך רשימת שרתי פרוקסי HTTP. הדוגמאות משתמשות ב־Node; Axios בדפדפן אינו יכול לבחור את פרוקסי הרשת של הדפדפן באמצעות האפשרויות האלה. השדה host מקבל כתובת ללא סכמת URL.
השדה protocol של אובייקט הפרוקסי מתאר את המאזין שלו. ב־Axios 1.21.0, מתאם Node HTTP משתמש ב־CONNECT ליעד HTTPS, ואז מנהל משא ומתן TLS עם שרת המקור דרך המנהרה. גרסאות ישנות השתמשו בנתיבי פרוקסי אחרים, ולכן הגרסה המותקנת חשובה.
כתובת SOCKS דורשת סוכן SOCKS
אובייקט פרוקסי HTTP אינו בוחר SOCKS. השתמשו בסוכן תואם:
npm install [email protected] [email protected]
import axios from 'axios';
import { SocksProxyAgent } from 'socks-proxy-agent';
const agent = new SocksProxyAgent('socks5h://203.0.113.10:1080');
try {
const response = await axios.get('https://example.com/', {
adapter: 'http',
httpAgent: agent,
httpsAgent: agent,
proxy: false,
timeout: 15000,
});
console.log(response.status);
} finally {
agent.destroy();
}
proxy: false משבית את טיפול פרוקסי HTTP של Axios עבור הנתיב שסוכן SOCKS מספק. מתן הסוכן ליעדי HTTP ו־HTTPS מכסה את שתי הסכמות. כאן socks5h מעביר את פתרון ה־DNS של היעד לצד SOCKS; השרת שנבחר חייב לתמוך בפרוטוקול הזה.
הבנת כשלים
שגיאת Axios עשויה להכיל תגובה כאשר האתר מחזיר מצב של חוסר הצלחה. בלי תגובה, בדקו את קוד השגיאה ופרטי החיבור. מודול חסר, פרוטוקול לא נתמך או גרסת Node לא תואמת עלולים להיכשל לפני שהבקשה מגיעה לנקודת הקצה.
לפרוקסי HTTP עם הזדהות, השתמשו בשדה auth של אובייקט הפרוקסי עם הפרטים שהמפעיל מספק. הגדרות ההזדהות של היעד משרתות צד אחר.