Получение: "Ошибка аутентификации: ошибка: прочитайте ECONNRESET" при подключении к облачной платформе Google за прокси-сервером
Я работал над проектом Node.js, который обращается к API облака Google. Когда я во внешней сети, запрос работает нормально, и я получаю ожидаемый ответ. Тем не менее, когда я защищаю свой прокси-сервер сотрудничества, который необходим для доступа к нашему серверу smpt, я получаю следующую ошибку:
Ошибка аутентификации: ошибка: прочитайте ECONNRESET
Чтобы пройти через прокси-сервер сотрудничества, я использую cntlm, и я установил его в качестве прокси среды, как упомянуто в этой статье.
Кроме того, я включил многословность GRPC и трассировку рукопожатия GRPC, как показано в коде ниже.
process.env.GRPC_VERBOSITY = 'DEBUG'
process.env.GRPC_TRACE = 'handshaker'
process.env.HTTP_PROXY = 'http://127.0.0.1:3128'
process.env.http_proxy = 'http://127.0.0.1:3128'
process.env.https_proxy = 'http://127.0.0.1:3128'
process.env.HTTPS_PROXY = 'http://127.0.0.1:3128'
process.env.PROXY = 'http://127.0.0.1:3128'
process.env.proxy = 'http://127.0.0.1:3128'
// Imports the Google Cloud client library
const language = require('@google-cloud/language');
// Instantiates a client
const client = new language.LanguageServiceClient({
projectId:'CNL-Showcase',
keyFilename: 'path/to/file/creds.json'
});
const document = {
content: request,
type: 'PLAIN_TEXT',
language: 'DE',
encodingType: 'UTF-8'
};
console.log('sending to Google Api');
client
.analyzeEntities({ document: document })
.then((results: any) => {
...
}).catch((err: any) => {
console.error('ERROR:', err);
res.send(err);
});
Примечание: путь к моему файлу creds изменен специально, как уже упоминалось выше, если я не за прокси-сервером, он работает просто отлично.
Вывод консоли выглядит следующим образом:
D0809 09:49:45.850000000 3460 dns_resolver.cc:339] Using native dns resolver
sending to Google Api
D0809 09:49:46.039000000 3460 dns_resolver.cc:280] Start resolving.
I0809 09:49:46.069000000 3460 handshaker.cc:141] handshake_manager
000000000423BE30: adding handshaker http_connect [0000000
00286BDD0] at index 0
I0809 09:49:46.073000000 3460 handshaker.cc:141] handshake_manager
000000000423BE30: adding handshaker security [00000000028
6AE00] at index 1
I0809 09:49:46.076000000 3460 handshaker.cc:212] handshake_manager
000000000423BE30: error="No Error" shutdown=0 index=0, ar
gs={endpoint=0000000002868FA0, args=00000000028617C0 {size=9:
grpc.primary_user_agent=grpc-node/1.13.1, grpc.client_channel_f
actory=000007FEEA85EBA0, grpc.channel_credentials=000000000423C960,
grpc.server_uri=dns:///language.googleapis.com:443, grpc.
http_connect_server=language.googleapis.com:443,
grpc.default_authority=language.googleapis.com:443, grpc.http2_scheme=https,
grpc.security_connector=00000000028F54E0,
grpc.subchannel_address=ipv4:127.0.0.1:3128}, read_buffer=0000000002876860
(length
=0), exit_early=0}
I0809 09:49:46.081000000 3460 handshaker.cc:253] handshake_manager
000000000423BE30: calling handshaker http_connect [000000
000286BDD0] at index 0
I0809 09:49:46.083000000 3460 http_connect_handshaker.cc:300] Connecting to
server language.googleapis.com:443 via HTTP prox
y ipv4:127.0.0.1:3128
I0809 09:49:46.211000000 3460 handshaker.cc:212] handshake_manager
000000000423BE30: error="No Error" shutdown=0 index=1, ar
gs={endpoint=0000000002868FA0, args=00000000028617C0 {size=9:
grpc.primary_user_agent=grpc-node/1.13.1, grpc.client_channel_f
actory=000007FEEA85EBA0, grpc.channel_credentials=000000000423C960,
grpc.server_uri=dns:///language.googleapis.com:443, grpc.
http_connect_server=language.googleapis.com:443,
grpc.default_authority=language.googleapis.com:443, grpc.http2_scheme=https,
grpc.security_connector=00000000028F54E0,
grpc.subchannel_address=ipv4:127.0.0.1:3128}, read_buffer=0000000002876860
(length
=0), exit_early=0}
I0809 09:49:46.211000000 3460 handshaker.cc:253] handshake_manager
000000000423BE30: calling handshaker security [0000000002
86AE00] at index 1
I0809 09:49:46.303000000 3460 handshaker.cc:212] handshake_manager
000000000423BE30: error="No Error" shutdown=0 index=2, ar
gs={endpoint=000000000287A7F0, args=0000000002862720 {size=10:
grpc.primary_user_agent=grpc-node/1.13.1, grpc.client_channel_
factory=000007FEEA85EBA0, grpc.channel_credentials=000000000423C960,
grpc.server_uri=dns:///language.googleapis.com:443, grpc
.http_connect_server=language.googleapis.com:443,
grpc.default_authority=language.googleapis.com:443, grpc.http2_scheme=https
, grpc.security_connector=00000000028F54E0,
grpc.subchannel_address=ipv4:127.0.0.1:3128,
grpc.auth_context=000000000285DD60},
read_buffer=0000000002876860 (length=0), exit_early=0}
I0809 09:49:46.304000000 3460 handshaker.cc:240] handshake_manager
000000000423BE30: handshaking complete -- scheduling on_h
andshake_done with error="No Error"
I0809 09:49:46.305000000 3460 subchannel.cc:608] New connected subchannel at
0000000002867790 for subchannel 00000000028A027
0
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Auth error:Error: read ECONNRESET
Я не могу определить причину проблемы, потому что рукопожатие работает нормально.
1 ответ
После тщательного поиска я нашел решение:
Установите Proxyfier, который направляет запрос из библиотеки на локальный компьютер через прокси.
Для Windows я нашел два приложения:
http://www.proxycap.com/
https://www.proxifier.com/
Я надеюсь, что это поможет кому-то, пытающемуся запустить PubSub в прокси-сетях.