接入到chromeApi当中

This commit is contained in:
aixianling
2024-04-22 18:07:55 +08:00
parent f7af9b6b25
commit 845ceae3cd
3 changed files with 84 additions and 47 deletions

View File

@@ -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) {

View File

@@ -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)
})
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)
})
}

View File

@@ -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();