mirror of
https://github.com/NaiboWang/EasySpider.git
synced 2025-04-21 12:15:16 +08:00
Save Name Configuration
This commit is contained in:
parent
31bcb63daf
commit
06304b2a96
338
ElectronJS/package-lock.json
generated
338
ElectronJS/package-lock.json
generated
@ -26,7 +26,7 @@
|
|||||||
"@electron-forge/maker-rpm": "^6.0.5",
|
"@electron-forge/maker-rpm": "^6.0.5",
|
||||||
"@electron-forge/maker-squirrel": "^6.0.5",
|
"@electron-forge/maker-squirrel": "^6.0.5",
|
||||||
"@electron-forge/maker-zip": "^6.0.5",
|
"@electron-forge/maker-zip": "^6.0.5",
|
||||||
"electron": "^25.0.1"
|
"electron": "^20.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@electron-forge/cli": {
|
"node_modules/@electron-forge/cli": {
|
||||||
@ -1676,6 +1676,17 @@
|
|||||||
"typedarray": "^0.0.6"
|
"typedarray": "^0.0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/config-chain": {
|
||||||
|
"version": "1.1.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
|
||||||
|
"integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"ini": "^1.3.4",
|
||||||
|
"proto-list": "~1.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/console-control-strings": {
|
"node_modules/console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
@ -1966,6 +1977,12 @@
|
|||||||
"minimatch": "^3.0.4"
|
"minimatch": "^3.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/duplexer3": {
|
||||||
|
"version": "0.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
|
||||||
|
"integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/eastasianwidth": {
|
"node_modules/eastasianwidth": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
@ -1977,21 +1994,21 @@
|
|||||||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||||
},
|
},
|
||||||
"node_modules/electron": {
|
"node_modules/electron": {
|
||||||
"version": "25.2.0",
|
"version": "20.3.12",
|
||||||
"resolved": "https://registry.npmjs.org/electron/-/electron-25.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/electron/-/electron-20.3.12.tgz",
|
||||||
"integrity": "sha512-I/rhcW2sV2fyiveVSBr2N7v5ZiCtdGY0UiNCDZgk2fpSC+irQjbeh7JT2b4vWmJ2ogOXBjqesrN9XszTIG6DHg==",
|
"integrity": "sha512-CuCZKhwdSXaUNIoEuPVZ25YH18zmox3wEM8Acwcy9tlpD8Jiuq3ji3RZ98eVWJalrpqbdE9LtTD/sLC86GIkLg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@electron/get": "^2.0.0",
|
"@electron/get": "^1.14.1",
|
||||||
"@types/node": "^18.11.18",
|
"@types/node": "^16.11.26",
|
||||||
"extract-zip": "^2.0.1"
|
"extract-zip": "^2.0.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"electron": "cli.js"
|
"electron": "cli.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 12.20.55"
|
"node": ">= 10.17.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-installer-common": {
|
"node_modules/electron-installer-common": {
|
||||||
@ -2159,6 +2176,226 @@
|
|||||||
"node": ">= 4.0.0"
|
"node": ">= 4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/electron/node_modules/@electron/get": {
|
||||||
|
"version": "1.14.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz",
|
||||||
|
"integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "^4.1.1",
|
||||||
|
"env-paths": "^2.2.0",
|
||||||
|
"fs-extra": "^8.1.0",
|
||||||
|
"got": "^9.6.0",
|
||||||
|
"progress": "^2.0.3",
|
||||||
|
"semver": "^6.2.0",
|
||||||
|
"sumchecker": "^3.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.6"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"global-agent": "^3.0.0",
|
||||||
|
"global-tunnel-ng": "^2.7.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/@sindresorhus/is": {
|
||||||
|
"version": "0.14.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
|
||||||
|
"integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/@szmarczak/http-timer": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"defer-to-connect": "^1.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/@types/node": {
|
||||||
|
"version": "16.18.38",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz",
|
||||||
|
"integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/cacheable-request": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"clone-response": "^1.0.2",
|
||||||
|
"get-stream": "^5.1.0",
|
||||||
|
"http-cache-semantics": "^4.0.0",
|
||||||
|
"keyv": "^3.0.0",
|
||||||
|
"lowercase-keys": "^2.0.0",
|
||||||
|
"normalize-url": "^4.1.0",
|
||||||
|
"responselike": "^1.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/decompress-response": {
|
||||||
|
"version": "3.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
|
||||||
|
"integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"mimic-response": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/defer-to-connect": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
|
||||||
|
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/fs-extra": {
|
||||||
|
"version": "8.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||||
|
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"graceful-fs": "^4.2.0",
|
||||||
|
"jsonfile": "^4.0.0",
|
||||||
|
"universalify": "^0.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6 <7 || >=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/got": {
|
||||||
|
"version": "9.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
|
||||||
|
"integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@sindresorhus/is": "^0.14.0",
|
||||||
|
"@szmarczak/http-timer": "^1.1.2",
|
||||||
|
"cacheable-request": "^6.0.0",
|
||||||
|
"decompress-response": "^3.3.0",
|
||||||
|
"duplexer3": "^0.1.4",
|
||||||
|
"get-stream": "^4.1.0",
|
||||||
|
"lowercase-keys": "^1.0.1",
|
||||||
|
"mimic-response": "^1.0.1",
|
||||||
|
"p-cancelable": "^1.0.0",
|
||||||
|
"to-readable-stream": "^1.0.0",
|
||||||
|
"url-parse-lax": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/got/node_modules/get-stream": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"pump": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/got/node_modules/lowercase-keys": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/json-buffer": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/jsonfile": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
|
||||||
|
"dev": true,
|
||||||
|
"optionalDependencies": {
|
||||||
|
"graceful-fs": "^4.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/keyv": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"json-buffer": "3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/normalize-url": {
|
||||||
|
"version": "4.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
|
||||||
|
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/p-cancelable": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/responselike": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"lowercase-keys": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/responselike/node_modules/lowercase-keys": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/semver": {
|
||||||
|
"version": "6.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||||
|
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"semver": "bin/semver.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/electron/node_modules/universalify": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
@ -2917,6 +3154,22 @@
|
|||||||
"which": "bin/which"
|
"which": "bin/which"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/global-tunnel-ng": {
|
||||||
|
"version": "2.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
|
||||||
|
"integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"encodeurl": "^1.0.2",
|
||||||
|
"lodash": "^4.17.10",
|
||||||
|
"npm-conf": "^1.1.3",
|
||||||
|
"tunnel": "^0.0.6"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/globalthis": {
|
"node_modules/globalthis": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
@ -4043,6 +4296,30 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/npm-conf": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
|
||||||
|
"integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"config-chain": "^1.1.11",
|
||||||
|
"pify": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/npm-conf/node_modules/pify": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/npm-run-path": {
|
"node_modules/npm-run-path": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
@ -4451,6 +4728,15 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/prepend-http": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/process-nextick-args": {
|
"node_modules/process-nextick-args": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@ -4475,6 +4761,13 @@
|
|||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/proto-list": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"node_modules/proxy-addr": {
|
"node_modules/proxy-addr": {
|
||||||
"version": "2.0.7",
|
"version": "2.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||||
@ -5339,6 +5632,15 @@
|
|||||||
"tmp": "^0.2.0"
|
"tmp": "^0.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/to-readable-stream": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/to-regex-range": {
|
"node_modules/to-regex-range": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
@ -5387,6 +5689,16 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "0BSD"
|
"license": "0BSD"
|
||||||
},
|
},
|
||||||
|
"node_modules/tunnel": {
|
||||||
|
"version": "0.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||||
|
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/type-fest": {
|
"node_modules/type-fest": {
|
||||||
"version": "0.21.3",
|
"version": "0.21.3",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
@ -5453,6 +5765,18 @@
|
|||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/url-parse-lax": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"prepend-http": "^2.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/username": {
|
"node_modules/username": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
"@electron-forge/maker-rpm": "^6.0.5",
|
"@electron-forge/maker-rpm": "^6.0.5",
|
||||||
"@electron-forge/maker-squirrel": "^6.0.5",
|
"@electron-forge/maker-squirrel": "^6.0.5",
|
||||||
"@electron-forge/maker-zip": "^6.0.5",
|
"@electron-forge/maker-zip": "^6.0.5",
|
||||||
"electron": "^25.0.1"
|
"electron": "^20.0.1"
|
||||||
},
|
},
|
||||||
"repository": "https://github.com/NaiboWang/EasySpider",
|
"repository": "https://github.com/NaiboWang/EasySpider",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -524,8 +524,10 @@
|
|||||||
<select id="outputFormat" class="form-control">
|
<select id="outputFormat" class="form-control">
|
||||||
<option value = "csv">CSV</option>
|
<option value = "csv">CSV</option>
|
||||||
<option value = "xlsx">XLSX(EXCEL)</option>
|
<option value = "xlsx">XLSX(EXCEL)</option>
|
||||||
<option value = "mysql">MySQL</option>
|
<option value = "mysql">MySQL数据库</option>
|
||||||
</select>
|
</select>
|
||||||
|
<label>导出文件名/数据库表格名称(如果值为“Time”则名称为执行任务时的时间):</label>
|
||||||
|
<input onkeydown="inputDelete(event)" value="Time" id="saveName" class="form-control"></input>
|
||||||
<label>浏览器模拟类型:</label>
|
<label>浏览器模拟类型:</label>
|
||||||
<select id="environment" name="environment" class="form-control">
|
<select id="environment" name="environment" class="form-control">
|
||||||
<option value = 0>电脑端</option>
|
<option value = 0>电脑端</option>
|
||||||
|
@ -118,26 +118,38 @@
|
|||||||
<td>{{"Argument Value 2_1~参数值2_2" | lang}}</td>
|
<td>{{"Argument Value 2_1~参数值2_2" | lang}}</td>
|
||||||
<td>...</td>
|
<td>...</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>...</td>
|
||||||
|
<td>...</td>
|
||||||
|
<td>...</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<label>{{"The 'Invoke Name' is shown at the main table of this page, such as 'urlList_0' is the invoke name of the open page operation.~“调用名称”在本页面的主表格中显示,例如“urlList_0”是“打开网页“操作的调用名称。" | lang}}</label>
|
<label>{{"The 'Invoke Name' is shown at the main table of this page, such as 'urlList_0' is the invoke name of the open page operation.~“调用名称”在本页面的主表格中显示,例如“urlList_0”是“打开网页“操作的调用名称。" | lang}}</label>
|
||||||
<label>{{"You can just put part of the arguments in the Excel file, and the values of the rest of the arguments will be set to default. Example table for this task is:~您可以只在Excel文件中放入部分参数,其余参数值将被设置为默认值。一个针对此任务的表格示例为:" | lang}}</label>
|
<label>{{"You can just put part of the arguments in the Excel file, and the values of the rest of the arguments will be set to default. Example table for this task is:~您可以只在Excel文件中放入部分参数,其余参数值将被设置为默认值。一个针对此任务的表格示例为:" | lang}}</label>
|
||||||
<table class="table table-bordered excel">
|
<table class="table table-bordered excel">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
|
||||||
|
{{task.inputParameters[i-1]["name"]}}
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
|
<td v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
|
||||||
{{task.inputParameters[i-1]["name"]}}
|
{{getLine(i,0)}}
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
|
|
||||||
{{task.inputParameters[i-1]['value']}}
|
|
||||||
</td>
|
</td>
|
||||||
<tr>
|
<tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td v-for="i in Math.min(3, task.inputParameters.length)">
|
<td v-for="i in Math.min(3, task.inputParameters.length)">
|
||||||
<div v-if="task.inputParameters[i-1]['name'].indexOf('url') >=0">
|
{{getLine(i,1)}}
|
||||||
{{task.inputParameters[i-1]['value']}}
|
</td>
|
||||||
|
<tr>
|
||||||
|
<tr>
|
||||||
|
<td v-for="i in Math.min(3, task.inputParameters.length)">
|
||||||
|
<div v-if="task.inputParameters[i-1]['value'].toString().split('\n').length >=2 || task.inputParameters[i-1]['name'].indexOf('url') >=0">
|
||||||
|
...
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<tr>
|
<tr>
|
||||||
@ -276,7 +288,18 @@
|
|||||||
url = "taskInfo.html?id="+getUrlParam("id")+"&lang=en&type="+getUrlParam("type")+"&wsport="+getUrlParam("wsport")+"&backEndAddressServiceWrapper=" + app.$data.backEndAddressServiceWrapper
|
url = "taskInfo.html?id="+getUrlParam("id")+"&lang=en&type="+getUrlParam("type")+"&wsport="+getUrlParam("wsport")+"&backEndAddressServiceWrapper=" + app.$data.backEndAddressServiceWrapper
|
||||||
}
|
}
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
}, readFromExcel: function(){
|
}, getLine: function(i, index){
|
||||||
|
const value = this.task.inputParameters[i-1]["value"].toString();
|
||||||
|
const parts = value.split("\n");
|
||||||
|
if(parts.length > index){
|
||||||
|
return parts[index];
|
||||||
|
} else if(this.task.inputParameters[i-1]["name"].indexOf("url") >=0){
|
||||||
|
return parts[0];
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
readFromExcel: function(){
|
||||||
$('#excelModal').modal('show');
|
$('#excelModal').modal('show');
|
||||||
}, submitFile: function() {
|
}, submitFile: function() {
|
||||||
let form_data = new FormData();
|
let form_data = new FormData();
|
||||||
|
@ -429,6 +429,7 @@ function saveService(type) {
|
|||||||
"environment": environment,
|
"environment": environment,
|
||||||
"maxViewLength": parseInt($("#maxViewLength").val()),
|
"maxViewLength": parseInt($("#maxViewLength").val()),
|
||||||
"outputFormat": $("#outputFormat").val(),
|
"outputFormat": $("#outputFormat").val(),
|
||||||
|
"saveName": $("#saveName").val(),
|
||||||
"containJudge": containJudge,
|
"containJudge": containJudge,
|
||||||
"desc": serviceDescription,
|
"desc": serviceDescription,
|
||||||
"inputParameters": inputParameters,
|
"inputParameters": inputParameters,
|
||||||
|
File diff suppressed because one or more lines are too long
2
ExecuteStage/.vscode/launch.json
vendored
2
ExecuteStage/.vscode/launch.json
vendored
@ -12,7 +12,7 @@
|
|||||||
"justMyCode": true,
|
"justMyCode": true,
|
||||||
// "args": ["--id", "[7]", "--read_type", "remote", "--headless", "0"]
|
// "args": ["--id", "[7]", "--read_type", "remote", "--headless", "0"]
|
||||||
// "args": ["--id", "[9]", "--read_type", "remote", "--headless", "0", "--saved_file_name", "YOUTUBE"]
|
// "args": ["--id", "[9]", "--read_type", "remote", "--headless", "0", "--saved_file_name", "YOUTUBE"]
|
||||||
"args": ["--id", "[16]", "--headless", "0", "--user_data", "1"]
|
"args": ["--id", "[124]", "--headless", "0", "--user_data", "1"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -48,16 +48,38 @@ desired_capabilities["pageLoadStrategy"] = "none"
|
|||||||
|
|
||||||
|
|
||||||
class BrowserThread(Thread):
|
class BrowserThread(Thread):
|
||||||
def __init__(self, browser_t, id, service, version, event, config):
|
def __init__(self, browser_t, id, service, version, event, saveName, config):
|
||||||
Thread.__init__(self)
|
Thread.__init__(self)
|
||||||
self.browser = browser_t
|
self.browser = browser_t
|
||||||
self.config = config
|
self.config = config
|
||||||
self.id = id
|
self.id = id
|
||||||
self.event = event
|
self.event = event
|
||||||
self.saveName = saveName
|
try:
|
||||||
|
self.saveName = service["saveName"] # 保存文件的名字
|
||||||
|
except:
|
||||||
|
now = datetime.now()
|
||||||
|
# 将时间格式化为精确到毫秒的字符串
|
||||||
|
self.saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
|
||||||
self.log = ""
|
self.log = ""
|
||||||
self.OUTPUT = ""
|
self.OUTPUT = ""
|
||||||
self.SAVED = False
|
self.SAVED = False
|
||||||
|
|
||||||
|
# 名称设定
|
||||||
|
if saveName != "": # 命令行覆盖保存名称
|
||||||
|
self.saveName = saveName # 保存文件的名字
|
||||||
|
elif self.saveName == "Time":
|
||||||
|
# 获取当前时间
|
||||||
|
now = datetime.now()
|
||||||
|
# 将时间格式化为精确到毫秒的字符串
|
||||||
|
self.saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
|
||||||
|
|
||||||
|
print("Save Name for task ID", i, "is:", self.saveName)
|
||||||
|
print("任务ID", i, "的保存文件名为:", self.saveName)
|
||||||
|
if not os.path.exists("Data/Task_" + str(i)):
|
||||||
|
os.mkdir("Data/Task_" + str(i))
|
||||||
|
if not os.path.exists("Data/Task_" + str(i) + "/" + self.saveName):
|
||||||
|
os.mkdir("Data/Task_" + str(i) + "/" + self.saveName) # 创建保存文件夹用来保存截图
|
||||||
|
|
||||||
stealth_path = driver_path[:driver_path.find(
|
stealth_path = driver_path[:driver_path.find(
|
||||||
"chromedriver")] + "stealth.min.js"
|
"chromedriver")] + "stealth.min.js"
|
||||||
with open(stealth_path, 'r') as f:
|
with open(stealth_path, 'r') as f:
|
||||||
@ -200,7 +222,10 @@ class BrowserThread(Thread):
|
|||||||
self.log = ""
|
self.log = ""
|
||||||
|
|
||||||
def scrollDown(self, para, rt=""):
|
def scrollDown(self, para, rt=""):
|
||||||
time.sleep(para["scrollWaitTime"]) # 下拉前等待
|
try:
|
||||||
|
time.sleep(para["scrollWaitTime"]) # 下拉前等待
|
||||||
|
except:
|
||||||
|
pass
|
||||||
scrollType = int(para["scrollType"])
|
scrollType = int(para["scrollType"])
|
||||||
try:
|
try:
|
||||||
if scrollType != 0 and para["scrollCount"] > 0: # 控制屏幕向下滚动
|
if scrollType != 0 and para["scrollCount"] > 0: # 控制屏幕向下滚动
|
||||||
@ -212,7 +237,10 @@ class BrowserThread(Thread):
|
|||||||
body.send_keys(Keys.PAGE_DOWN)
|
body.send_keys(Keys.PAGE_DOWN)
|
||||||
elif scrollType == 2:
|
elif scrollType == 2:
|
||||||
body.send_keys(Keys.END)
|
body.send_keys(Keys.END)
|
||||||
time.sleep(para["scrollWaitTime"]) # 下拉完等待
|
try:
|
||||||
|
time.sleep(para["scrollWaitTime"]) # 下拉完等待
|
||||||
|
except:
|
||||||
|
pass
|
||||||
except:
|
except:
|
||||||
self.Log('Time out after set seconds when scrolling. ')
|
self.Log('Time out after set seconds when scrolling. ')
|
||||||
self.recordLog('Time out after set seconds when scrolling')
|
self.recordLog('Time out after set seconds when scrolling')
|
||||||
@ -226,7 +254,10 @@ class BrowserThread(Thread):
|
|||||||
body.send_keys(Keys.PGDN)
|
body.send_keys(Keys.PGDN)
|
||||||
elif scrollType == 2:
|
elif scrollType == 2:
|
||||||
body.send_keys(Keys.END)
|
body.send_keys(Keys.END)
|
||||||
time.sleep(para["scrollWaitTime"]) # 下拉完等待
|
try:
|
||||||
|
time.sleep(para["scrollWaitTime"]) # 下拉完等待
|
||||||
|
except:
|
||||||
|
pass
|
||||||
if rt != "":
|
if rt != "":
|
||||||
rt.end()
|
rt.end()
|
||||||
|
|
||||||
@ -862,7 +893,10 @@ class BrowserThread(Thread):
|
|||||||
self.Log('Time out after set seconds when loading clicked page')
|
self.Log('Time out after set seconds when loading clicked page')
|
||||||
self.recordLog(
|
self.recordLog(
|
||||||
'Time out after set seconds when loading clicked page')
|
'Time out after set seconds when loading clicked page')
|
||||||
self.browser.execute_script('window.stop()')
|
try:
|
||||||
|
self.browser.execute_script('window.stop()')
|
||||||
|
except:
|
||||||
|
pass
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.Log(e)
|
self.Log(e)
|
||||||
self.recordLog(str(e))
|
self.recordLog(str(e))
|
||||||
@ -1336,19 +1370,6 @@ if __name__ == '__main__':
|
|||||||
for i in c.id:
|
for i in c.id:
|
||||||
print(options)
|
print(options)
|
||||||
print("id: ", i)
|
print("id: ", i)
|
||||||
if c.saved_file_name != "":
|
|
||||||
saveName = c.saved_file_name # 保存文件的名字
|
|
||||||
else:
|
|
||||||
# 获取当前时间
|
|
||||||
now = datetime.now()
|
|
||||||
# 将时间格式化为精确到毫秒的字符串
|
|
||||||
saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
|
|
||||||
print("Save Name for task ID", i, "is:", saveName)
|
|
||||||
print("任务ID", i, "的保存文件名为:", saveName)
|
|
||||||
if not os.path.exists("Data/Task_" + str(i)):
|
|
||||||
os.mkdir("Data/Task_" + str(i))
|
|
||||||
if not os.path.exists("Data/Task_" + str(i) + "/" + saveName):
|
|
||||||
os.mkdir("Data/Task_" + str(i) + "/" + saveName) # 创建保存文件夹用来保存截图
|
|
||||||
if c.read_type == "remote":
|
if c.read_type == "remote":
|
||||||
print("remote")
|
print("remote")
|
||||||
content = requests.get(
|
content = requests.get(
|
||||||
@ -1402,7 +1423,7 @@ if __name__ == '__main__':
|
|||||||
event = Event()
|
event = Event()
|
||||||
event.set()
|
event.set()
|
||||||
thread = BrowserThread(browser_t, i, service,
|
thread = BrowserThread(browser_t, i, service,
|
||||||
c.version, event, config=config)
|
c.version, event, c.saved_file_name, config=config)
|
||||||
print("Thread with task id: ", i, " is created")
|
print("Thread with task id: ", i, " is created")
|
||||||
threads.append(thread)
|
threads.append(thread)
|
||||||
thread.start()
|
thread.start()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user