@iflyrpa/actions 4.0.4-beta.6 → 4.0.4-beta.7
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/bundle.js +127 -121
- package/dist/bundle.js.map +1 -1
- package/dist/index.js +127 -121
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +127 -121
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/bundle.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/*! For license information please see bundle.js.LICENSE.txt */
|
|
2
|
-
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f82b2e89-3bbf-5b48-989f-191986e75094")}catch(e){}}();
|
|
4
2
|
var __webpack_modules__ = {
|
|
5
3
|
"../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js": function(__unused_webpack_module, exports1, __webpack_require__) {
|
|
6
4
|
"use strict";
|
|
@@ -12492,7 +12490,7 @@ var __webpack_exports__ = {};
|
|
|
12492
12490
|
var package_namespaceObject = {
|
|
12493
12491
|
i8: "0.1.2"
|
|
12494
12492
|
};
|
|
12495
|
-
var package_namespaceObject_0 = JSON.parse('{"i8":"4.0.4-beta.
|
|
12493
|
+
var package_namespaceObject_0 = JSON.parse('{"i8":"4.0.4-beta.7"}');
|
|
12496
12494
|
const external_node_fs_namespaceObject = require("node:fs");
|
|
12497
12495
|
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
12498
12496
|
const external_node_http_namespaceObject = require("node:http");
|
|
@@ -38662,8 +38660,8 @@ var __webpack_exports__ = {};
|
|
|
38662
38660
|
if (!response || !response.data) return;
|
|
38663
38661
|
const responseData = response.data;
|
|
38664
38662
|
if (response && responseData?.status_code && 0 !== responseData.status_code) {
|
|
38665
|
-
const errorCode = 4 === responseData.status_code ?
|
|
38666
|
-
if (4 === responseData.status_code) task.logger.warn(`[douyinPublish]
|
|
38663
|
+
const errorCode = 4 === responseData.status_code ? 590 : responseData.status_code;
|
|
38664
|
+
if (4 === responseData.status_code) task.logger.warn(`[douyinPublish] status_code:4(ticket-guard 伪装拒绝),映射为 590 触发重新签名重试。原始响应: ${JSON.stringify(responseData)}`);
|
|
38667
38665
|
return {
|
|
38668
38666
|
code: errorCode,
|
|
38669
38667
|
message: responseData.status_msg || "文章发布异常,请稍后重试。",
|
|
@@ -38730,132 +38728,141 @@ var __webpack_exports__ = {};
|
|
|
38730
38728
|
return utils_response(414, "安全参数 certificate 解析失败,请重新获取后重试", "");
|
|
38731
38729
|
}
|
|
38732
38730
|
const ree_public_key = webProtectData.client_cert.replace("pub.", "");
|
|
38733
|
-
|
|
38734
|
-
|
|
38735
|
-
|
|
38736
|
-
|
|
38737
|
-
|
|
38738
|
-
|
|
38739
|
-
|
|
38740
|
-
|
|
38741
|
-
|
|
38742
|
-
|
|
38743
|
-
|
|
38744
|
-
|
|
38731
|
+
const MAX_SIGN_RETRIES = 3;
|
|
38732
|
+
const SIGN_RETRY_DELAY = 2000;
|
|
38733
|
+
const signAndPublish = async ()=>{
|
|
38734
|
+
let bdTicketGuardClientData;
|
|
38735
|
+
try {
|
|
38736
|
+
bdTicketGuardClientData = getBdV2({
|
|
38737
|
+
ticket,
|
|
38738
|
+
ts_sign: ts_sign,
|
|
38739
|
+
ec_privateKey: ec_privateKey,
|
|
38740
|
+
certificate: certificate,
|
|
38741
|
+
bd_ticket_guard_ree_public_key: ree_public_key
|
|
38742
|
+
});
|
|
38743
|
+
if (!bdTicketGuardClientData || !bdTicketGuardClientData["headers_bd_ticket_guard_client_data"]) {
|
|
38744
|
+
task.logger.error(`[douyinPublish] bdTicketGuardClientData 生成失败或不完整: ${JSON.stringify(bdTicketGuardClientData)}`);
|
|
38745
|
+
throw utils_response(414, "安全参数 bdTicketGuardClientData 生成失败,请重新获取后重试", "");
|
|
38746
|
+
}
|
|
38747
|
+
} catch (error) {
|
|
38748
|
+
if (error && "object" == typeof error && "code" in error) throw error;
|
|
38749
|
+
task.logger.error(`[douyinPublish] 生成 bdTicketGuardClientData 失败: ${error}`);
|
|
38750
|
+
throw utils_response(414, "安全参数 bdTicketGuardClientData 生成异常,请重新获取后重试", "");
|
|
38751
|
+
}
|
|
38752
|
+
task.logger.info("[douyinPublish] bdTicketGuardClientData 生成成功");
|
|
38753
|
+
const publishQuery = {
|
|
38754
|
+
...publishParams,
|
|
38755
|
+
a_bogus: ""
|
|
38756
|
+
};
|
|
38757
|
+
const queryString = new URLSearchParams(publishQuery).toString();
|
|
38758
|
+
let aBogus;
|
|
38759
|
+
try {
|
|
38760
|
+
aBogus = mock_getABogus(`https://creator.douyin.com/web/api/media/aweme/create_v2/?${queryString}`, publishData, userAgent);
|
|
38761
|
+
if (!aBogus || aBogus.length < 10) {
|
|
38762
|
+
task.logger.error(`[douyinPublish] a_bogus 生成异常,长度过短: ${aBogus}`);
|
|
38763
|
+
throw utils_response(414, "安全参数 a_bogus 生成失败,请重试", "");
|
|
38764
|
+
}
|
|
38765
|
+
} catch (error) {
|
|
38766
|
+
if (error && "object" == typeof error && "code" in error) throw error;
|
|
38767
|
+
task.logger.error(`[douyinPublish] 生成 a_bogus 失败: ${error}`);
|
|
38768
|
+
throw utils_response(414, "安全参数 a_bogus 生成异常,请重试", "");
|
|
38745
38769
|
}
|
|
38746
|
-
|
|
38747
|
-
|
|
38748
|
-
|
|
38749
|
-
|
|
38750
|
-
|
|
38751
|
-
|
|
38752
|
-
|
|
38753
|
-
|
|
38754
|
-
|
|
38755
|
-
|
|
38756
|
-
|
|
38757
|
-
|
|
38758
|
-
|
|
38759
|
-
|
|
38760
|
-
task.logger.
|
|
38761
|
-
|
|
38770
|
+
publishQuery.a_bogus = aBogus;
|
|
38771
|
+
const publishQueryParams = new URLSearchParams(publishQuery).toString();
|
|
38772
|
+
let csrfToken;
|
|
38773
|
+
try {
|
|
38774
|
+
csrfToken = mock_generateCsrfTokenAdvanced({
|
|
38775
|
+
cookies: params.cookies,
|
|
38776
|
+
url: "https://creator.douyin.com/web/api/media/aweme/create_v2/",
|
|
38777
|
+
method: "POST",
|
|
38778
|
+
userAgent
|
|
38779
|
+
});
|
|
38780
|
+
if (!csrfToken || csrfToken.length < 10) {
|
|
38781
|
+
task.logger.error(`[douyinPublish] csrfToken 生成异常,长度过短: ${csrfToken}`);
|
|
38782
|
+
throw utils_response(414, "安全参数 csrfToken 生成失败,请重试", "");
|
|
38783
|
+
}
|
|
38784
|
+
task.logger.info(`[douyinPublish] csrfToken 生成成功: ${csrfToken.substring(0, 20)}...`);
|
|
38785
|
+
} catch (error) {
|
|
38786
|
+
if (error && "object" == typeof error && "code" in error) throw error;
|
|
38787
|
+
task.logger.error(`[douyinPublish] 生成 csrfToken 失败: ${error}`);
|
|
38788
|
+
throw utils_response(414, "安全参数 csrfToken 生成异常,请重试", "");
|
|
38762
38789
|
}
|
|
38763
|
-
|
|
38764
|
-
|
|
38765
|
-
|
|
38766
|
-
|
|
38767
|
-
|
|
38768
|
-
|
|
38769
|
-
|
|
38770
|
-
try {
|
|
38771
|
-
csrfToken = mock_generateCsrfTokenAdvanced({
|
|
38772
|
-
cookies: params.cookies,
|
|
38773
|
-
url: "https://creator.douyin.com/web/api/media/aweme/create_v2/",
|
|
38774
|
-
method: "POST",
|
|
38775
|
-
userAgent
|
|
38776
|
-
});
|
|
38777
|
-
if (!csrfToken || csrfToken.length < 10) {
|
|
38778
|
-
task.logger.error(`[douyinPublish] csrfToken 生成异常,长度过短: ${csrfToken}`);
|
|
38779
|
-
return utils_response(414, "安全参数 csrfToken 生成失败,请重试", "");
|
|
38790
|
+
let sessionDtrait;
|
|
38791
|
+
try {
|
|
38792
|
+
sessionDtrait = mock_generateDtrait("/web/api/media/aweme/create_v2/");
|
|
38793
|
+
task.logger.info(`[douyinPublish] sessionDtrait 生成成功: ${sessionDtrait || "(空)"}`);
|
|
38794
|
+
} catch (error) {
|
|
38795
|
+
task.logger.error(`[douyinPublish] 生成 sessionDtrait 失败: ${error}`);
|
|
38796
|
+
throw utils_response(414, "安全参数 sessionDtrait 生成异常,请重试", "");
|
|
38780
38797
|
}
|
|
38781
|
-
|
|
38782
|
-
|
|
38783
|
-
|
|
38784
|
-
|
|
38785
|
-
|
|
38786
|
-
|
|
38787
|
-
|
|
38788
|
-
|
|
38789
|
-
|
|
38790
|
-
|
|
38791
|
-
|
|
38792
|
-
|
|
38793
|
-
|
|
38794
|
-
|
|
38795
|
-
|
|
38796
|
-
|
|
38797
|
-
"Content-Type": "application/json",
|
|
38798
|
-
Accept: "application/json, text/plain, */*",
|
|
38799
|
-
"bd-ticket-guard-client-data": bdTicketGuardClientData["headers_bd_ticket_guard_client_data"],
|
|
38800
|
-
"bd-ticket-guard-ree-public-key": bdTicketGuardClientData["headers_bd_ticket_guard_ree_public_key"],
|
|
38801
|
-
"bd-ticket-guard-version": "2",
|
|
38802
|
-
"bd-ticket-guard-web-sign-type": "1",
|
|
38803
|
-
"bd-ticket-guard-web-version": "2",
|
|
38804
|
-
"x-secsdk-csrf-token": csrfToken,
|
|
38805
|
-
"x-tt-session-dtrait": sessionDtrait || ""
|
|
38806
|
-
})}`);
|
|
38807
|
-
task.logger.info(`[douyinPublish] url: https://creator.douyin.com/web/api/media/aweme/create_v2/?${publishQueryParams}`);
|
|
38808
|
-
let publishResult;
|
|
38809
|
-
try {
|
|
38810
|
-
publishResult = await proxyHttp.api({
|
|
38798
|
+
const requestHeaders = {
|
|
38799
|
+
...headers,
|
|
38800
|
+
Referer: "https://creator.douyin.com/creator-micro/content/post/image?default-tab=3&enter_from=publish_page&media_type=image&type=new",
|
|
38801
|
+
"Content-Type": "application/json",
|
|
38802
|
+
Accept: "application/json, text/plain, */*",
|
|
38803
|
+
"bd-ticket-guard-client-data": bdTicketGuardClientData["headers_bd_ticket_guard_client_data"],
|
|
38804
|
+
"bd-ticket-guard-ree-public-key": bdTicketGuardClientData["headers_bd_ticket_guard_ree_public_key"],
|
|
38805
|
+
"bd-ticket-guard-version": "2",
|
|
38806
|
+
"bd-ticket-guard-web-sign-type": "1",
|
|
38807
|
+
"bd-ticket-guard-web-version": "2",
|
|
38808
|
+
"x-secsdk-csrf-token": csrfToken,
|
|
38809
|
+
"x-tt-session-dtrait": sessionDtrait || ""
|
|
38810
|
+
};
|
|
38811
|
+
task.logger.info(`[douyinPublish] headers: ${JSON.stringify(requestHeaders)}`);
|
|
38812
|
+
task.logger.info(`[douyinPublish] url: https://creator.douyin.com/web/api/media/aweme/create_v2/?${publishQueryParams}`);
|
|
38813
|
+
return proxyHttp.api({
|
|
38811
38814
|
method: "post",
|
|
38812
38815
|
url: `https://creator.douyin.com/web/api/media/aweme/create_v2/?${publishQueryParams}`,
|
|
38813
38816
|
data: publishData,
|
|
38814
38817
|
defaultErrorMsg: "发布异常,请稍后重试。",
|
|
38815
|
-
headers:
|
|
38816
|
-
...headers,
|
|
38817
|
-
Referer: "https://creator.douyin.com/creator-micro/content/post/image?default-tab=3&enter_from=publish_page&media_type=image&type=new",
|
|
38818
|
-
"Content-Type": "application/json",
|
|
38819
|
-
Accept: "application/json, text/plain, */*",
|
|
38820
|
-
"bd-ticket-guard-client-data": bdTicketGuardClientData["headers_bd_ticket_guard_client_data"],
|
|
38821
|
-
"bd-ticket-guard-ree-public-key": bdTicketGuardClientData["headers_bd_ticket_guard_ree_public_key"],
|
|
38822
|
-
"bd-ticket-guard-version": "2",
|
|
38823
|
-
"bd-ticket-guard-web-sign-type": "1",
|
|
38824
|
-
"bd-ticket-guard-web-version": "2",
|
|
38825
|
-
"x-secsdk-csrf-token": csrfToken,
|
|
38826
|
-
"x-tt-session-dtrait": sessionDtrait || ""
|
|
38827
|
-
}
|
|
38818
|
+
headers: requestHeaders
|
|
38828
38819
|
}, {
|
|
38829
38820
|
timeout: 60000,
|
|
38830
|
-
retries:
|
|
38831
|
-
retryDelay: 2000
|
|
38821
|
+
retries: 0
|
|
38832
38822
|
});
|
|
38833
|
-
}
|
|
38834
|
-
|
|
38835
|
-
|
|
38836
|
-
|
|
38837
|
-
|
|
38838
|
-
|
|
38839
|
-
|
|
38840
|
-
|
|
38841
|
-
|
|
38842
|
-
|
|
38843
|
-
|
|
38844
|
-
const
|
|
38845
|
-
|
|
38846
|
-
|
|
38847
|
-
|
|
38848
|
-
|
|
38849
|
-
|
|
38850
|
-
|
|
38851
|
-
|
|
38852
|
-
|
|
38853
|
-
|
|
38854
|
-
|
|
38855
|
-
|
|
38823
|
+
};
|
|
38824
|
+
let publishResult;
|
|
38825
|
+
for(let attempt = 0; attempt < MAX_SIGN_RETRIES; attempt++){
|
|
38826
|
+
if (attempt > 0) {
|
|
38827
|
+
task.logger.warn(`[douyinPublish] 第 ${attempt} 次重新签名后重试(上次为 ticket-guard 拒绝)`);
|
|
38828
|
+
await new Promise((resolve)=>setTimeout(resolve, SIGN_RETRY_DELAY));
|
|
38829
|
+
}
|
|
38830
|
+
try {
|
|
38831
|
+
publishResult = await signAndPublish();
|
|
38832
|
+
break;
|
|
38833
|
+
} catch (error) {
|
|
38834
|
+
const handledError = Http.handleApiError(error);
|
|
38835
|
+
if (590 === handledError.code) {
|
|
38836
|
+
if (attempt < MAX_SIGN_RETRIES - 1) continue;
|
|
38837
|
+
task.logger.error(`[douyinPublish] ticket-guard 拒绝重试已用尽(${MAX_SIGN_RETRIES} 次),走兜底`);
|
|
38838
|
+
throw error;
|
|
38839
|
+
}
|
|
38840
|
+
const isProxyOrNetworkError = [
|
|
38841
|
+
599,
|
|
38842
|
+
500,
|
|
38843
|
+
502,
|
|
38844
|
+
503,
|
|
38845
|
+
504
|
|
38846
|
+
].includes(handledError.code);
|
|
38847
|
+
if (isProxyOrNetworkError) {
|
|
38848
|
+
const isProxyRequest = handledError.extra?.isProxyRequest === true;
|
|
38849
|
+
const errorType = 599 === handledError.code || isProxyRequest ? "代理错误" : "网络错误";
|
|
38850
|
+
const message = `图文发布失败,${errorType}:${handledError.message}${task.debug ? ` ${http.proxyInfo}` : ""}`;
|
|
38851
|
+
task.logger.error(`[douyinPublish] ${errorType},直接返回: ${message}`, stringifyError(handledError));
|
|
38852
|
+
await updateTaskState?.({
|
|
38853
|
+
state: types_TaskState.FAILED,
|
|
38854
|
+
error: message
|
|
38855
|
+
});
|
|
38856
|
+
return {
|
|
38857
|
+
code: 414,
|
|
38858
|
+
data: "",
|
|
38859
|
+
message
|
|
38860
|
+
};
|
|
38861
|
+
}
|
|
38862
|
+
throw error;
|
|
38856
38863
|
}
|
|
38857
|
-
throw error;
|
|
38858
38864
|
}
|
|
38865
|
+
if (!publishResult) throw utils_response(414, "发布异常,请稍后重试。", "");
|
|
38859
38866
|
task.logger.info(`[douyinPublish] decision值: ${JSON.stringify(decision)}, needsVerification(decision): ${needsVerification(decision)}`);
|
|
38860
38867
|
if (needsVerification(decision)) {
|
|
38861
38868
|
const details = [
|
|
@@ -50750,5 +50757,4 @@ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_targe
|
|
|
50750
50757
|
value: true
|
|
50751
50758
|
});
|
|
50752
50759
|
|
|
50753
|
-
//# sourceMappingURL=bundle.js.map
|
|
50754
|
-
//# debugId=f82b2e89-3bbf-5b48-989f-191986e75094
|
|
50760
|
+
//# sourceMappingURL=bundle.js.map
|