@iflyrpa/actions 4.0.0-beta.15 → 4.0.0-beta.17

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.
package/dist/index.js CHANGED
@@ -5489,7 +5489,7 @@ var __webpack_exports__ = {};
5489
5489
  });
5490
5490
  const package_json_namespaceObject = require("@iflyrpa/share/package.json");
5491
5491
  var package_json_default = /*#__PURE__*/ __webpack_require__.n(package_json_namespaceObject);
5492
- var package_namespaceObject = JSON.parse('{"i8":"4.0.0-beta.14"}');
5492
+ var package_namespaceObject = JSON.parse('{"i8":"4.0.0-beta.16"}');
5493
5493
  const share_namespaceObject = require("@iflyrpa/share");
5494
5494
  const external_node_fs_namespaceObject = require("node:fs");
5495
5495
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
@@ -5590,7 +5590,8 @@ var __webpack_exports__ = {};
5590
5590
  url: error.config?.url,
5591
5591
  isProxyRequest: !!(error.config && (error.config.httpAgent || error.config.httpsAgent)),
5592
5592
  params: error.config?.params,
5593
- data: error.config?.data
5593
+ data: error.config?.data,
5594
+ serverDate: error.response?.headers?.date
5594
5595
  }
5595
5596
  };
5596
5597
  if (foundError) Object.assign(errorResponse, foundError);
@@ -5668,7 +5669,7 @@ var __webpack_exports__ = {};
5668
5669
  try {
5669
5670
  this.proxyInfo = agent ? `${agent.ip}:${agent.port}` : void 0;
5670
5671
  const controller = new AbortController();
5671
- const timeoutId = setTimeout(()=>controller.abort(), reqTimeout);
5672
+ const timeoutId = setTimeout(()=>controller.abort(), reqTimeout + 500);
5672
5673
  const response = await this.apiClient({
5673
5674
  ...config,
5674
5675
  timeout: reqTimeout,
@@ -11933,6 +11934,7 @@ var __webpack_exports__ = {};
11933
11934
  return acc;
11934
11935
  }, {});
11935
11936
  const loginBaseXsHeader = sessionCheck_xsEncrypt.signHeadersGet(loginBasePath, recordCookie, "xhs-pc-web", null);
11937
+ const baseInfoStart = Date.now();
11936
11938
  const _baseInfo = http.api({
11937
11939
  method: "get",
11938
11940
  baseURL: "https://creator.xiaohongshu.com",
@@ -11941,23 +11943,43 @@ var __webpack_exports__ = {};
11941
11943
  }, {
11942
11944
  retries: 3,
11943
11945
  retryDelay: 20,
11944
- timeout: 3000
11945
- }).catch((e)=>e.data);
11946
+ timeout: 5000
11947
+ }).catch((e)=>{
11948
+ const clientTimestamp = Date.now();
11949
+ const serverDate = e?.extra?.serverDate;
11950
+ const serverTimestamp = serverDate ? new Date(serverDate).getTime() : null;
11951
+ const timeDriftMs = serverTimestamp ? clientTimestamp - serverTimestamp : null;
11952
+ _task.logger?.warn("[XhsSessionCheck] creator base 接口请求失败", {
11953
+ accountId: params.accountId,
11954
+ duration: Date.now() - baseInfoStart,
11955
+ code: e?.code,
11956
+ message: e?.message,
11957
+ data: e?.data,
11958
+ extra: e?.extra,
11959
+ proxyInfo: http.proxyInfo,
11960
+ clientTimestamp,
11961
+ serverDate,
11962
+ serverTimestamp,
11963
+ timeDriftMs,
11964
+ isLikelyClockDrift: null !== timeDriftMs && Math.abs(timeDriftMs) > 300000
11965
+ });
11966
+ return e.data;
11967
+ });
11946
11968
  const _web_session = http.api({
11947
11969
  method: "get",
11948
11970
  url: "https://edith.xiaohongshu.com/api/sns/web/unread_count"
11949
11971
  }, {
11950
11972
  retries: 3,
11951
11973
  retryDelay: 20,
11952
- timeout: 3000
11974
+ timeout: 5000
11953
11975
  });
11954
11976
  const [baseInfo, web_session] = await Promise.all([
11955
11977
  _baseInfo,
11956
11978
  _web_session
11957
11979
  ]);
11958
11980
  if (baseInfo?.code === 0) check.isValidSession = true;
11959
- if (0 === web_session.code) check.isValidWebSession = true;
11960
- baseInfo?.code, web_session.code;
11981
+ if (web_session?.code === 0) check.isValidWebSession = true;
11982
+ baseInfo?.code, web_session?.code;
11961
11983
  const message = `小红书账号有效性检测成功${_task.debug ? ` ${http.proxyInfo}` : ""}`;
11962
11984
  return (0, share_namespaceObject.success)(check, message);
11963
11985
  };
@@ -23238,6 +23260,33 @@ var __webpack_exports__ = {};
23238
23260
  const encode_mnsv2 = __webpack_require__("./src/utils/xhs_ob/x_s.encoder.js");
23239
23261
  const xiaohongshuLogin_rpa_server_scanRetryMaxCount = 60;
23240
23262
  const xiaohongshuLogin_rpa_server_waitQrcodeResultMaxTime = 2000 * xiaohongshuLogin_rpa_server_scanRetryMaxCount;
23263
+ async function collectCookiesWithA1(task) {
23264
+ const hasA1 = (cookies)=>cookies.some((c)=>"a1" === c.name && !!c.value);
23265
+ let cookies = await task.steelBrowserContext?.cookies() ?? [];
23266
+ if (hasA1(cookies)) return cookies;
23267
+ task.logger?.warn("[XhsLogin] 首次抓取缺失 a1,尝试补救……");
23268
+ try {
23269
+ const page = task.steelBrowserContext?.pages?.()[0];
23270
+ if (page) {
23271
+ await page.goto("https://www.xiaohongshu.com", {
23272
+ waitUntil: "domcontentloaded",
23273
+ timeout: 15000
23274
+ });
23275
+ for(let i = 0; i < 10; i++){
23276
+ cookies = await task.steelBrowserContext?.cookies() ?? [];
23277
+ if (hasA1(cookies)) {
23278
+ task.logger?.info(`[XhsLogin] a1 补救成功,第 ${i + 1} 次轮询命中`);
23279
+ return cookies;
23280
+ }
23281
+ await new Promise((resolve)=>setTimeout(resolve, 500));
23282
+ }
23283
+ }
23284
+ } catch (err) {
23285
+ task.logger?.warn("[XhsLogin] a1 补救访问主站失败", err);
23286
+ }
23287
+ cookies = await task.steelBrowserContext?.cookies() ?? [];
23288
+ return cookies;
23289
+ }
23241
23290
  const xiaohongshuLogin_rpa_server_rpaServer = async (task, params)=>{
23242
23291
  const updateTaskState = task.taskStageStore?.update?.bind(task.taskStageStore, task.taskId || "");
23243
23292
  const reporter = task.reportService?.reportLoginStatus ?? (()=>Promise.resolve());
@@ -23438,21 +23487,29 @@ var __webpack_exports__ = {};
23438
23487
  };
23439
23488
  }
23440
23489
  case types_ExecutionState.SUCCESS:
23441
- await updateTaskState?.({
23442
- state: share_namespaceObject.TaskState.SUCCESS,
23443
- result: {
23444
- cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),
23445
- userInfo: userInfo
23446
- }
23447
- });
23448
- return {
23449
- code: 0,
23450
- message: "成功",
23451
- data: {
23452
- cookie: JSON.stringify(await task.steelBrowserContext?.cookies()),
23453
- userInfo
23454
- }
23455
- };
23490
+ {
23491
+ const cookies = await collectCookiesWithA1(task);
23492
+ const hasA1 = cookies.some((c)=>"a1" === c.name && !!c.value);
23493
+ if (!hasA1) task.logger?.warn("[XhsLogin] 登录成功但缺失关键 cookie a1,后续检测可能失败", {
23494
+ cookieNames: cookies.map((c)=>c.name)
23495
+ });
23496
+ const cookieStr = JSON.stringify(cookies);
23497
+ await updateTaskState?.({
23498
+ state: share_namespaceObject.TaskState.SUCCESS,
23499
+ result: {
23500
+ cookie: cookieStr,
23501
+ userInfo: userInfo
23502
+ }
23503
+ });
23504
+ return {
23505
+ code: 0,
23506
+ message: "成功",
23507
+ data: {
23508
+ cookie: cookieStr,
23509
+ userInfo
23510
+ }
23511
+ };
23512
+ }
23456
23513
  default:
23457
23514
  return {
23458
23515
  code: 500,