From 6da73f34792d65675565641f6312644479862896 Mon Sep 17 00:00:00 2001 From: Nazar Leush Date: Tue, 7 Jul 2026 16:10:26 +0300 Subject: [PATCH 1/6] forward headers from `app.http_forward_headers_values` --- lib/utils.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/utils.js b/lib/utils.js index 361a7aa78..42e510cb3 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -116,6 +116,14 @@ export function prepareRequestOptions(request_options, options) { } request_options.headers = request_options.headers || {}; + + // Put forward headers. + const forward_headers = options?.getProviderOptions && options.getProviderOptions('app.http_forward_headers_values'); + if (forward_headers && typeof forward_headers === 'object' && !Array.isArray(forward_headers)) { + for (const [key, value] of Object.entries(forward_headers)) { + request_options.headers[key] = value; + } + } if (CONFIG.PROXY || options?.proxy) { From 4759918e7a7d60a3838141b68919ac5dffab8eda Mon Sep 17 00:00:00 2001 From: Nazar Leush Date: Thu, 9 Jul 2026 20:59:20 +0300 Subject: [PATCH 2/6] `http_forward_headers_values` -> `http_forward_headers` --- lib/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils.js b/lib/utils.js index 42e510cb3..c1746321f 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -118,7 +118,7 @@ export function prepareRequestOptions(request_options, options) { request_options.headers = request_options.headers || {}; // Put forward headers. - const forward_headers = options?.getProviderOptions && options.getProviderOptions('app.http_forward_headers_values'); + const forward_headers = options?.getProviderOptions && options.getProviderOptions('app.http_forward_headers'); if (forward_headers && typeof forward_headers === 'object' && !Array.isArray(forward_headers)) { for (const [key, value] of Object.entries(forward_headers)) { request_options.headers[key] = value; From 0314d01f137c39cb0c2ce5dbd28f23cf4f99d8c0 Mon Sep 17 00:00:00 2001 From: Nazar Leush Date: Thu, 9 Jul 2026 23:08:22 +0300 Subject: [PATCH 3/6] do not send sig headers if `app.http_forward_sig` --- lib/utils.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/utils.js b/lib/utils.js index c1746321f..1a7589643 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -117,6 +117,8 @@ export function prepareRequestOptions(request_options, options) { request_options.headers = request_options.headers || {}; + const forward_sig = options?.getProviderOptions && options.getProviderOptions('app.http_forward_sig'); + // Put forward headers. const forward_headers = options?.getProviderOptions && options.getProviderOptions('app.http_forward_headers'); if (forward_headers && typeof forward_headers === 'object' && !Array.isArray(forward_headers)) { @@ -203,7 +205,7 @@ export function prepareRequestOptions(request_options, options) { setCookieFromJar(uri, request_options.headers, options?.jar) - if ((options?.sig || request_sig) && options?.getSigHeaders) { + if (!forward_sig && (options?.sig || request_sig) && options?.getSigHeaders) { try { options.getSigHeaders(original_uri, function(error, headers) { if (error) { From cf5333bfe7b8d37c18d798a25b24e9060325f396 Mon Sep 17 00:00:00 2001 From: Nazar Leush Date: Fri, 10 Jul 2026 21:57:15 +0300 Subject: [PATCH 4/6] ignore Z_BUF_ERROR errors --- lib/fetch.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/fetch.js b/lib/fetch.js index a429cfc6f..d17cce1cb 100644 --- a/lib/fetch.js +++ b/lib/fetch.js @@ -44,7 +44,8 @@ export function skipLoggingFetchError(error) { || error?.code === 'ERR_STREAM_PREMATURE_CLOSE' || error?.code === 'ERR_HTTP2_STREAM_ERROR' || error?.code === 'ERR_HTTP2_SESSION_ERROR' - || error?.code === 'Z_DATA_ERROR'; + || error?.code === 'Z_DATA_ERROR' + || error?.code === 'Z_BUF_ERROR'; } function doFetch(fetch_func, h1_fetch_func, options) { From 8c0d3bad06b1932a9b861e38ac9300514ed14465 Mon Sep 17 00:00:00 2001 From: Nazar Leush Date: Wed, 15 Jul 2026 15:28:31 +0300 Subject: [PATCH 5/6] better `prevent_sig` logic --- lib/utils.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/utils.js b/lib/utils.js index 1a7589643..8a50350e4 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -115,10 +115,9 @@ export function prepareRequestOptions(request_options, options) { setPrerender(enable_domain_prerender); } + // Make empty headers by default for all cases. request_options.headers = request_options.headers || {}; - const forward_sig = options?.getProviderOptions && options.getProviderOptions('app.http_forward_sig'); - // Put forward headers. const forward_headers = options?.getProviderOptions && options.getProviderOptions('app.http_forward_headers'); if (forward_headers && typeof forward_headers === 'object' && !Array.isArray(forward_headers)) { @@ -145,7 +144,6 @@ export function prepareRequestOptions(request_options, options) { request_options.headers['User-Agent'] = proxy.user_agent; } if (proxy.headers) { - request_options.headers = request_options.headers || {}; Object.assign(request_options.headers, proxy.headers) } if (proxy.request_options) { @@ -192,7 +190,6 @@ export function prepareRequestOptions(request_options, options) { var lang = options?.getProviderOptions && options.getProviderOptions('locale') || ''; if (!disable_language) { - request_options.headers = request_options.headers || {}; request_options.headers['Accept-Language'] = lang /* !== '' */ ? lang.replace('_', '-') @@ -205,7 +202,10 @@ export function prepareRequestOptions(request_options, options) { setCookieFromJar(uri, request_options.headers, options?.jar) - if (!forward_sig && (options?.sig || request_sig) && options?.getSigHeaders) { + // Has header begining from "Signature". + const prevent_sig = Object.keys(request_options.headers).some(key => /^signature/i.test(key)); + + if (!prevent_sig && (options?.sig || request_sig) && options?.getSigHeaders) { try { options.getSigHeaders(original_uri, function(error, headers) { if (error) { @@ -213,7 +213,6 @@ export function prepareRequestOptions(request_options, options) { console.error('getSigHeaders error', error); resolve(request_options); } else { - request_options.headers = request_options.headers || {}; Object.assign(request_options.headers, headers); resolve(request_options); } From 56b920f7ca6a76c12169306b9ce4c84fba311588 Mon Sep 17 00:00:00 2001 From: Nazar Leush Date: Fri, 17 Jul 2026 14:30:55 +0300 Subject: [PATCH 6/6] use name `skip_sig` --- lib/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/utils.js b/lib/utils.js index 8a50350e4..77c117541 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -203,9 +203,9 @@ export function prepareRequestOptions(request_options, options) { setCookieFromJar(uri, request_options.headers, options?.jar) // Has header begining from "Signature". - const prevent_sig = Object.keys(request_options.headers).some(key => /^signature/i.test(key)); + const skip_sig = Object.keys(request_options.headers).some(key => /^signature/i.test(key)); - if (!prevent_sig && (options?.sig || request_sig) && options?.getSigHeaders) { + if (!skip_sig && (options?.sig || request_sig) && options?.getSigHeaders) { try { options.getSigHeaders(original_uri, function(error, headers) { if (error) {