From 77da3cf3394eae3ea81a7742f3c51bb12e627bb6 Mon Sep 17 00:00:00 2001 From: yema <1304119519@qq.com> Date: Sun, 18 Jun 2023 01:12:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BA=93=E5=AD=98=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main/gpt/batchApplication.ts | 2 +- electron/main/gpt/getLink.ts | 5 + electron/main/gpt/index.ts | 24 +++-- electron/main/login.ts | 4 +- electron/main/poe/link_7day.ts | 4 +- package.json | 1 + src/App.vue | 149 ++++++++++++++++++++++---- src/Business.vue | 108 +++++++++++++++++++ src/components.d.ts | 5 + 9 files changed, 267 insertions(+), 35 deletions(-) create mode 100644 src/Business.vue diff --git a/electron/main/gpt/batchApplication.ts b/electron/main/gpt/batchApplication.ts index 3bbc28d..6a9880b 100644 --- a/electron/main/gpt/batchApplication.ts +++ b/electron/main/gpt/batchApplication.ts @@ -117,7 +117,7 @@ export async function generateDescription(desIndex = 0): Promise { url: 'https://api.openai-proxy.com/v1/chat/completions', method: 'post', headers: { - Authorization: `Bearer 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` + Authorization: `Bearer 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` }, data: { max_tokens: 1024, diff --git a/electron/main/gpt/getLink.ts b/electron/main/gpt/getLink.ts index 9c8d100..b12e0ce 100644 --- a/electron/main/gpt/getLink.ts +++ b/electron/main/gpt/getLink.ts @@ -21,6 +21,11 @@ export async function getLink(options) { log('等待升级plus按钮出现') await page.waitForTimeout(500) + await page.evaluate(() => { + const $mark = document.querySelector("body > div.absolute.inset-0") + if ($mark) $mark.remove() + }) + log('开始点击升级plus按钮') await page.click('.gold-new-button') diff --git a/electron/main/gpt/index.ts b/electron/main/gpt/index.ts index 8ad3599..9b51c58 100644 --- a/electron/main/gpt/index.ts +++ b/electron/main/gpt/index.ts @@ -2,6 +2,8 @@ import { ipcMain } from 'electron' import { getLink } from './getLink' import { validate } from './validate' import { batchApplication } from './batchApplication' +import { chunk } from 'lodash' +import { sleep } from '../tools' const parseAccount = text => text.split('\n').filter(Boolean).map(v => { v = v.split(/(——|-)+/).filter(v => !['-', '——'].includes(v)) @@ -10,18 +12,22 @@ const parseAccount = text => text.split('\n').filter(Boolean).map(v => { ipcMain.handle('gpt-link', async (event, arg) => { const { text } = arg - const accounts = parseAccount(text) + // 进程数 + const processNum = 2 + const totalArr = parseAccount(text) + const accounts = chunk(totalArr, Math.ceil(totalArr.length / processNum)) + async function run (accounts) { + for(let i = 0; i < accounts.length; i++) { + const [user, pass] = accounts[i] + const link = await getLink({ user, pass, index: i, id: user, ...arg }) + console.log('process', i, user, link) + } + } const links = [] for(let i = 0; i < accounts.length; i++) { - const [user, pass] = accounts[i] - const link = await getLink({ user, pass, index: i, id: user, ...arg }) - links.push({ - i, - user, - link - }) - console.log('process', i, user, link) + if (i !== 0) await sleep(2000) + run(accounts[i]) } }) diff --git a/electron/main/login.ts b/electron/main/login.ts index 73bac5e..56c27a3 100644 --- a/electron/main/login.ts +++ b/electron/main/login.ts @@ -326,7 +326,7 @@ const login = { // log('准备进入 google 登录页') const [response] = await Promise.all([ - page.waitForNavigation({ timeout: 10000 }), + page.waitForNavigation({ timeout: 0 }), page.click('button') ]) // log('已进入 google 登录页') @@ -340,7 +340,7 @@ const login = { log('准备输入账号') await page.type('#username', env.GUSER) await Promise.all([ - page.waitForNavigation(), + page.waitForNavigation({ timeout: 0 }), page.keyboard.press('Enter') ]) diff --git a/electron/main/poe/link_7day.ts b/electron/main/poe/link_7day.ts index e186985..de5e8be 100644 --- a/electron/main/poe/link_7day.ts +++ b/electron/main/poe/link_7day.ts @@ -60,11 +60,11 @@ export async function link_7day(options) { async function test() { const url = 'https://checkout.stripe.com/c/pay/cs_live_a1MXhrEYuI3qJEjw85zmuIxjFsgswafv0xlcxUGAOIeyiGJBGLA56mvRto#fidkdWxOYHwnPyd1blppbHNgWjxITDJsdEROY3Y1NjZpNTc8Q1RMU3ZTNicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl' - const liao = {"bank":"4833160230060672","cvc":"04/26","date":"722","name":"Zackary Wais","address":"1200LakeshoreaveApt8G","city":"Oakland","postalCode":"94606","nation":"US"} + const liao = {"bank":"4833160230060672","cvc":"727","date":"04/26","name":"Zackary Wais","address":"1200LakeshoreaveApt8G","city":"Oakland","postalCode":"94606","nation":"US"} const user = 'neletegcongder@mail.com' const { page, browser } = await browserAndPage() - await page.goto(url) + await page.goto(url, { waitUntil: 'domcontentloaded' }) await recharge({ browser, page, user, liao }) } diff --git a/package.json b/package.json index 5024fa0..40e397a 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "axios": "^1.4.0", "chrome-launcher": "^0.15.2", "fake-useragent": "^1.0.1", + "lodash": "^4.17.21", "mockjs": "^1.1.0", "naive-ui": "^2.34.4", "proxy-chain": "^2.3.0", diff --git a/src/App.vue b/src/App.vue index 0a15bce..13f0d16 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,21 +2,31 @@ import { ipcRenderer } from 'electron' import { NButton } from 'naive-ui' import { useClipboard, useLocalStorage } from '@vueuse/core' +import Business from './Business.vue' const input = useLocalStorage('accountInput', 'pollcribracacom@mail.com-----XAxeEgy34j') // const input = ref('126vdsjmgyanpgqrvb@ddmvp.icu----EOJ2NgPfS') // const input = ref('traceetakashi6274@gmail.com----kedaraditi0214----kedaraditi4760@hotmail.com') +const accountArr = computed(() => { + const text = input.value.split('\n').filter(Boolean).map(v => { + return v.split(/(——|-)+/).filter(v => !['-', '——'].includes(v)) + }) + return text +}) + const result = ref('') const liao = useLocalStorage('result', '') -const list = ref([]) -const localLis = useLocalStorage('list', list) -list.value = localLis.value +const list = useLocalStorage('list', [] as any[]) +const listInstock = ref([] as any[]) +listInstock.value = list.value.filter(v => v.instock === true) + +const filterInput = ref('') const renderList = computed(() => { // 成功的排在前面 - return list.value.sort((a, b) => { + let data = list.value.sort((a, b) => { if (a.type === 'success' && b.type !== 'success') { return -1 } else if (a.type !== 'success' && b.type === 'success') { @@ -24,9 +34,51 @@ const renderList = computed(() => { } else { return 0 } + }).filter(v => v.instock !== true) + + if (filterInput.value) { + data = data.filter(v => { + return v.user.startsWith(filterInput.value) + }) + } + + return data +}) + + +const remainingData = computed(() => { + return accountArr.value.filter((item, i) => { + const user = item[0] + const target = list.value.find((v) => v.user === user) + if (target && target.type === 'success') { + return false + } + return true }) }) +function copyRemaining() { + const text = remainingData.value.map(v => `${v[0]}----${v[1]}`).join('\n') + copyText(text) +} + +const remainingColumns = [{ + title: '序列', + render: (row, index) => h('span', undefined, index + 1), + width: 60 +}, +{ + title: '邮箱', + key: '0', + width: 300 +}, +{ + title: '密码', + key: '1', + width: 220 +}, +] + ipcRenderer.on('progress', (event, args) => { const { user } = args const target = list.value.find((item) => item.user === user) @@ -85,7 +137,7 @@ function gptResultHandler() { } const listSuccess = computed(() => { - return list.value.filter((item) => item.type === 'success') + return list.value.filter((item) => item.instock !== true && item.type === 'success') }) function copyAllSuccess() { @@ -103,8 +155,7 @@ function copyFailHandler() { } function clearLocalHandler() { - list.value = [] - localLis.value = [] + list.value = list.value.filter(v => v.instock === true) } const { copy } = useClipboard() @@ -124,6 +175,8 @@ function applicationResult() { ipcRenderer.invoke('gpt-batch-4.0-result', { text: input.value }) } +const showBusiness = ref(false) + const columns = [ { title: '序列', @@ -173,6 +226,12 @@ const columns = [ ? copyText(`${row.user}\n${row.result}`)}>复制链接 : null } + + {row.type === 'success' + ? row.instock = true}>标记入库 + : null + } + {row.ident === 'poe-link' && row.type !== 'success' && !row.loading ? getLink(`${row.user}----${row.pass}----${row.auxiliary}`)}>再次提链 : null @@ -190,13 +249,52 @@ const columns = [ } ] -function getLiao() { - let liaoObj +const liaoColumns = [ + { + key: 'bank', + title: '银行' + }, + { + key: 'cvc', + title: 'cvc' + }, + { + key: 'date', + title: '日期' + }, + { + key: 'name', + title: '名字' + }, + { + key: 'address', + title: '地址' + }, + { + key: 'city', + title: '城市' + }, + { + key: 'postalCode', + title: '邮政编码' + }, + { + key: 'nation', + title: '国家' + } +] + +const liaoData = computed(() => { if (liao.value) { const [_1, bank, cvc, cardExpiry, name, address, city, _2, postalCode, nation] = liao.value.split('|').map(v => v.trim()) - liaoObj = { bank, cvc, date: cardExpiry, name, address, city, postalCode, nation } - copy(JSON.stringify(liaoObj)) + return { bank, cvc, date: cardExpiry, name, address, city, postalCode, nation } } + return {} +}) + +function getLiao() { + let liaoObj = liaoData.value + copy(JSON.stringify(liaoObj)) return liaoObj } @@ -217,14 +315,16 @@ function handler(proxyType, name) {