HCLonely / HCLonely/AWA-Helper
Twitch出现unable to verify the first certificate
Open
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 55
- Forks
- 8
- Avg merge
- 48m
- Merged PRs (30d)
- 1
Description
版本3.4.8
使用steamcommunity 302
配置了TLSRejectUnauthorized: false
首次做任务时产生以下报错:
[2026-08-26 07:58:54] 正在获取 Achievements...OK
[2026-08-26 07:59:04] 正在匹配 Achievements...
[2026-08-26 07:59:04] 正在初始化 TwitchTrack...[2026-08-26 07:59:04] 匹配 Achievements 完成!
Error
[2026-08-26 07:59:09] 正在重试第 1 次...Error
[2026-08-26 07:59:12] 正在重试第 2 次...Error
[2026-08-26 07:59:13] 正在重试第 3 次...Error(0): 证书错误,请尝试更换代理或节点!
Ie [Error]: unable to verify the first certificate
at Ie.from (output/main.js:1:1305488)
at w.<anonymous> (output/main.js:1:1334715)
at w.emit (node:events:531:35)
at f.<computed> (output/main.js:1:1286415)
at ClientRequest.emit (node:events:519:28)
at emitErrorEvent (node:_http_client:108:11)
at TLSSocket.socketErrorListener (node:_http_client:575:5)
at TLSSocket.emit (node:events:531:35)
at emitErrorNT (node:internal/streams/destroy:170:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at _n.request (output/main.js:1:1350149)
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async output/main.js:1:3422114
at async _n.request (output/main.js:1:1350053)
... collapsed 4 duplicate lines matching above 2 lines 2 times...
at async mY.Twitch.init (output/main.js:1:3434330)
at async lY.Archievement.watchTwitch (output/main.js:1:3445290) {
isAxiosError: true,
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE',
config: [Object: null prototype] {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false,
legacyInterceptorReqResOrdering: true
},
adapter: [ 'xhr', 'http', 'fetch' ],
transformRequest: [ [Function (anonymous)] ],
transformResponse: [ [Function (anonymous)] ],
timeout: 300000,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function], Blob: [class Blob] },
validateStatus: [Function: validateStatus],
headers: Object [AxiosHeaders] {
Accept: 'application/json, text/plain, */*',
'Content-Type': undefined,
Host: 'www.twitch.tv',
'User-Agent': 'axios/1.16.1',
'Accept-Encoding': 'gzip, compress, deflate, br'
},
maxRedirects: 5,
url: 'https://www.twitch.tv/',
method: 'get',
Logger: h { id: 1787702353574, data: '' },
allowAbsoluteUrls: true,
retryCount: 3,
data: undefined
},
request: <ref *1> Writable {
_events: {
close: undefined,
error: [Function (anonymous)],
prefinish: undefined,
finish: undefined,
drain: undefined,
response: [Function (anonymous)],
socket: [Array],
timeout: undefined,
abort: undefined
},
_writableState: WritableState {
highWaterMark: 16384,
length: 0,
corked: 0,
onwrite: [Function: bound onwrite],
writelen: 0,
bufferedIndex: 0,
pendingcb: 0,
[Symbol(kState)]: 17581054,
[Symbol(kBufferedValue)]: null,
[Symbol(kErroredValue)]: [Error]
},
_maxListeners: undefined,
_options: {
maxRedirects: 5,
maxBodyLength: Infinity,
protocol: 'https:',
path: '/',
method: 'GET',
headers: [Object: null prototype],
agents: [Object],
auth: undefined,
family: undefined,
beforeRedirect: [Function: Vt],
beforeRedirects: [Object: null prototype],
http2Options: undefined,
hostname: 'www.twitch.tv',
port: '',
agent: undefined,
insecureHTTPParser: false,
nativeProtocols: [Object],
sensitiveHeaders: [],
pathname: '/'
},
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 0,
_requestBodyBuffers: [],
_eventsCount: 3,
_onNativeResponse: [Function (anonymous)],
_headerFilter: /^(?:Authorization|Proxy-Authorization|Cookie)$/i,
_currentRequest: ClientRequest {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
outputData: [],
outputSize: 0,
writable: true,
destroyed: true,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: true,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: false,
_header: 'GET / HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Host: www.twitch.tv\r\n' +
'User-Agent: axios/1.16.1\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Connection: keep-alive\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: [Agent],
socketPath: undefined,
method: 'GET',
maxHeaderSize: undefined,
insecureHTTPParser: false,
joinDuplicateHeaders: undefined,
path: '/',
_ended: false,
res: null,
aborted: false,
timeoutCb: [Function: emitRequestTimeout],
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'www.twitch.tv',
protocol: 'https:',
_redirectable: [Circular *1],
[Symbol(shapeMode)]: false,
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kChunkedBuffer)]: [],
[Symbol(kChunkedLength)]: 0,
[Symbol(kSocket)]: [TLSSocket],
[Symbol(kOutHeaders)]: [Object: null prototype],
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null,
[Symbol(kError)]: [Error]
},
_currentUrl: 'https://www.twitch.tv/',
_timeout: null,
[Symbol(shapeMode)]: true,
[Symbol(kCapture)]: false
},
cause: Error: unable to verify the first certificate
at TLSSocket.onConnectSecure (node:internal/tls/wrap:1701:34)
at TLSSocket.emit (node:events:519:28)
at TLSSocket._finishInit (node:internal/tls/wrap:1099:8)
at ssl.onhandshakedone (node:internal/tls/wrap:885:12) {
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
}
}
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the reported request path in output/main.js, especially Twitch.init and Archievement.watchTwitch, and reproduce the first task using the reported TLSRejectUnauthorized setting. Trace the request to https://www.twitch.tv/ and verify that certificate handling is consistent with the configured setting and that the retry sequence no longer ends with the reported certificate error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- node.js, typescript
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100