diff --git a/src/api/aliExpress.js b/src/api/aliExpress.js index be83829..2383a70 100644 --- a/src/api/aliExpress.js +++ b/src/api/aliExpress.js @@ -6,7 +6,7 @@ * @param formData formData中的data * @returns {*} */ -export const getSign = (token, appKey, t, formData) => { +export const getSign = (token, appKey = "12574478", t, formData) => { return function (e) { function t(e, t) { diff --git a/src/api/chromeApi.js b/src/api/chromeApi.js index d79c3d2..6c01f49 100644 --- a/src/api/chromeApi.js +++ b/src/api/chromeApi.js @@ -6,24 +6,24 @@ import {genAnti} from "@/api/genAnti"; * @param message 消息 */ export async function sendChromeAPIMessage(message) { - message.type = 'api' - if (!message.url.startsWith('http')) { - message.url = "https://seller.kuajingmaihuo.com/" + message.url; + message.type = 'api' + if (!message.url.startsWith('http')) { + message.url = "https://seller.kuajingmaihuo.com/" + message.url; + } + message.anti = message.anti || false + if (message.needMallId) { + // 如果参数中没有携带MallId,则从state中获取 + if (!message.mallId) { + message.mallId = store.state.mallId; } - message.anti = message.anti || false - if (message.needMallId) { - // 如果参数中没有携带MallId,则从state中获取 - if (!message.mallId) { - message.mallId = store.state.mallId; - } - } - if (message.anti) { - message.anti = await genAnti.a() - } - return new Promise((resolve) => { - // @ts-ignore - chrome.runtime.sendMessage(message, resolve) - }) + } + if (message.anti) { + message.anti = await genAnti.a() + } + return new Promise((resolve) => { + // @ts-ignore + chrome.runtime.sendMessage(message, resolve) + }) } /** @@ -31,17 +31,17 @@ export async function sendChromeAPIMessage(message) { * @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() - message.data.anti_content = message.anti - } - return new Promise((resolve) => { - // @ts-ignore - chrome.runtime.sendMessage(message, resolve) - }) + message.type = 'temuApi' + message.url = "https://www.temu.com/" + message.url; + message.anti = message.anti || false + if (message.anti) { + message.anti = await genAnti.a() + message.data.anti_content = message.anti + } + return new Promise((resolve) => { + // @ts-ignore + chrome.runtime.sendMessage(message, resolve) + }) } /** @@ -49,10 +49,10 @@ export async function sendTemuAPIMessage(message) { * @param message 消息 */ export async function sendChromeWebReqMessage(message) { - return new Promise((resolve) => { - // @ts-ignore - chrome.runtime.sendMessage(message, resolve) - }) + return new Promise((resolve) => { + // @ts-ignore + chrome.runtime.sendMessage(message, resolve) + }) } /** @@ -60,12 +60,12 @@ export async function sendChromeWebReqMessage(message) { * @param message 消息 */ export async function sendSheinAPIMessage(message) { - message.type = 'sheinApi' - message.url = "https://www.shein.com/" + message.url; - return new Promise((resolve) => { - // @ts-ignore - chrome.runtime.sendMessage(message, resolve) - }) + message.type = 'sheinApi' + message.url = "https://www.shein.com/" + message.url; + return new Promise((resolve) => { + // @ts-ignore + chrome.runtime.sendMessage(message, resolve) + }) } /** @@ -73,9 +73,20 @@ export async function sendSheinAPIMessage(message) { * @param message 消息 */ export function sendChromeNotification(message) { - message.type = 'notify' - return new Promise((resolve) => { - // @ts-ignore - chrome.runtime.sendMessage(message, resolve) - }) -} \ No newline at end of file + message.type = 'notify' + return new Promise((resolve) => { + // @ts-ignore + chrome.runtime.sendMessage(message, resolve) + }) +} + +/** + * 向Chrome发送消息 + * @param message 消息 + */ +export function sendAliexpressAPIMessage(message) { + message.type = 'aliexpress' + return new Promise((resolve) => { + chrome.runtime.sendMessage(message, resolve) + }) +} diff --git a/src/entry/background.js b/src/entry/background.js index 0c0146b..80ac8ef 100644 --- a/src/entry/background.js +++ b/src/entry/background.js @@ -2,6 +2,8 @@ 利用chrome的fetch来避免跨域 **/ +import {getSign} from "@/api/aliExpress"; + /** * 根据图片URL获取Blob对象 * @param imageUrl @@ -23,6 +25,23 @@ function getImageBlob(imageUrl) { }); } +/** + * 将cookie字符串转换为对象 + * @param cookieString + * @returns {{}} + */ +function cookie2Obj(cookieString) { + const cookieArray = cookieString.split('; '); + const cookieObj = {}; + + for (let i = 0; i < cookieArray.length; i++) { + const [key, value] = cookieArray[i].split('='); + cookieObj[key] = value; + } + + return cookieObj; +} + chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.type == 'api') { let headers = {}, data; @@ -111,8 +130,15 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { let headers = {}; headers['Content-Type'] = 'text/html'; headers.cookie = getAliexpressCookie(); - Promise.resolve().then(() => fetch(request.url, { - 'headers': headers, 'method': 'GET', 'referrerPolicy': 'no-referrer', 'credentials': 'include', 'mode': 'cors' + const {_m_h5_c, _m_h5_tk} = cookie2Obj(headers.cookie) + const {appKey, t, formData} = request + const sign = getSign(_m_h5_c || _m_h5_tk, appKey, t, formData) + const url = new URL(request.url) + let params = new URLSearchParams(url.search); + params.append('sign', sign) + url.search = params.toString() + Promise.resolve().then(() => fetch(url.toString(), { + 'headers': headers, 'method': 'POST', 'referrerPolicy': 'no-referrer', 'credentials': 'include', 'mode': 'cors' })).then((res) => { // 创建了一个数据读取器 const reader = res.body.getReader();