diff --git a/src/api/chromeApi.js b/src/api/chromeApi.js index 0e1611f..a625c18 100644 --- a/src/api/chromeApi.js +++ b/src/api/chromeApi.js @@ -24,6 +24,23 @@ export async function sendChromeAPIMessage(message) { }) } +/** + * 向Chrome发送消息 + * @param message 消息 + */ +export async function sendTemuAPIMessage(message) { + message.type = 'temuApi' + message.url = "https://www.temu.com/" + message.url; + message.anti = message.anti || false + if (message.anti) { + message.anti = await genAnti.a() + } + return new Promise((resolve) => { + // @ts-ignore + chrome.runtime.sendMessage(message, resolve) + }) +} + /** * 向Chrome发送消息 * @param message 消息 diff --git a/src/entry/background.js b/src/entry/background.js index 99a2946..516d21c 100644 --- a/src/entry/background.js +++ b/src/entry/background.js @@ -24,6 +24,25 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { resolve(res.json()); }); }).then(sendResponse); + } else if (request.type == 'temuApi') { + new Promise((resolve) => { + let headers = {}; + if (request.anti) { + headers["Anti-Content"] = request.anti + } + headers['Content-Type'] = 'application/json'; + headers.cookie = getTemuCookie(); + Promise.resolve().then(() => fetch(request.url, { + 'headers': headers, + 'method': 'POST', + 'referrerPolicy': 'no-referrer', + 'credentials': 'include', + 'body': JSON.stringify(request.data), + 'mode': 'cors' + })).then((res) => { + resolve(res.json()); + }); + }).then(sendResponse); } else if (request.type == 'temu') { new Promise((resolve) => { let headers = {}; diff --git a/src/router/index.js b/src/router/index.js index 030e335..9b6d477 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -56,17 +56,28 @@ const router = new VueRouter({ name: 'copyProduct', component: () => import('../view/product/CopyProduct.vue') }, - { - path: 'niubiCopy', - name: 'niubiCopy', - component: () => import('../view/product/NiubiCopy.vue') - }, { path: 'reducePrice', name: 'reducePrice', component: () => import('../view/product/ReducePrice.vue') }, + { + path: 'niubiCopy', + name: 'niubiCopy', + component: () => import('../view/selection/NiubiCopy.vue') + }, + { + path: 'storeTrack', + name: 'storeTrack', + component: () => import('../view/selection/storetrack/Index.vue') + }, + { + path: 'keywordTrack', + name: 'keywordTrack', + component: () => import('../view/selection/KeywordTrack.vue') + }, + { path: 'message', name: 'message', diff --git a/src/view/Home.vue b/src/view/Home.vue index bad5f81..66d20a2 100644 --- a/src/view/Home.vue +++ b/src/view/Home.vue @@ -72,6 +72,8 @@ 选品采集 智能复制 + 店铺跟踪 + 关键字跟踪 diff --git a/src/view/selection/KeywordTrack.vue b/src/view/selection/KeywordTrack.vue new file mode 100644 index 0000000..93b7ebf --- /dev/null +++ b/src/view/selection/KeywordTrack.vue @@ -0,0 +1,340 @@ + + + + + diff --git a/src/view/product/NiubiCopy.vue b/src/view/selection/NiubiCopy.vue similarity index 100% rename from src/view/product/NiubiCopy.vue rename to src/view/selection/NiubiCopy.vue diff --git a/src/view/selection/StoreTrack.vue b/src/view/selection/StoreTrack.vue new file mode 100644 index 0000000..97014d3 --- /dev/null +++ b/src/view/selection/StoreTrack.vue @@ -0,0 +1,236 @@ + + + + + diff --git a/src/view/selection/storetrack/Index.vue b/src/view/selection/storetrack/Index.vue new file mode 100644 index 0000000..ba93a2c --- /dev/null +++ b/src/view/selection/storetrack/Index.vue @@ -0,0 +1,57 @@ + + + + + + diff --git a/src/view/selection/storetrack/components/Detail.vue b/src/view/selection/storetrack/components/Detail.vue new file mode 100644 index 0000000..da94301 --- /dev/null +++ b/src/view/selection/storetrack/components/Detail.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/view/selection/storetrack/components/List.vue b/src/view/selection/storetrack/components/List.vue new file mode 100644 index 0000000..3b3cedb --- /dev/null +++ b/src/view/selection/storetrack/components/List.vue @@ -0,0 +1,264 @@ + + + + +