Как обнаружить ошибку, вызванную прокси в модуле запроса файла node.js - PullRequest
0 голосов
/ 17 сентября 2018

Я хотел бы определить, вызвана ли ошибка прокси-сервером. Если это так, мне нужно попробовать вторичный прокси.

Я установил неправильный адрес, чтобы преднамеренно вызвать ошибку, и проверил объект ошибки. Включает в себя {code: 'ECONNRESET'}. Означает ли это ошибку прокси?

const request = require("request")

const primary = "http://192.168.1.10:8080"
const secondary = "http://192.168.1.20:8080"

request.get("https://www.google.com", {proxy: primary}, (err, res, body) => {
    if(err && /* error is caused by proxy */ ){
        request.get("https://www.google.com", {proxy: secondary}, (err, res, body) => {
            if(err){
                console.error(err)
                return
            }
            console.log(body)
        })
    }
    console.log(body)
})

стек ошибок

{ Error: tunneling socket could not be established, cause=connect ECONNREFUSED 192.168.1.10:8080 at ClientRequest.onError (C:\Users\user1\Desktop\dev00\node_modules\tunnel-agent\index.js:177:17) at Object.onceWrapper (events.js:273:13) at ClientRequest.emit (events.js:182:13) at Socket.socketErrorListener (_http_client.js:382:9) at Socket.emit (events.js:182:13) at emitErrorNT (internal/streams/destroy.js:82:8) at emitErrorAndCloseNT (internal/streams/destroy.js:50:3) at process._tickCallback (internal/process/next_tick.js:63:19) code: 'ECONNRESET' }

1 Ответ

0 голосов
/ 17 сентября 2018

Ошибки прокси обозначаются кодом ошибки 502. Для справки: https://www.techwalla.com/articles/what-is-a-proxy-error, https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502

Вы можете проверить код состояния ответа для подтверждения ошибки прокси, а затем вы можете изменить свой прокси на вторичный.

const request = require("request")

const primary = "http://192.168.1.10:8080"
const secondary = "http://192.168.1.20:8080"

request.get("https://www.google.com", {proxy: primary}, (err, res, body) => {
    if(res.statusCode == 502){
        request.get("https://www.google.com", {proxy: secondary}, (err, res, body) => {
            if(err){
                console.error(err)
                return
            }
            console.log(body)
        })
    }
    console.log(body)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...