n8n-nodes-seo-scanner 1.2.39 → 1.2.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,7 +49,7 @@ const cheerio = __importStar(require("cheerio"));
49
49
  const GOOGLEBOT_UA = 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
50
50
  const DEFAULT_APP_BASE_URL = 'https://uopix.com';
51
51
  const MAX_VISUAL_PREVIEW_PAGES = 12;
52
- const NODE_ENGINE_VERSION = 'seo-uopix-node/1.2.37';
52
+ const NODE_ENGINE_VERSION = 'seo-uopix-node/1.2.39';
53
53
  const NON_PAGE_EXTENSIONS_REGEX = /\.(?:jpg|jpeg|png|gif|webp|svg|pdf|doc|docx|xls|xlsx|ppt|pptx|zip|rar|7z|mp3|mp4|avi|mov|webm|css|js|json|xml|woff|woff2|ttf|eot|ico)(?:$|\?)/i;
54
54
  function asDataObject(value) {
55
55
  return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
@@ -1,5 +1,5 @@
1
1
  import { CrawlExtras } from './types';
2
- export declare const DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
2
+ export declare const DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36";
3
3
  type PageResponse = {
4
4
  html: string;
5
5
  finalUrl: string;
@@ -50,10 +50,15 @@ const tls = __importStar(require("tls"));
50
50
  const zlib = __importStar(require("zlib"));
51
51
  const puppeteer_1 = __importDefault(require("puppeteer"));
52
52
  const dnsPromises = dns.promises;
53
- exports.DEFAULT_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
53
+ exports.DEFAULT_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
54
54
  const WIKIMEDIA_USER_AGENT = 'UopixSeoScanner/1.2.37 (+https://uopix.com/contacto)';
55
55
  const DEFAULT_ACCEPT_LANGUAGE = 'en-US,en;q=0.8,es;q=0.6';
56
56
  const RETRYABLE_STATUS_CODES = new Set([403, 408, 425, 429, 500, 502, 503, 504]);
57
+ const FALLBACK_USER_AGENTS = [
58
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15',
59
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0',
60
+ 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
61
+ ];
57
62
  const originRequestTails = new Map();
58
63
  const originLastRequestAt = new Map();
59
64
  function sleep(ms) {
@@ -92,12 +97,33 @@ function effectiveUserAgent(url, userAgent) {
92
97
  return WIKIMEDIA_USER_AGENT;
93
98
  return userAgent || exports.DEFAULT_USER_AGENT;
94
99
  }
95
- function buildHeaders(url, userAgent, acceptLanguage, accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,text/plain;q=0.8,*/*;q=0.5') {
96
- return {
97
- 'User-Agent': effectiveUserAgent(url, userAgent),
100
+ function isChromeLikeUserAgent(userAgent) {
101
+ return /chrome\/\d/i.test(userAgent) && !/(googlebot|bingbot|bot|crawler|spider)/i.test(userAgent);
102
+ }
103
+ function buildHeaders(url, userAgent, acceptLanguage, accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,text/plain;q=0.8,*/*;q=0.5', options = {}) {
104
+ const resolvedUserAgent = effectiveUserAgent(url, userAgent);
105
+ const headers = {
106
+ 'User-Agent': resolvedUserAgent,
98
107
  'Accept': accept,
99
108
  'Accept-Language': acceptLanguage || DEFAULT_ACCEPT_LANGUAGE,
100
109
  };
110
+ const isDocument = options.isDocument !== false && accept.includes('text/html');
111
+ if (isDocument) {
112
+ headers['Upgrade-Insecure-Requests'] = '1';
113
+ headers['Sec-Fetch-Dest'] = 'document';
114
+ headers['Sec-Fetch-Mode'] = 'navigate';
115
+ headers['Sec-Fetch-Site'] = options.referer ? 'same-origin' : 'none';
116
+ headers['Sec-Fetch-User'] = '?1';
117
+ }
118
+ if (isChromeLikeUserAgent(resolvedUserAgent)) {
119
+ const chromeMajor = resolvedUserAgent.match(/chrome\/(\d+)/i)?.[1] || '131';
120
+ headers['sec-ch-ua'] = `"Chromium";v="${chromeMajor}", "Not(A:Brand";v="24", "Google Chrome";v="${chromeMajor}"`;
121
+ headers['sec-ch-ua-mobile'] = '?0';
122
+ headers['sec-ch-ua-platform'] = '"Windows"';
123
+ }
124
+ if (options.referer)
125
+ headers['Referer'] = options.referer;
126
+ return headers;
101
127
  }
102
128
  function parseRetryAfterMs(response) {
103
129
  const value = response.headers.get('retry-after')?.trim();
@@ -115,10 +141,22 @@ function retryDelayMs(response, attempt, timeoutMs) {
115
141
  const jitter = Math.floor(Math.random() * 250);
116
142
  return Math.min(Math.max(fromHeader ?? 0, exponential + jitter), Math.min(timeoutMs, 10000));
117
143
  }
118
- function retryCountForStatus(status, configuredRetries) {
119
- if (status === 403)
120
- return Math.min(configuredRetries, 1);
121
- return configuredRetries;
144
+ function rotatedUserAgent(originalUserAgent, attempt) {
145
+ if (attempt <= 0)
146
+ return originalUserAgent;
147
+ const candidate = FALLBACK_USER_AGENTS[(attempt - 1) % FALLBACK_USER_AGENTS.length];
148
+ return candidate || originalUserAgent;
149
+ }
150
+ function applyUserAgentToInit(init, userAgent) {
151
+ const headers = init.headers;
152
+ if (headers && typeof headers === 'object' && !Array.isArray(headers)) {
153
+ headers['User-Agent'] = userAgent;
154
+ if (!isChromeLikeUserAgent(userAgent)) {
155
+ delete headers['sec-ch-ua'];
156
+ delete headers['sec-ch-ua-mobile'];
157
+ delete headers['sec-ch-ua-platform'];
158
+ }
159
+ }
122
160
  }
123
161
  async function waitForOriginSlot(url, minIntervalMs) {
124
162
  const origin = getOrigin(url);
@@ -142,6 +180,9 @@ async function fetchWithPolicy(url, init, policy) {
142
180
  let lastError;
143
181
  for (let attempt = 0; attempt <= retries; attempt++) {
144
182
  await waitForOriginSlot(url, policy.minOriginIntervalMs ?? (isWikimediaUrl(url) ? 500 : 150));
183
+ if (policy.rotateUserAgentOnBlock && attempt > 0) {
184
+ applyUserAgentToInit(init, rotatedUserAgent(policy.userAgent, attempt));
185
+ }
145
186
  const controller = new AbortController();
146
187
  const timeout = setTimeout(() => controller.abort(), policy.timeoutMs);
147
188
  try {
@@ -149,8 +190,7 @@ async function fetchWithPolicy(url, init, policy) {
149
190
  ...init,
150
191
  signal: controller.signal,
151
192
  });
152
- const allowedRetries = retryCountForStatus(response.status, retries);
153
- if (!RETRYABLE_STATUS_CODES.has(response.status) || attempt >= allowedRetries) {
193
+ if (!RETRYABLE_STATUS_CODES.has(response.status) || attempt >= retries) {
154
194
  return {
155
195
  response,
156
196
  cleanup: () => clearTimeout(timeout),
@@ -238,12 +278,13 @@ async function fetchPage(url, timeoutMs, opts = {}) {
238
278
  return fetchPageWithBrowser(url, timeoutMs, userAgent, acceptLanguage);
239
279
  }
240
280
  const managedResponse = await fetchWithPolicy(url, {
241
- headers: buildHeaders(url, userAgent, acceptLanguage),
281
+ headers: buildHeaders(url, userAgent, acceptLanguage, undefined, { isDocument: true, referer: getOrigin(url) }),
242
282
  redirect: followRedirects ? 'follow' : 'manual',
243
283
  }, {
244
284
  timeoutMs,
245
285
  userAgent,
246
- retries: 2,
286
+ retries: 3,
287
+ rotateUserAgentOnBlock: true,
247
288
  });
248
289
  const { response } = managedResponse;
249
290
  const timeToFirstByteMs = Date.now() - start;
@@ -254,7 +295,7 @@ async function fetchPage(url, timeoutMs, opts = {}) {
254
295
  finally {
255
296
  managedResponse.cleanup();
256
297
  }
257
- if (browserFallbackOnForbidden && isBrowserChallenge(response.status, html)) {
298
+ if (browserFallbackOnForbidden && (response.status === 403 || isBrowserChallenge(response.status, html))) {
258
299
  try {
259
300
  return await fetchPageWithBrowser(url, timeoutMs, userAgent, acceptLanguage, true);
260
301
  }
@@ -427,6 +468,7 @@ async function fetchText(url, timeoutMs, userAgent) {
427
468
  timeoutMs,
428
469
  userAgent,
429
470
  retries: 2,
471
+ rotateUserAgentOnBlock: true,
430
472
  });
431
473
  const { response } = managedResponse;
432
474
  let text;
@@ -1 +1 @@
1
- {"version":3,"file":"networkUtils.js","sourceRoot":"","sources":["../nodes/SeoScanner/networkUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgOA,8BA4DC;AAED,0CAEC;AAED,kDAyBC;AAED,4CAcC;AAED,gCA+BC;AAED,kCAsBC;AAED,sDAwBC;AA6BD,8BA8BC;AAzdD,yCAA2B;AAC3B,yCAA2B;AAC3B,2CAA6B;AAC7B,0DAAkC;AAGlC,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC;AACpB,QAAA,kBAAkB,GAAG,iHAAiH,CAAC;AACpJ,MAAM,oBAAoB,GAAG,sDAAsD,CAAC;AACpF,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACjF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAyB,CAAC;AAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAuBtD,SAAS,KAAK,CAAC,EAAU;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC7B,IAAI,CAAC;QACJ,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,GAAG,CAAC;IACZ,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IAClC,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO;YACN,eAAe;YACf,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,cAAc;YACd,iBAAiB;YACjB,gBAAgB;YAChB,eAAe;SACf,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,SAAiB;IACzD,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,SAAS,KAAK,0BAAkB;QAAE,OAAO,oBAAoB,CAAC;IACzF,OAAO,SAAS,IAAI,0BAAkB,CAAC;AACxC,CAAC;AAED,SAAS,YAAY,CACpB,GAAW,EACX,SAAiB,EACjB,cAAuB,EACvB,MAAM,GAAG,kFAAkF;IAE3F,OAAO;QACN,YAAY,EAAE,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC;QAChD,QAAQ,EAAE,MAAM;QAChB,iBAAiB,EAAE,cAAc,IAAI,uBAAuB;KAC5D,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAkB;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED,SAAS,YAAY,CAAC,QAAyB,EAAE,OAAe,EAAE,SAAiB;IAClF,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,iBAAyB;IACrE,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC1D,OAAO,iBAAiB,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,aAAqB;IAClE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACrE,MAAM,OAAO,GAAG,QAAQ;SACtB,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;SACtB,IAAI,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACvE,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACJ,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,CAAC;IACd,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO;QAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnF,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,IAAiB,EAAE,MAAqB;IACnF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACjD,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACrD,MAAM,iBAAiB,CACtB,GAAG,EACH,MAAM,CAAC,mBAAmB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAC/D,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACvE,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBACjC,GAAG,IAAI;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,cAAc,EAAE,CAAC;gBAC/E,OAAO;oBACN,QAAQ;oBACR,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;iBACpC,CAAC;YACH,CAAC;YACD,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACrD,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,OAAO,IAAI,OAAO;gBAAE,MAAM,KAAK,CAAC;YACpC,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5D,CAAC;IACF,CAAC;IAED,MAAM,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB,EAAE,IAAY;IAC3D,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/G,CAAC;AAED,KAAK,UAAU,oBAAoB,CAClC,GAAW,EACX,SAAiB,EACjB,SAAiB,EACjB,cAAuB,EACvB,WAAW,GAAG,KAAK;IAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACJ,OAAO,GAAG,MAAM,mBAAS,CAAC,MAAM,CAAC;YAChC,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,CAAC,cAAc,EAAE,0BAA0B,EAAE,yBAAyB,CAAC;SAC7E,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC9B,iBAAiB,EAAE,cAAc,IAAI,uBAAuB;SAC5D,CAAC,CAAC;QACH,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC9B,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAAE,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;;oBACjF,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,CAAC,iBAAiB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBACpE,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YACxC,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc;YAC5D,OAAO,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACnF,IAAI,WAAW;YAAE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,eAAe,GAA2B,EAAE,CAAC;QACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC/D,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;QAC5C,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAC1C,OAAO;YACN,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;YACpB,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE;YAC7B,cAAc;YACd,iBAAiB,EAAE,iBAAiB,IAAI,cAAc;YACtD,eAAe;SACf,CAAC;IACH,CAAC;YAAS,CAAC;QACV,IAAI,OAAO;YAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;AACF,CAAC;AAEM,KAAK,UAAU,SAAS,CAC9B,GAAW,EACX,SAAiB,EACjB,OAMI,EAAE;IAEN,MAAM,EACL,SAAS,GAAG,0BAAkB,EAC9B,eAAe,GAAG,IAAI,EACtB,cAAc,EACd,cAAc,GAAG,KAAK,EACtB,0BAA0B,GAAG,IAAI,GACjC,GAAG,IAAI,CAAC;IACT,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE;QAClD,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC;QACrD,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;KAC/C,EAAE;QACF,SAAS;QACT,SAAS;QACT,OAAO,EAAE,CAAC;KACV,CAAC,CAAC;IACH,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;IACrC,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC7C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACJ,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;YAAS,CAAC;QACV,eAAe,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,0BAA0B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC;YACJ,OAAO,MAAM,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACF,CAAC;IAED,MAAM,eAAe,GAA2B,EAAE,CAAC;IACnD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,OAAO;QACN,IAAI;QACJ,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG;QAC7B,UAAU,EAAE,QAAQ,CAAC,MAAM;QAC3B,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;QAClC,iBAAiB;QACjB,eAAe;KACf,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,IAAY;IAC3C,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3G,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACxC,GAAW,EACX,SAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC;QACJ,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC;YACrC,QAAQ,EAAE,QAAQ;SAClB,EAAE;YACF,SAAS;YACT,SAAS;YACT,OAAO,EAAE,CAAC;SACV,CAAC,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QACrC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO;YACN,UAAU,EAAE,QAAQ,CAAC,MAAM;YAC3B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SAClG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;AACF,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,UAAkB,EAAE,SAAiB,EAAE,SAAiB;IAC9F,IAAI,GAAG,GAAkB,UAAU,CAAC;IACpC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,OAAO,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAC3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACtF,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YAC1F,KAAK,EAAE,CAAC;YACR,GAAG,GAAG,QAAQ,CAAC;QAChB,CAAC;aAAM,CAAC;YACP,MAAM;QACP,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;YAC3F,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO;gBACR,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,OAAO,CAAC;oBACP,KAAK,EAAE,OAAO,GAAG,IAAI,IAAI,EAAE;oBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,MAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;oBACrH,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACtB,CAAC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;QACF,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,WAAW,CAChC,GAAW,EACX,SAAiB,EACjB,OAA+B,EAAE;IAEjC,MAAM,EAAE,SAAS,GAAG,0BAAkB,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC;QACJ,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC;YACrC,QAAQ,EAAE,QAAQ;SAClB,EAAE;YACF,SAAS;YACT,SAAS;YACT,OAAO,EAAE,CAAC;SACV,CAAC,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QACrC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC1B,CAAC;AACF,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAC1C,GAAW,EACX,SAAiB,EACjB,YAAoB,0BAAkB;IAEtC,IAAI,CAAC;QACJ,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;YACvD,QAAQ,EAAE,QAAQ;SAClB,EAAE;YACF,SAAS;YACT,SAAS;YACT,OAAO,EAAE,CAAC;YACV,mBAAmB,EAAE,GAAG;SACxB,CAAC,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QACrC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1D,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,WAA0B,EAAE,KAAa;IAC9E,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC;YACJ,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;QAC1B,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;WACvB,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;WACnC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAkB;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,SAAiB,EAAE,SAAiB;IAChF,IAAI,CAAC;QACJ,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE;YAClD,OAAO,EAAE,YAAY,CACpB,GAAG,EACH,SAAS,EACT,uBAAuB,EACvB,+DAA+D,CAC/D;YACD,QAAQ,EAAE,QAAQ;SAClB,EAAE;YACF,SAAS;YACT,SAAS;YACT,OAAO,EAAE,CAAC;SACV,CAAC,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QACrC,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACJ,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACV,eAAe,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO;YACN,IAAI;YACJ,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,UAAU,EAAE,QAAQ,CAAC,MAAM;SAC3B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC/C,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"networkUtils.js","sourceRoot":"","sources":["../nodes/SeoScanner/networkUtils.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ const cheerio = __importStar(require("cheerio"));
49
49
  const GOOGLEBOT_UA = 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
50
50
  const DEFAULT_APP_BASE_URL = 'https://uopix.com';
51
51
  const MAX_VISUAL_PREVIEW_PAGES = 12;
52
- const NODE_ENGINE_VERSION = 'seo-uopix-node/1.2.37';
52
+ const NODE_ENGINE_VERSION = 'seo-uopix-node/1.2.39';
53
53
  const NON_PAGE_EXTENSIONS_REGEX = /\.(?:jpg|jpeg|png|gif|webp|svg|pdf|doc|docx|xls|xlsx|ppt|pptx|zip|rar|7z|mp3|mp4|avi|mov|webm|css|js|json|xml|woff|woff2|ttf|eot|ico)(?:$|\?)/i;
54
54
  function asDataObject(value) {
55
55
  return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
@@ -50,10 +50,15 @@ const tls = __importStar(require("tls"));
50
50
  const zlib = __importStar(require("zlib"));
51
51
  const puppeteer_1 = __importDefault(require("puppeteer"));
52
52
  const dnsPromises = dns.promises;
53
- exports.DEFAULT_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
53
+ exports.DEFAULT_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
54
54
  const WIKIMEDIA_USER_AGENT = 'UopixSeoScanner/1.2.37 (+https://uopix.com/contacto)';
55
55
  const DEFAULT_ACCEPT_LANGUAGE = 'en-US,en;q=0.8,es;q=0.6';
56
56
  const RETRYABLE_STATUS_CODES = new Set([403, 408, 425, 429, 500, 502, 503, 504]);
57
+ const FALLBACK_USER_AGENTS = [
58
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15',
59
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0',
60
+ 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
61
+ ];
57
62
  const originRequestTails = new Map();
58
63
  const originLastRequestAt = new Map();
59
64
  function sleep(ms) {
@@ -92,12 +97,33 @@ function effectiveUserAgent(url, userAgent) {
92
97
  return WIKIMEDIA_USER_AGENT;
93
98
  return userAgent || exports.DEFAULT_USER_AGENT;
94
99
  }
95
- function buildHeaders(url, userAgent, acceptLanguage, accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,text/plain;q=0.8,*/*;q=0.5') {
96
- return {
97
- 'User-Agent': effectiveUserAgent(url, userAgent),
100
+ function isChromeLikeUserAgent(userAgent) {
101
+ return /chrome\/\d/i.test(userAgent) && !/(googlebot|bingbot|bot|crawler|spider)/i.test(userAgent);
102
+ }
103
+ function buildHeaders(url, userAgent, acceptLanguage, accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,text/plain;q=0.8,*/*;q=0.5', options = {}) {
104
+ const resolvedUserAgent = effectiveUserAgent(url, userAgent);
105
+ const headers = {
106
+ 'User-Agent': resolvedUserAgent,
98
107
  'Accept': accept,
99
108
  'Accept-Language': acceptLanguage || DEFAULT_ACCEPT_LANGUAGE,
100
109
  };
110
+ const isDocument = options.isDocument !== false && accept.includes('text/html');
111
+ if (isDocument) {
112
+ headers['Upgrade-Insecure-Requests'] = '1';
113
+ headers['Sec-Fetch-Dest'] = 'document';
114
+ headers['Sec-Fetch-Mode'] = 'navigate';
115
+ headers['Sec-Fetch-Site'] = options.referer ? 'same-origin' : 'none';
116
+ headers['Sec-Fetch-User'] = '?1';
117
+ }
118
+ if (isChromeLikeUserAgent(resolvedUserAgent)) {
119
+ const chromeMajor = resolvedUserAgent.match(/chrome\/(\d+)/i)?.[1] || '131';
120
+ headers['sec-ch-ua'] = `"Chromium";v="${chromeMajor}", "Not(A:Brand";v="24", "Google Chrome";v="${chromeMajor}"`;
121
+ headers['sec-ch-ua-mobile'] = '?0';
122
+ headers['sec-ch-ua-platform'] = '"Windows"';
123
+ }
124
+ if (options.referer)
125
+ headers['Referer'] = options.referer;
126
+ return headers;
101
127
  }
102
128
  function parseRetryAfterMs(response) {
103
129
  const value = response.headers.get('retry-after')?.trim();
@@ -115,10 +141,22 @@ function retryDelayMs(response, attempt, timeoutMs) {
115
141
  const jitter = Math.floor(Math.random() * 250);
116
142
  return Math.min(Math.max(fromHeader ?? 0, exponential + jitter), Math.min(timeoutMs, 10000));
117
143
  }
118
- function retryCountForStatus(status, configuredRetries) {
119
- if (status === 403)
120
- return Math.min(configuredRetries, 1);
121
- return configuredRetries;
144
+ function rotatedUserAgent(originalUserAgent, attempt) {
145
+ if (attempt <= 0)
146
+ return originalUserAgent;
147
+ const candidate = FALLBACK_USER_AGENTS[(attempt - 1) % FALLBACK_USER_AGENTS.length];
148
+ return candidate || originalUserAgent;
149
+ }
150
+ function applyUserAgentToInit(init, userAgent) {
151
+ const headers = init.headers;
152
+ if (headers && typeof headers === 'object' && !Array.isArray(headers)) {
153
+ headers['User-Agent'] = userAgent;
154
+ if (!isChromeLikeUserAgent(userAgent)) {
155
+ delete headers['sec-ch-ua'];
156
+ delete headers['sec-ch-ua-mobile'];
157
+ delete headers['sec-ch-ua-platform'];
158
+ }
159
+ }
122
160
  }
123
161
  async function waitForOriginSlot(url, minIntervalMs) {
124
162
  const origin = getOrigin(url);
@@ -142,6 +180,9 @@ async function fetchWithPolicy(url, init, policy) {
142
180
  let lastError;
143
181
  for (let attempt = 0; attempt <= retries; attempt++) {
144
182
  await waitForOriginSlot(url, policy.minOriginIntervalMs ?? (isWikimediaUrl(url) ? 500 : 150));
183
+ if (policy.rotateUserAgentOnBlock && attempt > 0) {
184
+ applyUserAgentToInit(init, rotatedUserAgent(policy.userAgent, attempt));
185
+ }
145
186
  const controller = new AbortController();
146
187
  const timeout = setTimeout(() => controller.abort(), policy.timeoutMs);
147
188
  try {
@@ -149,8 +190,7 @@ async function fetchWithPolicy(url, init, policy) {
149
190
  ...init,
150
191
  signal: controller.signal,
151
192
  });
152
- const allowedRetries = retryCountForStatus(response.status, retries);
153
- if (!RETRYABLE_STATUS_CODES.has(response.status) || attempt >= allowedRetries) {
193
+ if (!RETRYABLE_STATUS_CODES.has(response.status) || attempt >= retries) {
154
194
  return {
155
195
  response,
156
196
  cleanup: () => clearTimeout(timeout),
@@ -238,12 +278,13 @@ async function fetchPage(url, timeoutMs, opts = {}) {
238
278
  return fetchPageWithBrowser(url, timeoutMs, userAgent, acceptLanguage);
239
279
  }
240
280
  const managedResponse = await fetchWithPolicy(url, {
241
- headers: buildHeaders(url, userAgent, acceptLanguage),
281
+ headers: buildHeaders(url, userAgent, acceptLanguage, undefined, { isDocument: true, referer: getOrigin(url) }),
242
282
  redirect: followRedirects ? 'follow' : 'manual',
243
283
  }, {
244
284
  timeoutMs,
245
285
  userAgent,
246
- retries: 2,
286
+ retries: 3,
287
+ rotateUserAgentOnBlock: true,
247
288
  });
248
289
  const { response } = managedResponse;
249
290
  const timeToFirstByteMs = Date.now() - start;
@@ -254,7 +295,7 @@ async function fetchPage(url, timeoutMs, opts = {}) {
254
295
  finally {
255
296
  managedResponse.cleanup();
256
297
  }
257
- if (browserFallbackOnForbidden && isBrowserChallenge(response.status, html)) {
298
+ if (browserFallbackOnForbidden && (response.status === 403 || isBrowserChallenge(response.status, html))) {
258
299
  try {
259
300
  return await fetchPageWithBrowser(url, timeoutMs, userAgent, acceptLanguage, true);
260
301
  }
@@ -427,6 +468,7 @@ async function fetchText(url, timeoutMs, userAgent) {
427
468
  timeoutMs,
428
469
  userAgent,
429
470
  retries: 2,
471
+ rotateUserAgentOnBlock: true,
430
472
  });
431
473
  const { response } = managedResponse;
432
474
  let text;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-seo-scanner",
3
- "version": "1.2.39",
3
+ "version": "1.2.40",
4
4
  "description": "Nodo n8n para escaneo SEO tecnico con crawl interno, informe HTML, deteccion de CMS, seguridad, DNS, CDN, SSL y analytics.",
5
5
  "license": "MIT",
6
6
  "author": "OXSR",