octoparse-cli 0.1.14
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/README.md +271 -0
- package/RUNTIME_SECURITY_NOTICE.txt +41 -0
- package/SECURITY.md +24 -0
- package/dist/cli/args.js +34 -0
- package/dist/cli/help.js +214 -0
- package/dist/cli/output.js +39 -0
- package/dist/commands/auth.js +283 -0
- package/dist/commands/capabilities.js +118 -0
- package/dist/commands/cloud.js +241 -0
- package/dist/commands/data.js +220 -0
- package/dist/commands/doctor.js +73 -0
- package/dist/commands/env.js +63 -0
- package/dist/commands/local.js +251 -0
- package/dist/commands/run.js +622 -0
- package/dist/commands/runs.js +171 -0
- package/dist/commands/task.js +101 -0
- package/dist/index.js +133 -0
- package/dist/runtime/account-capabilities.js +71 -0
- package/dist/runtime/api-client.js +290 -0
- package/dist/runtime/artifacts.js +33 -0
- package/dist/runtime/auth.js +94 -0
- package/dist/runtime/bridge-hub.js +173 -0
- package/dist/runtime/client-headers.js +23 -0
- package/dist/runtime/cloud-data.js +75 -0
- package/dist/runtime/config.js +48 -0
- package/dist/runtime/data-exporter.js +267 -0
- package/dist/runtime/engine-host.js +449 -0
- package/dist/runtime/local-runs.js +92 -0
- package/dist/runtime/naming.js +13 -0
- package/dist/runtime/run-control.js +363 -0
- package/dist/runtime/run-services.js +380 -0
- package/dist/runtime/security-notice.js +78 -0
- package/dist/runtime/task-definition-provider.js +282 -0
- package/dist/types.js +4 -0
- package/examples/minimal-task.json +6 -0
- package/examples/navigate-example-task.json +6 -0
- package/node_modules/@octopus/bpmn/index.js +3 -0
- package/node_modules/@octopus/bpmn/lib/Context.js +245 -0
- package/node_modules/@octopus/bpmn/lib/Definition.js +258 -0
- package/node_modules/@octopus/bpmn/lib/Engine.js +275 -0
- package/node_modules/@octopus/bpmn/lib/PrematureStopError.js +7 -0
- package/node_modules/@octopus/bpmn/lib/activities/Activity.js +202 -0
- package/node_modules/@octopus/bpmn/lib/activities/BaseProcess.js +308 -0
- package/node_modules/@octopus/bpmn/lib/activities/BaseTask.js +145 -0
- package/node_modules/@octopus/bpmn/lib/activities/BoundaryEvent.js +12 -0
- package/node_modules/@octopus/bpmn/lib/activities/Dummy.js +10 -0
- package/node_modules/@octopus/bpmn/lib/activities/EventDefinition.js +99 -0
- package/node_modules/@octopus/bpmn/lib/activities/Flow.js +52 -0
- package/node_modules/@octopus/bpmn/lib/activities/Form.js +67 -0
- package/node_modules/@octopus/bpmn/lib/activities/InputOutput.js +53 -0
- package/node_modules/@octopus/bpmn/lib/activities/IntermediateCatchEvent.js +12 -0
- package/node_modules/@octopus/bpmn/lib/activities/MessageFlow.js +19 -0
- package/node_modules/@octopus/bpmn/lib/activities/MultiInstanceLoopCharacteristics.js +160 -0
- package/node_modules/@octopus/bpmn/lib/activities/Properties.js +27 -0
- package/node_modules/@octopus/bpmn/lib/activities/SequenceFlow.js +56 -0
- package/node_modules/@octopus/bpmn/lib/activities/ServiceConnector.js +71 -0
- package/node_modules/@octopus/bpmn/lib/context-helper.js +198 -0
- package/node_modules/@octopus/bpmn/lib/events/EndEvent.js +22 -0
- package/node_modules/@octopus/bpmn/lib/events/ErrorEvent.js +41 -0
- package/node_modules/@octopus/bpmn/lib/events/MessageEvent.js +19 -0
- package/node_modules/@octopus/bpmn/lib/events/StartEvent.js +55 -0
- package/node_modules/@octopus/bpmn/lib/events/TimerEvent.js +75 -0
- package/node_modules/@octopus/bpmn/lib/expressions.js +41 -0
- package/node_modules/@octopus/bpmn/lib/gateways/ExclusiveGateway.js +86 -0
- package/node_modules/@octopus/bpmn/lib/gateways/InclusiveGateway.js +56 -0
- package/node_modules/@octopus/bpmn/lib/gateways/ParallelGateway.js +195 -0
- package/node_modules/@octopus/bpmn/lib/getPropertyValue.js +83 -0
- package/node_modules/@octopus/bpmn/lib/index.js +6 -0
- package/node_modules/@octopus/bpmn/lib/mapper.js +55 -0
- package/node_modules/@octopus/bpmn/lib/parameter.js +119 -0
- package/node_modules/@octopus/bpmn/lib/script-helper.js +45 -0
- package/node_modules/@octopus/bpmn/lib/tasks/ManualTask.js +31 -0
- package/node_modules/@octopus/bpmn/lib/tasks/ReceiveTask.js +31 -0
- package/node_modules/@octopus/bpmn/lib/tasks/ScriptTask.js +35 -0
- package/node_modules/@octopus/bpmn/lib/tasks/SendTask.js +16 -0
- package/node_modules/@octopus/bpmn/lib/tasks/ServiceTask.js +68 -0
- package/node_modules/@octopus/bpmn/lib/tasks/SubProcess.js +17 -0
- package/node_modules/@octopus/bpmn/lib/tasks/Task.js +16 -0
- package/node_modules/@octopus/bpmn/lib/tasks/UserTask.js +47 -0
- package/node_modules/@octopus/bpmn/lib/transformer.js +13 -0
- package/node_modules/@octopus/bpmn/lib/validation.js +111 -0
- package/node_modules/@octopus/bpmn/package.json +17 -0
- package/node_modules/@octopus/bpmn/types/bpmn.d.ts +85 -0
- package/node_modules/@octopus/engine/README.md +370 -0
- package/node_modules/@octopus/engine/dist/actions/BackPreWebPageAction.d.ts +4 -0
- package/node_modules/@octopus/engine/dist/actions/BackPreWebPageAction.js +1 -0
- package/node_modules/@octopus/engine/dist/actions/BaseAction.d.ts +339 -0
- package/node_modules/@octopus/engine/dist/actions/BaseAction.js +1559 -0
- package/node_modules/@octopus/engine/dist/actions/BranchAction.d.ts +9 -0
- package/node_modules/@octopus/engine/dist/actions/BranchAction.js +1 -0
- package/node_modules/@octopus/engine/dist/actions/ClickAction.d.ts +22 -0
- package/node_modules/@octopus/engine/dist/actions/ClickAction.js +1 -0
- package/node_modules/@octopus/engine/dist/actions/ConditionAction.d.ts +4 -0
- package/node_modules/@octopus/engine/dist/actions/ConditionAction.js +1 -0
- package/node_modules/@octopus/engine/dist/actions/EmptyAction.d.ts +4 -0
- package/node_modules/@octopus/engine/dist/actions/EmptyAction.js +12 -0
- package/node_modules/@octopus/engine/dist/actions/EnterCaptchaAction.d.ts +28 -0
- package/node_modules/@octopus/engine/dist/actions/EnterCaptchaAction.js +1 -0
- package/node_modules/@octopus/engine/dist/actions/EnterTextAction.d.ts +20 -0
- package/node_modules/@octopus/engine/dist/actions/EnterTextAction.js +1 -0
- package/node_modules/@octopus/engine/dist/actions/ExtractDataAction.d.ts +40 -0
- package/node_modules/@octopus/engine/dist/actions/ExtractDataAction.js +1 -0
- package/node_modules/@octopus/engine/dist/actions/LoopAction.d.ts +41 -0
- package/node_modules/@octopus/engine/dist/actions/LoopAction.js +526 -0
- package/node_modules/@octopus/engine/dist/actions/LoopStartAction.d.ts +47 -0
- package/node_modules/@octopus/engine/dist/actions/LoopStartAction.js +607 -0
- package/node_modules/@octopus/engine/dist/actions/MouseOverAction.d.ts +8 -0
- package/node_modules/@octopus/engine/dist/actions/MouseOverAction.js +34 -0
- package/node_modules/@octopus/engine/dist/actions/NavigateAction.d.ts +38 -0
- package/node_modules/@octopus/engine/dist/actions/NavigateAction.js +535 -0
- package/node_modules/@octopus/engine/dist/actions/SwitchComboAction.d.ts +13 -0
- package/node_modules/@octopus/engine/dist/actions/SwitchComboAction.js +69 -0
- package/node_modules/@octopus/engine/dist/browser.d.ts +17 -0
- package/node_modules/@octopus/engine/dist/browser.js +157 -0
- package/node_modules/@octopus/engine/dist/browserProxy.d.ts +90 -0
- package/node_modules/@octopus/engine/dist/browserProxy.js +1 -0
- package/node_modules/@octopus/engine/dist/configs/BaseConfig.d.ts +20 -0
- package/node_modules/@octopus/engine/dist/configs/BaseConfig.js +88 -0
- package/node_modules/@octopus/engine/dist/configs/BranchConfig.d.ts +7 -0
- package/node_modules/@octopus/engine/dist/configs/BranchConfig.js +1 -0
- package/node_modules/@octopus/engine/dist/configs/ClickConfig.d.ts +36 -0
- package/node_modules/@octopus/engine/dist/configs/ClickConfig.js +65 -0
- package/node_modules/@octopus/engine/dist/configs/EnterCaptchaConfig.d.ts +19 -0
- package/node_modules/@octopus/engine/dist/configs/EnterCaptchaConfig.js +25 -0
- package/node_modules/@octopus/engine/dist/configs/EnterTextConfig.d.ts +24 -0
- package/node_modules/@octopus/engine/dist/configs/EnterTextConfig.js +36 -0
- package/node_modules/@octopus/engine/dist/configs/ExtractDataConfig.d.ts +12 -0
- package/node_modules/@octopus/engine/dist/configs/ExtractDataConfig.js +1 -0
- package/node_modules/@octopus/engine/dist/configs/LoopConfig.d.ts +25 -0
- package/node_modules/@octopus/engine/dist/configs/LoopConfig.js +40 -0
- package/node_modules/@octopus/engine/dist/configs/LoopStartConfig.d.ts +4 -0
- package/node_modules/@octopus/engine/dist/configs/LoopStartConfig.js +12 -0
- package/node_modules/@octopus/engine/dist/configs/MouseOverConfig.d.ts +8 -0
- package/node_modules/@octopus/engine/dist/configs/MouseOverConfig.js +15 -0
- package/node_modules/@octopus/engine/dist/configs/NavigateConfig.d.ts +41 -0
- package/node_modules/@octopus/engine/dist/configs/NavigateConfig.js +121 -0
- package/node_modules/@octopus/engine/dist/configs/SwitchComboConfig.d.ts +8 -0
- package/node_modules/@octopus/engine/dist/configs/SwitchComboConfig.js +15 -0
- package/node_modules/@octopus/engine/dist/enums/index.d.ts +419 -0
- package/node_modules/@octopus/engine/dist/enums/index.js +314 -0
- package/node_modules/@octopus/engine/dist/extension/BrowserWebSocketTransport-D_zAGZMQ.js +1 -0
- package/node_modules/@octopus/engine/dist/extension/LaunchOptions-DxvePrV4.js +6 -0
- package/node_modules/@octopus/engine/dist/extension/NodeWebSocketTransport-BTgRVB7Z.js +6 -0
- package/node_modules/@octopus/engine/dist/extension/background.js +396 -0
- package/node_modules/@octopus/engine/dist/extension/bidi-C_GIZ8Uz.js +131 -0
- package/node_modules/@octopus/engine/dist/extension/manifest.json +27 -0
- package/node_modules/@octopus/engine/dist/extension/src/content/anti-detection.js +1 -0
- package/node_modules/@octopus/engine/dist/extension-bridge/BaseExtensionBridge.d.ts +21 -0
- package/node_modules/@octopus/engine/dist/extension-bridge/BaseExtensionBridge.js +117 -0
- package/node_modules/@octopus/engine/dist/extension-bridge/SessionExtensionBridge.d.ts +17 -0
- package/node_modules/@octopus/engine/dist/extension-bridge/SessionExtensionBridge.js +29 -0
- package/node_modules/@octopus/engine/dist/extension-bridge/index.d.ts +2 -0
- package/node_modules/@octopus/engine/dist/extension-bridge/index.js +5 -0
- package/node_modules/@octopus/engine/dist/extension-bridge/types.d.ts +159 -0
- package/node_modules/@octopus/engine/dist/extension-bridge/types.js +5 -0
- package/node_modules/@octopus/engine/dist/extensions/ublock-origin/uBlock0.chromium.tar.xz +0 -0
- package/node_modules/@octopus/engine/dist/extensions/ublock-origin-lite/uBOLite.chromium.tar.xz +0 -0
- package/node_modules/@octopus/engine/dist/index.d.ts +169 -0
- package/node_modules/@octopus/engine/dist/index.js +1 -0
- package/node_modules/@octopus/engine/dist/models/actionItem.d.ts +16 -0
- package/node_modules/@octopus/engine/dist/models/actionItem.js +15 -0
- package/node_modules/@octopus/engine/dist/models/conditionCheckArgs.d.ts +11 -0
- package/node_modules/@octopus/engine/dist/models/conditionCheckArgs.js +11 -0
- package/node_modules/@octopus/engine/dist/models/customizeCookie.d.ts +14 -0
- package/node_modules/@octopus/engine/dist/models/customizeCookie.js +6 -0
- package/node_modules/@octopus/engine/dist/models/downloadFileConfig.d.ts +17 -0
- package/node_modules/@octopus/engine/dist/models/downloadFileConfig.js +26 -0
- package/node_modules/@octopus/engine/dist/models/elementNotFoundArgs.d.ts +8 -0
- package/node_modules/@octopus/engine/dist/models/elementNotFoundArgs.js +12 -0
- package/node_modules/@octopus/engine/dist/models/elementNotFoundError.d.ts +2 -0
- package/node_modules/@octopus/engine/dist/models/elementNotFoundError.js +6 -0
- package/node_modules/@octopus/engine/dist/models/extractItem.d.ts +37 -0
- package/node_modules/@octopus/engine/dist/models/extractItem.js +35 -0
- package/node_modules/@octopus/engine/dist/models/extractTemplate.d.ts +11 -0
- package/node_modules/@octopus/engine/dist/models/extractTemplate.js +48 -0
- package/node_modules/@octopus/engine/dist/models/extractTextItem.d.ts +10 -0
- package/node_modules/@octopus/engine/dist/models/extractTextItem.js +17 -0
- package/node_modules/@octopus/engine/dist/models/globalConfig.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/models/globalConfig.js +1 -0
- package/node_modules/@octopus/engine/dist/models/httpHeader.d.ts +4 -0
- package/node_modules/@octopus/engine/dist/models/httpHeader.js +10 -0
- package/node_modules/@octopus/engine/dist/models/operation.d.ts +27 -0
- package/node_modules/@octopus/engine/dist/models/operation.js +242 -0
- package/node_modules/@octopus/engine/dist/models/retryCondition.d.ts +7 -0
- package/node_modules/@octopus/engine/dist/models/retryCondition.js +10 -0
- package/node_modules/@octopus/engine/dist/models/task.d.ts +89 -0
- package/node_modules/@octopus/engine/dist/models/task.js +120 -0
- package/node_modules/@octopus/engine/dist/models/trigger.d.ts +66 -0
- package/node_modules/@octopus/engine/dist/models/trigger.js +117 -0
- package/node_modules/@octopus/engine/dist/package.json +26 -0
- package/node_modules/@octopus/engine/dist/public-types.d.ts +13 -0
- package/node_modules/@octopus/engine/dist/public-types.js +2 -0
- package/node_modules/@octopus/engine/dist/settings.d.ts +41 -0
- package/node_modules/@octopus/engine/dist/settings.js +20 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/ClickCaptchaSolver.d.ts +6 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/ClickCaptchaSolver.js +1 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/HCaptchaSolver.d.ts +4 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/HCaptchaSolver.js +73 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/ImageCaptchaSolver.d.ts +2 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/ImageCaptchaSolver.js +74 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/RecaptchaSolver.d.ts +9 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/RecaptchaSolver.js +371 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/SliderCaptchaSolver.d.ts +6 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/SliderCaptchaSolver.js +184 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/SlidingTrajectory.d.ts +50 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/SlidingTrajectory.js +125 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/types.d.ts +68 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/types.js +34 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/utils.d.ts +2 -0
- package/node_modules/@octopus/engine/dist/solvers/captcha/utils.js +15 -0
- package/node_modules/@octopus/engine/dist/translator/actionFactory.d.ts +6 -0
- package/node_modules/@octopus/engine/dist/translator/actionFactory.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/activityTypeEnum.d.ts +22 -0
- package/node_modules/@octopus/engine/dist/translator/activityTypeEnum.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/backPreWebPageAction.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/backPreWebPageAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/baseAction.d.ts +31 -0
- package/node_modules/@octopus/engine/dist/translator/baseAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/breakActivity.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/breakActivity.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/clickAction.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/clickAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/completeWF.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/completeWF.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/conditionAction.d.ts +6 -0
- package/node_modules/@octopus/engine/dist/translator/conditionAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/emptyAction.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/emptyAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/enterCapachaAction.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/enterCapachaAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/enterTextAction.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/enterTextAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/extractDataAction.d.ts +13 -0
- package/node_modules/@octopus/engine/dist/translator/extractDataAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/loopAction.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/loopAction.js +1 -0
- package/node_modules/@octopus/engine/dist/translator/mouseOverAction.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/mouseOverAction.js +19 -0
- package/node_modules/@octopus/engine/dist/translator/navigateAction.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/navigateAction.js +117 -0
- package/node_modules/@octopus/engine/dist/translator/rootAction.d.ts +6 -0
- package/node_modules/@octopus/engine/dist/translator/rootAction.js +80 -0
- package/node_modules/@octopus/engine/dist/translator/switchCombo2Action.d.ts +5 -0
- package/node_modules/@octopus/engine/dist/translator/switchCombo2Action.js +19 -0
- package/node_modules/@octopus/engine/dist/translator/translator.d.ts +1 -0
- package/node_modules/@octopus/engine/dist/translator/translator.js +36 -0
- package/node_modules/@octopus/engine/dist/type.d.ts +25 -0
- package/node_modules/@octopus/engine/dist/type.js +2 -0
- package/node_modules/@octopus/engine/dist/types/browser.d.ts +191 -0
- package/node_modules/@octopus/engine/dist/types/browser.js +1 -0
- package/node_modules/@octopus/engine/dist/types/browserManager.d.ts +41 -0
- package/node_modules/@octopus/engine/dist/types/browserManager.js +1 -0
- package/node_modules/@octopus/engine/dist/types/index.d.ts +40 -0
- package/node_modules/@octopus/engine/dist/types/index.js +2 -0
- package/node_modules/@octopus/engine/dist/types/plugin.d.ts +29 -0
- package/node_modules/@octopus/engine/dist/types/plugin.js +2 -0
- package/node_modules/@octopus/engine/dist/utils/AsyncEmitter.d.ts +15 -0
- package/node_modules/@octopus/engine/dist/utils/AsyncEmitter.js +1 -0
- package/node_modules/@octopus/engine/dist/utils/DataStore.d.ts +58 -0
- package/node_modules/@octopus/engine/dist/utils/DataStore.js +1 -0
- package/node_modules/@octopus/engine/dist/utils/DateTimeFormatHelper.d.ts +22 -0
- package/node_modules/@octopus/engine/dist/utils/DateTimeFormatHelper.js +173 -0
- package/node_modules/@octopus/engine/dist/utils/FileDownloader.d.ts +108 -0
- package/node_modules/@octopus/engine/dist/utils/FileDownloader.js +1 -0
- package/node_modules/@octopus/engine/dist/utils/HttpRequester.d.ts +43 -0
- package/node_modules/@octopus/engine/dist/utils/HttpRequester.js +174 -0
- package/node_modules/@octopus/engine/dist/utils/JsonParser.d.ts +95 -0
- package/node_modules/@octopus/engine/dist/utils/JsonParser.js +439 -0
- package/node_modules/@octopus/engine/dist/utils/Operations.d.ts +27 -0
- package/node_modules/@octopus/engine/dist/utils/Operations.js +115 -0
- package/node_modules/@octopus/engine/dist/utils/index.d.ts +28 -0
- package/node_modules/@octopus/engine/dist/utils/index.js +356 -0
- package/node_modules/@octopus/engine/package.json +58 -0
- package/package.json +79 -0
- package/schemas/capabilities-v1.schema.json +234 -0
- package/schemas/detached-bootstrap-v1.schema.json +42 -0
- package/schemas/json-envelope-v1.schema.json +39 -0
- package/schemas/run-event-v1.schema.json +47 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.solveSliderCaptcha = solveSliderCaptcha;
|
|
4
|
+
const Operations_1 = require("../../utils/Operations");
|
|
5
|
+
const enums_1 = require("../../enums");
|
|
6
|
+
const SlidingTrajectory_1 = require("./SlidingTrajectory");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
/**
|
|
9
|
+
* 滑块验证码求解
|
|
10
|
+
* 流程:截图 → 识别滑动距离 → 模拟人类滑动轨迹
|
|
11
|
+
*/
|
|
12
|
+
async function solveSliderCaptcha(ctx) {
|
|
13
|
+
if (!ctx.config.imageXPath || !ctx.config.inputXPath) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
do {
|
|
17
|
+
try {
|
|
18
|
+
if (ctx.retryTimes > 0) {
|
|
19
|
+
ctx.log(enums_1.LogKey.EnterCapacha.Error.Retry, ctx.name, ctx.retryTimes);
|
|
20
|
+
}
|
|
21
|
+
// 检查必要元素是否存在
|
|
22
|
+
const imageElement = await (0, Operations_1.getElement)(ctx.config.imageXPath, ctx.page);
|
|
23
|
+
if (!imageElement) {
|
|
24
|
+
ctx.error(enums_1.LogKey.EnterCapacha.Error.ImageNotFound, ctx.config.caption);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
const subImgElement = ctx.config.subImgXPath ? await (0, Operations_1.getElement)(ctx.config.subImgXPath, ctx.page) : null;
|
|
28
|
+
if (ctx.config.subImgXPath && !subImgElement) {
|
|
29
|
+
const text = ctx.config.capachaType === enums_1.LocalCaptchaType.Silder ? enums_1.LogKey.EnterCapacha.Error.HuaKuaiImageNotFound : enums_1.LogKey.EnterCapacha.Error.TipImageNotFound;
|
|
30
|
+
ctx.error(text, ctx.config.caption);
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
const inputElement = await (0, Operations_1.getElement)(ctx.config.inputXPath, ctx.page);
|
|
34
|
+
if (!inputElement) {
|
|
35
|
+
ctx.error(enums_1.LogKey.EnterCapacha.Error.InputNotFound, ctx.config.caption);
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
// 滚动到验证码图片位置
|
|
39
|
+
await (0, Operations_1.processElement)(ctx.config.imageXPath, ctx.page, '$eval', (ele) => {
|
|
40
|
+
return ele.scrollIntoView({
|
|
41
|
+
behavior: 'auto',
|
|
42
|
+
block: 'center',
|
|
43
|
+
inline: 'nearest',
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
await ctx.sleep(1000);
|
|
47
|
+
await ctx.checkPause();
|
|
48
|
+
// 截取验证码图片
|
|
49
|
+
const codeElement = await (0, Operations_1.getElement)(ctx.config.imageXPath, ctx.page);
|
|
50
|
+
if (!codeElement) {
|
|
51
|
+
ctx.error(enums_1.LogKey.EnterCapacha.Error.Captcha, ctx.config.caption);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
// 确保元素可见且有尺寸,避免 "Node is either not visible or not an HTMLElement" 错误
|
|
55
|
+
const box = await codeElement.boundingBox();
|
|
56
|
+
if (!box || box.width === 0 || box.height === 0) {
|
|
57
|
+
ctx.error(enums_1.LogKey.EnterCapacha.Error.ImageNotFound, ctx.config.caption);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
const imageBase64 = (await codeElement.screenshot({
|
|
61
|
+
encoding: 'base64',
|
|
62
|
+
}));
|
|
63
|
+
// 调用识别接口获取滑动距离
|
|
64
|
+
const { distance, status, isAvailable } = (await ctx.getCaptchaToken({
|
|
65
|
+
image: imageBase64,
|
|
66
|
+
captchaType: enums_1.LocalCaptchaType.Silder,
|
|
67
|
+
}));
|
|
68
|
+
if (!isAvailable) {
|
|
69
|
+
ctx.isCaptchaSuccess = true;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
if (distance <= 0) {
|
|
73
|
+
ctx.isCaptchaSuccess = false;
|
|
74
|
+
ctx.error(enums_1.LogKey.EnterCapacha.Error.Distance, ctx.config.caption, status);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
// 执行滑动操作
|
|
78
|
+
await executeSlideEvent(ctx, distance, inputElement, subImgElement);
|
|
79
|
+
// 等待页面响应
|
|
80
|
+
const { ajaxLoad, ajaxTimeout } = ctx.config;
|
|
81
|
+
if (ajaxLoad && ajaxTimeout > 0) {
|
|
82
|
+
await ctx.sleep(ajaxTimeout);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
await ctx.sleep(2000);
|
|
86
|
+
}
|
|
87
|
+
// 检查验证结果
|
|
88
|
+
if (await ctx.capachaSuccess()) {
|
|
89
|
+
ctx.isCaptchaSuccess = true;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
ctx.isCaptchaSuccess = false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
ctx.isCaptchaSuccess = false;
|
|
97
|
+
await ctx.checkPause();
|
|
98
|
+
console.log('slider captcha error', error);
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
await ctx.checkPause();
|
|
102
|
+
ctx.retryTimes += 1;
|
|
103
|
+
}
|
|
104
|
+
} while (!ctx.isCaptchaSuccess && ctx.retryTimes <= ctx.config.capachaMaxRetry);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* 执行滑动事件
|
|
108
|
+
* 拟人策略:按下 → 先加速后减速前进(含过冲) → 减速回退 → 终点微调抖动 → 松开
|
|
109
|
+
*/
|
|
110
|
+
async function executeSlideEvent(ctx, distance, inputElement, subImgElement) {
|
|
111
|
+
const inputBox = await inputElement.boundingBox();
|
|
112
|
+
if (!inputBox)
|
|
113
|
+
return;
|
|
114
|
+
// 获取页面缩放比例
|
|
115
|
+
let zoom = 1;
|
|
116
|
+
try {
|
|
117
|
+
zoom = await ctx.page.evaluate(() => window.devicePixelRatio || 1);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
zoom = 1;
|
|
121
|
+
}
|
|
122
|
+
const adjustedDistance = distance / zoom;
|
|
123
|
+
// 滑块起始位置(滑块中心点,加小幅随机偏移模拟真人点击不精确)
|
|
124
|
+
const startX = inputBox.x + inputBox.width / 2 + (0, utils_1.getRandomInt)(-3, 3);
|
|
125
|
+
const startY = inputBox.y + inputBox.height / 2 + (0, utils_1.getRandomInt)(-2, 2);
|
|
126
|
+
// 记录子图初始位置(用于距离校准)
|
|
127
|
+
let subImgInitX = 0;
|
|
128
|
+
if (subImgElement) {
|
|
129
|
+
const subImgBox = await subImgElement.boundingBox();
|
|
130
|
+
if (subImgBox)
|
|
131
|
+
subImgInitX = subImgBox.x;
|
|
132
|
+
}
|
|
133
|
+
// 生成滑动轨迹
|
|
134
|
+
const trajectory = new SlidingTrajectory_1.SlidingTrajectory();
|
|
135
|
+
const overshoot = trajectory.getDynamicOvershoot(adjustedDistance);
|
|
136
|
+
const forwardDistance = adjustedDistance + overshoot;
|
|
137
|
+
const forward = trajectory.generateForwardTrack(forwardDistance);
|
|
138
|
+
// 先移动到滑块位置(模拟鼠标移入)
|
|
139
|
+
await ctx.page.mouse.move(inputBox.x + (0, utils_1.getRandomInt)(5, 15), inputBox.y + (0, utils_1.getRandomInt)(3, 8));
|
|
140
|
+
await ctx.sleep((0, utils_1.getRandomInt)(80, 200));
|
|
141
|
+
// 移到按下点
|
|
142
|
+
await ctx.page.mouse.move(startX, startY);
|
|
143
|
+
await ctx.sleep((0, utils_1.getRandomInt)(50, 150));
|
|
144
|
+
// 按下鼠标
|
|
145
|
+
await ctx.page.mouse.down();
|
|
146
|
+
await ctx.sleep((0, utils_1.getRandomInt)(150, 300));
|
|
147
|
+
// 前进轨迹(先加速后减速,含过冲)
|
|
148
|
+
const ratioArr = [];
|
|
149
|
+
for (const step of forward) {
|
|
150
|
+
const [_x, _y, _t] = step;
|
|
151
|
+
await ctx.page.mouse.move(startX + _x, startY + _y);
|
|
152
|
+
// 距离校准:记录实际移动比例
|
|
153
|
+
if (subImgElement && _x >= adjustedDistance) {
|
|
154
|
+
const subImgBox = await subImgElement.boundingBox();
|
|
155
|
+
if (subImgBox) {
|
|
156
|
+
const realMoved = Math.abs(subImgBox.x - subImgInitX);
|
|
157
|
+
ratioArr.push(realMoved / _x || 1);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
await ctx.sleep(_t);
|
|
161
|
+
}
|
|
162
|
+
// 过冲后短暂停顿(模拟人发现滑过了)
|
|
163
|
+
await ctx.sleep((0, utils_1.getRandomInt)(150, 350));
|
|
164
|
+
// 回退轨迹(减速到精确位置)
|
|
165
|
+
const ratio = ratioArr.length > 0 ? ratioArr[ratioArr.length - 1] : 1;
|
|
166
|
+
const targetX = Math.floor(adjustedDistance / ratio);
|
|
167
|
+
const backward = trajectory.generateBackwardTrack(forwardDistance, targetX);
|
|
168
|
+
for (const step of backward) {
|
|
169
|
+
const [_x, _y, _t] = step;
|
|
170
|
+
await ctx.page.mouse.move(startX + _x, startY + _y);
|
|
171
|
+
await ctx.sleep(_t);
|
|
172
|
+
}
|
|
173
|
+
// 终点微调抖动(模拟人手到达位置后的细微震荡)
|
|
174
|
+
await ctx.sleep((0, utils_1.getRandomInt)(100, 250));
|
|
175
|
+
const jitter = trajectory.generateFinalJitter(targetX);
|
|
176
|
+
for (const step of jitter) {
|
|
177
|
+
const [_x, _y, _t] = step;
|
|
178
|
+
await ctx.page.mouse.move(startX + _x, startY + _y);
|
|
179
|
+
await ctx.sleep(_t);
|
|
180
|
+
}
|
|
181
|
+
// 最终停顿后松开鼠标(模拟人确认位置后松手)
|
|
182
|
+
await ctx.sleep((0, utils_1.getRandomInt)(200, 500));
|
|
183
|
+
await ctx.page.mouse.up();
|
|
184
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 拟人滑动轨迹生成器
|
|
3
|
+
* 采用先加速后减速 + 微小回退的策略,模拟真实人类滑动行为
|
|
4
|
+
*/
|
|
5
|
+
export declare class SlidingTrajectory {
|
|
6
|
+
/** 超过目标的过冲量,会根据距离动态调整 */
|
|
7
|
+
offsetX: number;
|
|
8
|
+
setOffsetX(n: number): void;
|
|
9
|
+
/**
|
|
10
|
+
* 贝塞尔缓动:先加速后减速(类似 ease-in-out)
|
|
11
|
+
* 前40%加速,后60%减速,更贴近真人手指发力特征
|
|
12
|
+
*/
|
|
13
|
+
private easeInOutCubic;
|
|
14
|
+
/**
|
|
15
|
+
* 减速缓动,用于回退阶段
|
|
16
|
+
*/
|
|
17
|
+
private easeOutQuad;
|
|
18
|
+
/**
|
|
19
|
+
* 生成Y轴随机偏移,模拟人手抖动(上下均有)
|
|
20
|
+
*/
|
|
21
|
+
private getHumanY;
|
|
22
|
+
/**
|
|
23
|
+
* 根据进度返回步间延时(ms)
|
|
24
|
+
* 起步和结尾慢(间隔大),中间快(间隔小)
|
|
25
|
+
*/
|
|
26
|
+
private getStepDelay;
|
|
27
|
+
/**
|
|
28
|
+
* 生成前进滑动轨迹(先加速后减速)
|
|
29
|
+
* @param totalDistance 总滑动距离(含过冲)
|
|
30
|
+
* @returns 轨迹数组 [[x, y, delay], ...]
|
|
31
|
+
*/
|
|
32
|
+
generateForwardTrack(totalDistance: number): number[][];
|
|
33
|
+
/**
|
|
34
|
+
* 生成回退轨迹(减速到精确位置)
|
|
35
|
+
* @param fromX 当前位置
|
|
36
|
+
* @param toX 目标位置
|
|
37
|
+
* @returns 轨迹数组 [[x, y, delay], ...]
|
|
38
|
+
*/
|
|
39
|
+
generateBackwardTrack(fromX: number, toX: number): number[][];
|
|
40
|
+
/**
|
|
41
|
+
* 生成终点微调抖动(模拟人手到达终点后的细微震荡)
|
|
42
|
+
* @param targetX 目标X位置
|
|
43
|
+
* @returns 轨迹数组 [[x, y, delay], ...]
|
|
44
|
+
*/
|
|
45
|
+
generateFinalJitter(targetX: number): number[][];
|
|
46
|
+
/**
|
|
47
|
+
* 计算动态过冲量(根据总距离)
|
|
48
|
+
*/
|
|
49
|
+
getDynamicOvershoot(distance: number): number;
|
|
50
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlidingTrajectory = void 0;
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
|
+
/**
|
|
6
|
+
* 拟人滑动轨迹生成器
|
|
7
|
+
* 采用先加速后减速 + 微小回退的策略,模拟真实人类滑动行为
|
|
8
|
+
*/
|
|
9
|
+
class SlidingTrajectory {
|
|
10
|
+
constructor() {
|
|
11
|
+
/** 超过目标的过冲量,会根据距离动态调整 */
|
|
12
|
+
this.offsetX = 20;
|
|
13
|
+
}
|
|
14
|
+
setOffsetX(n) {
|
|
15
|
+
this.offsetX = n;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 贝塞尔缓动:先加速后减速(类似 ease-in-out)
|
|
19
|
+
* 前40%加速,后60%减速,更贴近真人手指发力特征
|
|
20
|
+
*/
|
|
21
|
+
easeInOutCubic(x) {
|
|
22
|
+
return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 减速缓动,用于回退阶段
|
|
26
|
+
*/
|
|
27
|
+
easeOutQuad(x) {
|
|
28
|
+
return 1 - (1 - x) * (1 - x);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 生成Y轴随机偏移,模拟人手抖动(上下均有)
|
|
32
|
+
*/
|
|
33
|
+
getHumanY(progress) {
|
|
34
|
+
// 中间段抖动大,起止段抖动小
|
|
35
|
+
const amplitude = Math.sin(progress * Math.PI) * 3;
|
|
36
|
+
return Math.round((Math.random() - 0.5) * 2 * amplitude);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 根据进度返回步间延时(ms)
|
|
40
|
+
* 起步和结尾慢(间隔大),中间快(间隔小)
|
|
41
|
+
*/
|
|
42
|
+
getStepDelay(progress) {
|
|
43
|
+
if (progress < 0.15) {
|
|
44
|
+
// 起步阶段:较大延时
|
|
45
|
+
return (0, utils_1.getRandomInt)(18, 35);
|
|
46
|
+
}
|
|
47
|
+
else if (progress > 0.85) {
|
|
48
|
+
// 减速阶段:较大延时
|
|
49
|
+
return (0, utils_1.getRandomInt)(20, 40);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// 中间快速阶段
|
|
53
|
+
return (0, utils_1.getRandomInt)(6, 16);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 生成前进滑动轨迹(先加速后减速)
|
|
58
|
+
* @param totalDistance 总滑动距离(含过冲)
|
|
59
|
+
* @returns 轨迹数组 [[x, y, delay], ...]
|
|
60
|
+
*/
|
|
61
|
+
generateForwardTrack(totalDistance) {
|
|
62
|
+
const track = [];
|
|
63
|
+
// 步数与距离相关,保持合理密度
|
|
64
|
+
const count = Math.max(25, Math.min(60, Math.floor(totalDistance * 0.3) + (0, utils_1.getRandomInt)(10, 20)));
|
|
65
|
+
let prevX = 0;
|
|
66
|
+
for (let i = 0; i <= count; i++) {
|
|
67
|
+
const progress = i / count;
|
|
68
|
+
const x = Math.round(this.easeInOutCubic(progress) * totalDistance);
|
|
69
|
+
if (x === prevX && i > 0 && i < count)
|
|
70
|
+
continue;
|
|
71
|
+
const y = this.getHumanY(progress);
|
|
72
|
+
const delay = this.getStepDelay(progress);
|
|
73
|
+
track.push([x, y, delay]);
|
|
74
|
+
prevX = x;
|
|
75
|
+
}
|
|
76
|
+
return track;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 生成回退轨迹(减速到精确位置)
|
|
80
|
+
* @param fromX 当前位置
|
|
81
|
+
* @param toX 目标位置
|
|
82
|
+
* @returns 轨迹数组 [[x, y, delay], ...]
|
|
83
|
+
*/
|
|
84
|
+
generateBackwardTrack(fromX, toX) {
|
|
85
|
+
const track = [];
|
|
86
|
+
const d = fromX - toX;
|
|
87
|
+
const count = (0, utils_1.getRandomInt)(8, 15);
|
|
88
|
+
for (let i = 0; i <= count; i++) {
|
|
89
|
+
const progress = i / count;
|
|
90
|
+
const offset = Math.round(d * (1 - this.easeOutQuad(progress)));
|
|
91
|
+
const x = toX + offset;
|
|
92
|
+
// 回退阶段Y偏移更小
|
|
93
|
+
const y = Math.round((Math.random() - 0.5) * 2);
|
|
94
|
+
const delay = (0, utils_1.getRandomInt)(15, 35);
|
|
95
|
+
track.push([x, y, delay]);
|
|
96
|
+
}
|
|
97
|
+
return track;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 生成终点微调抖动(模拟人手到达终点后的细微震荡)
|
|
101
|
+
* @param targetX 目标X位置
|
|
102
|
+
* @returns 轨迹数组 [[x, y, delay], ...]
|
|
103
|
+
*/
|
|
104
|
+
generateFinalJitter(targetX) {
|
|
105
|
+
const track = [];
|
|
106
|
+
const jitterCount = (0, utils_1.getRandomInt)(2, 4);
|
|
107
|
+
for (let i = 0; i < jitterCount; i++) {
|
|
108
|
+
const jitterX = targetX + (0, utils_1.getRandomInt)(-2, 2);
|
|
109
|
+
const jitterY = (0, utils_1.getRandomInt)(-1, 1);
|
|
110
|
+
track.push([jitterX, jitterY, (0, utils_1.getRandomInt)(30, 80)]);
|
|
111
|
+
}
|
|
112
|
+
// 最后回到精确位置
|
|
113
|
+
track.push([targetX, 0, (0, utils_1.getRandomInt)(40, 80)]);
|
|
114
|
+
return track;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 计算动态过冲量(根据总距离)
|
|
118
|
+
*/
|
|
119
|
+
getDynamicOvershoot(distance) {
|
|
120
|
+
// 距离越远过冲越大,加随机因素
|
|
121
|
+
const base = Math.max(8, Math.min(30, distance * 0.08));
|
|
122
|
+
return Math.round(base + (0, utils_1.getRandomFloat)(-3, 5));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.SlidingTrajectory = SlidingTrajectory;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Page } from 'puppeteer-core';
|
|
2
|
+
import { LocalCaptchaType } from '../../enums';
|
|
3
|
+
import type EnterCaptchaConfig from '../../configs/EnterCaptchaConfig';
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
___grecaptcha_cfg?: {
|
|
7
|
+
clients: Record<string, any>;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export type SiteKeyResult = string | {
|
|
12
|
+
key: string;
|
|
13
|
+
action: string;
|
|
14
|
+
};
|
|
15
|
+
export interface CaptchaTokenParams {
|
|
16
|
+
key?: string;
|
|
17
|
+
captchaType: LocalCaptchaType;
|
|
18
|
+
url: string;
|
|
19
|
+
action?: string;
|
|
20
|
+
image?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface SlideCaptchaResult {
|
|
23
|
+
status: number;
|
|
24
|
+
distance: number;
|
|
25
|
+
isAvailable: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface ClickCaptchaResult {
|
|
28
|
+
status: number;
|
|
29
|
+
clickArea: string[];
|
|
30
|
+
isAvailable: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare const CAPTCHA_FAMILIES: {
|
|
33
|
+
readonly IMAGE: readonly [LocalCaptchaType.TextInput, LocalCaptchaType.Chars];
|
|
34
|
+
readonly RECAPTCHA_V2: readonly [LocalCaptchaType.reCAPTCHA_V2, LocalCaptchaType.reCAPTCHA_V2_Callback];
|
|
35
|
+
readonly RECAPTCHA_V3: readonly [LocalCaptchaType.ReCAPTCHA_V3, LocalCaptchaType.reCAPTCHA_V3_Callback];
|
|
36
|
+
readonly HCAPTCHA: readonly [LocalCaptchaType.HCaptcha, LocalCaptchaType.HCaptcha_Callback];
|
|
37
|
+
readonly CALLBACK_TYPES: readonly [LocalCaptchaType.reCAPTCHA_V2_Callback, LocalCaptchaType.HCaptcha_Callback, LocalCaptchaType.ReCAPTCHA_V3, LocalCaptchaType.reCAPTCHA_V3_Callback];
|
|
38
|
+
readonly SLIDER: readonly [LocalCaptchaType.Silder, LocalCaptchaType.SilderWithoutImage];
|
|
39
|
+
readonly CLICK: readonly [LocalCaptchaType.Click];
|
|
40
|
+
readonly KEY_BASED: readonly [LocalCaptchaType.reCAPTCHA_V2, LocalCaptchaType.reCAPTCHA_V2_Callback, LocalCaptchaType.HCaptcha, LocalCaptchaType.HCaptcha_Callback, LocalCaptchaType.ReCAPTCHA_V3, LocalCaptchaType.reCAPTCHA_V3_Callback];
|
|
41
|
+
};
|
|
42
|
+
export type StringKeyCaptchaTypes = LocalCaptchaType.reCAPTCHA_V2 | LocalCaptchaType.reCAPTCHA_V2_Callback | LocalCaptchaType.HCaptcha | LocalCaptchaType.HCaptcha_Callback;
|
|
43
|
+
export type ObjectKeyCaptchaTypes = LocalCaptchaType.ReCAPTCHA_V3 | LocalCaptchaType.reCAPTCHA_V3_Callback;
|
|
44
|
+
/**
|
|
45
|
+
* 验证码求解器的上下文接口
|
|
46
|
+
* Solver 通过此接口访问 EnterCaptchaAction 的能力,避免直接依赖继承链
|
|
47
|
+
*/
|
|
48
|
+
export interface ICaptchaContext {
|
|
49
|
+
page: Page;
|
|
50
|
+
config: EnterCaptchaConfig;
|
|
51
|
+
retryTimes: number;
|
|
52
|
+
isCaptchaSuccess: boolean;
|
|
53
|
+
name: string;
|
|
54
|
+
sleep(delay: number): Promise<void>;
|
|
55
|
+
checkPause(): Promise<void>;
|
|
56
|
+
log(key: string, ...args: any[]): void;
|
|
57
|
+
error(key: string, ...args: any[]): void;
|
|
58
|
+
resource(key: string, ...args: any[]): void;
|
|
59
|
+
capachaSuccess(): Promise<boolean>;
|
|
60
|
+
getCaptchaToken(data: {
|
|
61
|
+
url?: string;
|
|
62
|
+
captchaType: LocalCaptchaType;
|
|
63
|
+
image?: string;
|
|
64
|
+
image2?: string;
|
|
65
|
+
key?: string;
|
|
66
|
+
action?: string;
|
|
67
|
+
}): Promise<string | SlideCaptchaResult | ClickCaptchaResult>;
|
|
68
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CAPTCHA_FAMILIES = void 0;
|
|
4
|
+
const enums_1 = require("../../enums");
|
|
5
|
+
// 验证码家族分组
|
|
6
|
+
exports.CAPTCHA_FAMILIES = {
|
|
7
|
+
// 图片验证码家族
|
|
8
|
+
IMAGE: [enums_1.LocalCaptchaType.TextInput, enums_1.LocalCaptchaType.Chars],
|
|
9
|
+
// reCAPTCHA 家族
|
|
10
|
+
RECAPTCHA_V2: [enums_1.LocalCaptchaType.reCAPTCHA_V2, enums_1.LocalCaptchaType.reCAPTCHA_V2_Callback],
|
|
11
|
+
RECAPTCHA_V3: [enums_1.LocalCaptchaType.ReCAPTCHA_V3, enums_1.LocalCaptchaType.reCAPTCHA_V3_Callback],
|
|
12
|
+
// hCaptcha 家族
|
|
13
|
+
HCAPTCHA: [enums_1.LocalCaptchaType.HCaptcha, enums_1.LocalCaptchaType.HCaptcha_Callback],
|
|
14
|
+
// 需要回调的验证码类型
|
|
15
|
+
CALLBACK_TYPES: [
|
|
16
|
+
enums_1.LocalCaptchaType.reCAPTCHA_V2_Callback,
|
|
17
|
+
enums_1.LocalCaptchaType.HCaptcha_Callback,
|
|
18
|
+
enums_1.LocalCaptchaType.ReCAPTCHA_V3,
|
|
19
|
+
enums_1.LocalCaptchaType.reCAPTCHA_V3_Callback,
|
|
20
|
+
],
|
|
21
|
+
// 滑块验证码家族
|
|
22
|
+
SLIDER: [enums_1.LocalCaptchaType.Silder, enums_1.LocalCaptchaType.SilderWithoutImage],
|
|
23
|
+
// 点选验证码家族
|
|
24
|
+
CLICK: [enums_1.LocalCaptchaType.Click],
|
|
25
|
+
// 基于密钥的验证码家族
|
|
26
|
+
KEY_BASED: [
|
|
27
|
+
enums_1.LocalCaptchaType.reCAPTCHA_V2,
|
|
28
|
+
enums_1.LocalCaptchaType.reCAPTCHA_V2_Callback,
|
|
29
|
+
enums_1.LocalCaptchaType.HCaptcha,
|
|
30
|
+
enums_1.LocalCaptchaType.HCaptcha_Callback,
|
|
31
|
+
enums_1.LocalCaptchaType.ReCAPTCHA_V3,
|
|
32
|
+
enums_1.LocalCaptchaType.reCAPTCHA_V3_Callback,
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRandomFloat = exports.getRandomInt = void 0;
|
|
4
|
+
// 生成随机整数
|
|
5
|
+
const getRandomInt = (min, max) => {
|
|
6
|
+
min = Math.ceil(min);
|
|
7
|
+
max = Math.floor(max);
|
|
8
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
9
|
+
};
|
|
10
|
+
exports.getRandomInt = getRandomInt;
|
|
11
|
+
// 生成随机浮点数
|
|
12
|
+
const getRandomFloat = (min, max) => {
|
|
13
|
+
return Math.random() * (max - min) + min;
|
|
14
|
+
};
|
|
15
|
+
exports.getRandomFloat = getRandomFloat;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['ActionFactory']=void 0x0;const rootAction_1=require('./rootAction'),loopAction_1=require('./loopAction'),clickAction_1=require('./clickAction'),navigateAction_1=require('./navigateAction'),conditionAction_1=require('./conditionAction'),extractDataAction_1=require('./extractDataAction'),enterTextAction_1=require('./enterTextAction'),mouseOverAction_1=require('./mouseOverAction'),switchCombo2Action_1=require('./switchCombo2Action'),enterCapachaAction_1=require('./enterCapachaAction'),breakActivity_1=require('./breakActivity'),completeWF_1=require('./completeWF'),emptyAction_1=require('./emptyAction'),backPreWebPageAction_1=require('./backPreWebPageAction');class ActionFactory{static['getMaps'](_0x36827b){if(this['Maps']==null){var _0x4ea521={};_0x4ea521['ns0:RootAction']=rootAction_1['RootAction'],_0x4ea521['ns0:LoopAction']=loopAction_1['LoopAction'],_0x4ea521['ns0:NavigateAction']=navigateAction_1['NavigateAction'],_0x4ea521['ns0:ClickAction']=clickAction_1['ClickAction'],_0x4ea521['ns0:ExtractDataAction']=extractDataAction_1['ExtractDataAction'],_0x4ea521['ns0:ConditionAction']=conditionAction_1['ConditionAction'],_0x4ea521['ns0:EnterTextAction']=enterTextAction_1['EnterTextAction'],_0x4ea521['ns0:MouseOverAction']=mouseOverAction_1['MouseOverAction'],_0x4ea521['ns0:SwitchCombo2Action']=switchCombo2Action_1['SwitchCombo2Action'],_0x4ea521['ns0:EnterCapachaAction']=enterCapachaAction_1['EnterCapachaAction'],_0x4ea521['ns0:BreakActivity']=breakActivity_1['BreakActivity'],_0x4ea521['ns0:CompleteWF']=completeWF_1['CompleteWF'],_0x4ea521['ns0:EmptyAction']=emptyAction_1['EmptyAction'],_0x4ea521['ns0:BackPreWebPageAction']=backPreWebPageAction_1['BackPreWebPageAction'],this['Maps']=_0x4ea521;}return this['Maps'][_0x36827b];}static['getAction'](_0x52c251,_0x16e7c3,_0xa83f4e){if(_0x52c251['indexOf']('|')==-0x1)return null;let _0xcf3ea4=_0x52c251['substring'](_0x52c251['indexOf']('|')+0x1),_0x39d845=null;var _0x1e0302=this['getMaps'](_0xcf3ea4);if(_0x1e0302!=null)_0x39d845=new _0x1e0302();else return null;return _0x39d845&&(_0x39d845['setConfigJSon'](_0x16e7c3),_0x39d845['setParentAction'](_0xa83f4e)),_0x39d845;}}exports['ActionFactory']=ActionFactory,ActionFactory['Maps']=null;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare enum ActivityType {
|
|
2
|
+
StartEvent = "start-event",
|
|
3
|
+
EndEvent = "end-event",
|
|
4
|
+
SequenceFlow = "sequence-flow",
|
|
5
|
+
NavigateTask = "navigate-task",
|
|
6
|
+
LoopProcess = "loop-process",
|
|
7
|
+
LoopProcessItemStart = "loop-process-item-start",
|
|
8
|
+
LoopProcessEnd = "loop-process-end",
|
|
9
|
+
ClickTask = "click-task",
|
|
10
|
+
ExtractDataTask = "extractdata-task",
|
|
11
|
+
EnterTextTask = "entertext-task",
|
|
12
|
+
BreakActivityTask = "break-activity-task",
|
|
13
|
+
ConditionTask = "condition-task",
|
|
14
|
+
ConditionEndTask = "condition-end-task",
|
|
15
|
+
BranchTask = "branch-task",
|
|
16
|
+
EnterCapachaTask = "enter-capacha-task",
|
|
17
|
+
MouseOverTask = "mouse-over-task",
|
|
18
|
+
SwitchComboTask = "switch-combo-task",
|
|
19
|
+
CompleteWorkFlow = "complete-workflow",
|
|
20
|
+
EmptyTask = "empty-task",
|
|
21
|
+
BackPreWebPageTask = "back-preweb-page-task"
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['ActivityType']=void 0x0;var ActivityType;(function(_0x2d8da1){_0x2d8da1['StartEvent']='start-event',_0x2d8da1['EndEvent']='end-event',_0x2d8da1['SequenceFlow']='sequence-flow',_0x2d8da1['NavigateTask']='navigate-task',_0x2d8da1['LoopProcess']='loop-process',_0x2d8da1['LoopProcessItemStart']='loop-process-item-start',_0x2d8da1['LoopProcessEnd']='loop-process-end',_0x2d8da1['ClickTask']='click-task',_0x2d8da1['ExtractDataTask']='extractdata-task',_0x2d8da1['EnterTextTask']='entertext-task',_0x2d8da1['BreakActivityTask']='break-activity-task',_0x2d8da1['ConditionTask']='condition-task',_0x2d8da1['ConditionEndTask']='condition-end-task',_0x2d8da1['BranchTask']='branch-task',_0x2d8da1['EnterCapachaTask']='enter-capacha-task',_0x2d8da1['MouseOverTask']='mouse-over-task',_0x2d8da1['SwitchComboTask']='switch-combo-task',_0x2d8da1['CompleteWorkFlow']='complete-workflow',_0x2d8da1['EmptyTask']='empty-task',_0x2d8da1['BackPreWebPageTask']='back-preweb-page-task';}(ActivityType||(exports['ActivityType']=ActivityType={})));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['BackPreWebPageAction']=void 0x0;const baseAction_1=require('./baseAction'),activityTypeEnum_1=require('./activityTypeEnum');class BackPreWebPageAction extends baseAction_1['BaseAction']{constructor(){super(),this['name']='BackPreWebPageAction';}['doActions'](){this['parentAction']&&this['parentAction']['element']&&(this['element']=this['parentAction']['element']['ele']('userTask',{'actionType':'BackPreWebPageAction','id':this['id']}),this['cacheActivityMap'](this['id'],activityTypeEnum_1['ActivityType']['BackPreWebPageTask']),this['bindingBasicAttrs']());}}exports['BackPreWebPageAction']=BackPreWebPageAction;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ActivityType } from './activityTypeEnum';
|
|
2
|
+
export declare const TransActivityMaps: Map<string, ActivityType>;
|
|
3
|
+
export declare class BaseAction {
|
|
4
|
+
name: string;
|
|
5
|
+
configJSon: any;
|
|
6
|
+
properties: any;
|
|
7
|
+
parentAction: BaseAction;
|
|
8
|
+
element: any;
|
|
9
|
+
id: string;
|
|
10
|
+
flowIndex: number;
|
|
11
|
+
content: string;
|
|
12
|
+
constructor();
|
|
13
|
+
getRealNameTagName(valObj: any): string;
|
|
14
|
+
setConfigJSon(val: any): void;
|
|
15
|
+
setParentAction(val: BaseAction): void;
|
|
16
|
+
/**
|
|
17
|
+
* 生成该action的bpmn格式的xml
|
|
18
|
+
*/
|
|
19
|
+
doActions(): void;
|
|
20
|
+
getEndId(): string;
|
|
21
|
+
bindingBasicAttrs(): void;
|
|
22
|
+
cacheActivityMap(id: string, type: ActivityType): void;
|
|
23
|
+
private readonly timespanRegex;
|
|
24
|
+
bindingAtts(element: any, properties: any): void;
|
|
25
|
+
keyFilter(key: string): boolean;
|
|
26
|
+
getFormatValue(val: any): any;
|
|
27
|
+
getActionItem(val: string): any;
|
|
28
|
+
sleep(delay: any): Promise<unknown>;
|
|
29
|
+
delayPromise(ms: any): Promise<unknown>;
|
|
30
|
+
timeoutPromise(promise: any, ms: any): Promise<any>;
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var __createBinding=this&&this['__createBinding']||(Object['create']?function(_0x2cbdfe,_0x41ee10,_0x55be17,_0x29e85f){if(_0x29e85f===undefined)_0x29e85f=_0x55be17;var _0xc7d246=Object['getOwnPropertyDescriptor'](_0x41ee10,_0x55be17);(!_0xc7d246||('get'in _0xc7d246?!_0x41ee10['__esModule']:_0xc7d246['writable']||_0xc7d246['configurable']))&&(_0xc7d246={'enumerable':!![],'get':function(){return _0x41ee10[_0x55be17];}}),Object['defineProperty'](_0x2cbdfe,_0x29e85f,_0xc7d246);}:function(_0x321f38,_0x37d08f,_0x3e31a3,_0x42f5fe){if(_0x42f5fe===undefined)_0x42f5fe=_0x3e31a3;_0x321f38[_0x42f5fe]=_0x37d08f[_0x3e31a3];}),__setModuleDefault=this&&this['__setModuleDefault']||(Object['create']?function(_0x672b5d,_0x2b9137){Object['defineProperty'](_0x672b5d,'default',{'enumerable':!![],'value':_0x2b9137});}:function(_0x2fda85,_0x1f472e){_0x2fda85['default']=_0x1f472e;}),__importStar=this&&this['__importStar']||(function(){var _0x5d5815=function(_0x565816){return _0x5d5815=Object['getOwnPropertyNames']||function(_0x2699d2){var _0x3b1414=[];for(var _0xa36455 in _0x2699d2)if(Object['prototype']['hasOwnProperty']['call'](_0x2699d2,_0xa36455))_0x3b1414[_0x3b1414['length']]=_0xa36455;return _0x3b1414;},_0x5d5815(_0x565816);};return function(_0x385e09){if(_0x385e09&&_0x385e09['__esModule'])return _0x385e09;var _0x5753ee={};if(_0x385e09!=null){for(var _0x566925=_0x5d5815(_0x385e09),_0x4e5be7=0x0;_0x4e5be7<_0x566925['length'];_0x4e5be7++)if(_0x566925[_0x4e5be7]!=='default')__createBinding(_0x5753ee,_0x385e09,_0x566925[_0x4e5be7]);}return __setModuleDefault(_0x5753ee,_0x385e09),_0x5753ee;};}());Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['BaseAction']=exports['TransActivityMaps']=void 0x0;const xml2js=__importStar(require('xml2js')),uuid=__importStar(require('uuid')),utils_1=require('../utils');exports['TransActivityMaps']=new Map();const parser=new xml2js['Parser']({'explicitArray':![],'ignoreAttrs':![]});class BaseAction{constructor(){this['flowIndex']=0x0,this['timespanRegex']=/^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/,this['name']='BaseAction';}['getRealNameTagName'](_0x2422d0){let _0x1a3f6d='x:Name';for(const _0x4caafa in _0x2422d0){_0x4caafa['indexOf'](':Name')>-0x1&&(_0x1a3f6d=_0x4caafa);}return _0x1a3f6d;}['setConfigJSon'](_0x2c9e12){this['configJSon']=_0x2c9e12,this['properties']=_0x2c9e12['$'];(_0x2c9e12==null||_0x2c9e12['$']==undefined)&&console['log']('undefined');const _0x4fea3f=this['getRealNameTagName'](_0x2c9e12['$']);this['id']=_0x2c9e12['$'][_0x4fea3f],(0x0,utils_1['isNullOrEmpty'])(this['id'])&&(this['id']=uuid['v1']());}['setParentAction'](_0x5edfa3){this['parentAction']=_0x5edfa3;}['doActions'](){console['log'](this['name']),console['log'](this['configJSon']);}['getEndId'](){return this['id'];}['bindingBasicAttrs'](){this['bindingAtts'](this['element'],this['properties']);}['cacheActivityMap'](_0x380a8f,_0x4218f5){exports['TransActivityMaps']['set'](_0x380a8f,_0x4218f5);}['bindingAtts'](_0x438226,_0x29376f){for(const _0x5155bd in _0x29376f){if(_0x5155bd!='$'&&this['keyFilter'](_0x5155bd)){const _0x549bee=_0x29376f[_0x5155bd];if(_0x5155bd['toLowerCase']()=='timeout'&&this['timespanRegex']['test'](_0x549bee)){const _0x2267ad=_0x549bee['split'](':'),_0xedc6dd=parseInt(_0x2267ad[0x0])*0x3c*0x3c+parseInt(_0x2267ad[0x1])*0x3c+parseInt(_0x2267ad[0x2]);_0x438226['att'](_0x5155bd,_0xedc6dd);}else _0x5155bd==='FixedValue'?_0x438226['att'](_0x5155bd,_0x549bee):_0x438226['att'](_0x5155bd,this['getFormatValue'](_0x29376f[_0x5155bd]));}}}['keyFilter'](_0x7afbcf){return _0x7afbcf['indexOf'](':')>-0x1||this['name']=='ExtractDataAction'&&(_0x7afbcf=='ExtractTemplate'||_0x7afbcf=='Operations')?![]:!![];}['getFormatValue'](_0x5bba0e){if(_0x5bba0e=='False')return'false';else{if(_0x5bba0e=='True')return'true';else{if(_0x5bba0e=='{x:Null}'||_0x5bba0e=='{p3:Null}')return'';}}return _0x5bba0e;}['getActionItem'](_0x17c1ed){if(_0x17c1ed){let _0xd58c84=undefined;return parser['parseString'](_0x17c1ed,function(_0x3b705d,_0x1f6dd6){_0xd58c84=_0x1f6dd6;}),_0xd58c84;}else return undefined;}['sleep'](_0x53ec65){return new Promise((_0x513fc6,_0x92b6de)=>{setTimeout(()=>{try{_0x513fc6(0x1);}catch(_0x416aac){_0x92b6de(0x0);}},_0x53ec65);});}['delayPromise'](_0x3d246f){return new Promise(function(_0x4ad354){setTimeout(_0x4ad354,_0x3d246f);});}['timeoutPromise'](_0x52fa6d,_0x385c28){const _0x494cfa=this['delayPromise'](_0x385c28)['then'](function(){console['log']('time\x20out');});return Promise['race']([_0x494cfa,_0x52fa6d]);}}exports['BaseAction']=BaseAction;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['BreakActivity']=void 0x0;const baseAction_1=require('./baseAction'),activityTypeEnum_1=require('./activityTypeEnum');class BreakActivity extends baseAction_1['BaseAction']{constructor(){super(),this['name']='BreakActivity';}['doActions'](){if(this['parentAction']&&this['parentAction']['element']){this['element']=this['parentAction']['element']['ele']('userTask',{'actionType':'BreakActivity','id':this['id']}),this['cacheActivityMap'](this['id'],activityTypeEnum_1['ActivityType']['BreakActivityTask']);let _0x213a94=this['parentAction'],_0x274c94='theProcess';while(_0x213a94){if(_0x213a94['name']=='LoopAction'){_0x274c94=_0x213a94['id'];break;}_0x213a94=_0x213a94['parentAction'];}this['element']['att']('parent',_0x274c94),this['bindingBasicAttrs']();}}}exports['BreakActivity']=BreakActivity;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['ClickAction']=void 0x0;const baseAction_1=require('./baseAction'),activityTypeEnum_1=require('./activityTypeEnum');class ClickAction extends baseAction_1['BaseAction']{constructor(){super(),this['name']='ClickAction';}['doActions'](){if(this['parentAction']&&this['parentAction']['element']){this['element']=this['parentAction']['element']['ele']('userTask',{'actionType':'ClickAction','id':this['id']}),this['bindingBasicAttrs'](),this['cacheActivityMap'](this['id'],activityTypeEnum_1['ActivityType']['ClickTask']);if(this['configJSon']['ns0:ClickAction.RetryConditions']){let _0x5b225b=this['element']['ele']('extensionElements'),_0xc0da13=_0x5b225b['ele']('xml:ClickAction.RetryConditions'),_0x323fce='x:Array';for(let _0x457a0f in this['configJSon']['ns0:ClickAction.RetryConditions']){_0x323fce=_0x457a0f;}if(this['configJSon']['ns0:ClickAction.RetryConditions'][_0x323fce]){if(this['configJSon']['ns0:ClickAction.RetryConditions'][_0x323fce]['ns2:RetryCondition']){if(Array['isArray'](this['configJSon']['ns0:ClickAction.RetryConditions'][_0x323fce]['ns2:RetryCondition']))for(let _0x11311b of this['configJSon']['ns0:ClickAction.RetryConditions'][_0x323fce]['ns2:RetryCondition']){let _0x46a0f4=_0xc0da13['ele']('xml:RetryCondition');this['bindingAtts'](_0x46a0f4,_0x11311b['$']);}else{let _0x17f8de=this['configJSon']['ns0:ClickAction.RetryConditions'][_0x323fce]['ns2:RetryCondition'],_0x582175=_0xc0da13['ele']('xml:RetryCondition');this['bindingAtts'](_0x582175,_0x17f8de['$']);}}}if(this['configJSon']['ns0:ClickAction.UserAgents']){let _0x11d817=_0x5b225b['ele']('xml:ClickAction.UserAgents');try{let _0x2a5adc='x:Array';for(let _0x40baf7 in this['configJSon']['ns0:ClickAction.UserAgents']){_0x2a5adc=_0x40baf7;}if(this['configJSon']['ns0:ClickAction.UserAgents'][_0x2a5adc]){let _0x508c33='ns1:String';for(let _0x320551 in this['configJSon']['ns0:ClickAction.UserAgents'][_0x2a5adc]){if(_0x320551['indexOf']('UserAgents')>0x0){_0x508c33=_0x320551;break;}}if(this['configJSon']['ns0:ClickAction.UserAgents'][_0x2a5adc][_0x508c33]){if(Array['isArray'](this['configJSon']['ns0:ClickAction.UserAgents'][_0x2a5adc][_0x508c33]))for(let _0x2b0d6e of this['configJSon']['ns0:ClickAction.UserAgents'][_0x2a5adc][_0x508c33]){let _0x369bcf=_0x11d817['ele']('xml:UserAgents');this['bindingAtts'](_0x369bcf,{'userAgent':_0x2b0d6e['_']});}else{let _0x286fc1=this['configJSon']['ns0:ClickAction.UserAgents'][_0x2a5adc][_0x508c33],_0x91429c=_0x11d817['ele']('xml:UserAgents');this['bindingAtts'](_0x91429c,{'userAgent':_0x286fc1['_']});}}}}catch(_0x459004){console['error'](_0x459004);}}}}}}exports['ClickAction']=ClickAction;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['CompleteWF']=void 0x0;const baseAction_1=require('./baseAction'),activityTypeEnum_1=require('./activityTypeEnum');class CompleteWF extends baseAction_1['BaseAction']{constructor(){super(),this['name']='CompleteWF';}['doActions'](){this['parentAction']&&this['parentAction']['element']&&(this['element']=this['parentAction']['element']['ele']('userTask',{'actionType':'CompleteWF','id':this['id']}),this['cacheActivityMap'](this['id'],activityTypeEnum_1['ActivityType']['CompleteWorkFlow']),this['bindingBasicAttrs']());}}exports['CompleteWF']=CompleteWF;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var __createBinding=this&&this['__createBinding']||(Object['create']?function(_0xe8d88b,_0x13a096,_0x533c4e,_0x148f26){if(_0x148f26===undefined)_0x148f26=_0x533c4e;var _0x2e5a6b=Object['getOwnPropertyDescriptor'](_0x13a096,_0x533c4e);(!_0x2e5a6b||('get'in _0x2e5a6b?!_0x13a096['__esModule']:_0x2e5a6b['writable']||_0x2e5a6b['configurable']))&&(_0x2e5a6b={'enumerable':!![],'get':function(){return _0x13a096[_0x533c4e];}}),Object['defineProperty'](_0xe8d88b,_0x148f26,_0x2e5a6b);}:function(_0x3442fa,_0x29fd2d,_0x363a52,_0x46bcf2){if(_0x46bcf2===undefined)_0x46bcf2=_0x363a52;_0x3442fa[_0x46bcf2]=_0x29fd2d[_0x363a52];}),__setModuleDefault=this&&this['__setModuleDefault']||(Object['create']?function(_0x4c9453,_0x1bff70){Object['defineProperty'](_0x4c9453,'default',{'enumerable':!![],'value':_0x1bff70});}:function(_0x1a0fad,_0xec3295){_0x1a0fad['default']=_0xec3295;}),__importStar=this&&this['__importStar']||(function(){var _0xf8ea75=function(_0x3589d6){return _0xf8ea75=Object['getOwnPropertyNames']||function(_0x16bc7f){var _0x1d1f75=[];for(var _0x2a5fd1 in _0x16bc7f)if(Object['prototype']['hasOwnProperty']['call'](_0x16bc7f,_0x2a5fd1))_0x1d1f75[_0x1d1f75['length']]=_0x2a5fd1;return _0x1d1f75;},_0xf8ea75(_0x3589d6);};return function(_0x4cbe30){if(_0x4cbe30&&_0x4cbe30['__esModule'])return _0x4cbe30;var _0x3fa576={};if(_0x4cbe30!=null){for(var _0x2b4e20=_0xf8ea75(_0x4cbe30),_0x1cf135=0x0;_0x1cf135<_0x2b4e20['length'];_0x1cf135++)if(_0x2b4e20[_0x1cf135]!=='default')__createBinding(_0x3fa576,_0x4cbe30,_0x2b4e20[_0x1cf135]);}return __setModuleDefault(_0x3fa576,_0x4cbe30),_0x3fa576;};}());Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['ConditionAction']=void 0x0;const baseAction_1=require('./baseAction'),activityTypeEnum_1=require('./activityTypeEnum'),uuid=__importStar(require('uuid')),actionFactory_1=require('./actionFactory');class ConditionAction extends baseAction_1['BaseAction']{constructor(){super(),this['name']='ConditionAction';}['doActions'](){if(this['parentAction']&&this['parentAction']['element']){let _0x4a46ce='defaultbranch-'+this['id'];this['element']=this['parentAction']['element']['ele']('exclusiveGateway',{'actionType':'ConditionAction','id':this['id'],'default':_0x4a46ce}),this['cacheActivityMap'](this['id'],activityTypeEnum_1['ActivityType']['ConditionTask']),this['bindingBasicAttrs']();this['configJSon']['ns0:BranchAction']&&!(this['configJSon']['ns0:BranchAction']instanceof Array)&&(this['configJSon']['ns0:BranchAction']=[this['configJSon']['ns0:BranchAction']]);let _0x46ffe9=0x0,_0x30aeef=0x0;for(let _0x25c5da of this['configJSon']['ns0:BranchAction']){_0x30aeef++;let _0x15fb2e=[],_0x4a796d=[],_0x1b48bf=this['id'];for(let _0x18a622 in _0x25c5da){let _0x2f2100=actionFactory_1['ActionFactory']['getAction'](_0x18a622,_0x25c5da[_0x18a622],this['parentAction']);_0x2f2100&&_0x4a796d['push'](_0x2f2100);}_0x46ffe9=Math['max'](_0x4a796d['length'],_0x46ffe9);if(_0x30aeef===Object['keys'](this['configJSon']['ns0:BranchAction'])['length'])while(_0x4a796d['length']<_0x46ffe9+0x1){const _0x543a50={'PageIndex':_0x25c5da['$']['PageIndex'],'x:Name':'emptyAction-'+uuid['v1']()+'-FIX','FilePath':'{x:Null}','Caption':'不做任何事的空步骤','Description':'不做任何事的空步骤'};let _0x3d6661=actionFactory_1['ActionFactory']['getAction']('-1|ns0:EmptyAction',{'$':_0x543a50},this['parentAction']);_0x4a796d['unshift'](_0x3d6661);}let _0x30afaa=this['getRealNameTagName'](_0x25c5da['$']);if(_0x4a796d['length']===0x0){let _0x2a0842=this['parentAction']['element']['ele']('sequenceFlow',{'actionType':'BranchAction','id':_0x25c5da['$'][_0x30afaa],'sourceRef':_0x1b48bf,'targetRef':this['getEndId']()});this['cacheActivityMap'](_0x25c5da['$'][_0x30afaa],activityTypeEnum_1['ActivityType']['BranchTask']),this['bindingAtts'](_0x2a0842,_0x25c5da['$']);let _0x1b6831=_0x2a0842['ele']('conditionExpression',{'xsi:type':'tFormalExpression'},'${services.decisionTest()}');}else{let _0x1c59a4=this['parentAction']['element']['ele']('sequenceFlow',{'actionType':'BranchAction','id':_0x25c5da['$'][_0x30afaa],'sourceRef':_0x1b48bf,'targetRef':_0x4a796d[0x0]['id']});this['cacheActivityMap'](_0x25c5da['$'][_0x30afaa],activityTypeEnum_1['ActivityType']['BranchTask']),this['bindingAtts'](_0x1c59a4,_0x25c5da['$']);let _0x1352d6=_0x1c59a4['ele']('conditionExpression',{'xsi:type':'tFormalExpression'},'${services.decisionTest()}');for(let _0x4b81d8 of _0x4a796d){_0x15fb2e['length']>0x0&&this['parentAction']['element']['ele']('sequenceFlow',{'id':this['parentAction']['id']+'flow'+this['parentAction']['flowIndex']++,'sourceRef':_0x1b48bf,'targetRef':_0x4b81d8['id']}),_0x4b81d8['doActions'](),_0x15fb2e[_0x15fb2e['length']]=_0x4b81d8,_0x1b48bf=_0x4b81d8['getEndId']();}this['parentAction']['element']['ele']('sequenceFlow',{'id':this['parentAction']['id']+'flow'+this['parentAction']['flowIndex']++,'sourceRef':_0x1b48bf,'targetRef':this['getEndId']()});}}this['parentAction']['element']['ele']('sequenceFlow',{'id':_0x4a46ce,'sourceRef':this['id'],'targetRef':this['getEndId']()});let _0x50519d=this['parentAction']['element']['ele']('task',{'id':this['getEndId']()});this['cacheActivityMap'](this['getEndId'](),activityTypeEnum_1['ActivityType']['ConditionEndTask']);}}['getEndId'](){return this['id']+'ConditionEnd';}}exports['ConditionAction']=ConditionAction;
|