fix hlk
This commit is contained in:
parent
b9c7b52a4d
commit
82414ef213
6959
indexedDB.json
6959
indexedDB.json
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
176
sethlk.spec.js
176
sethlk.spec.js
@ -1,5 +1,5 @@
|
||||
import puppeteer from 'puppeteer';
|
||||
import { read, readFileSync } from 'fs';
|
||||
import { readFileSync } from 'fs';
|
||||
|
||||
(async () => {
|
||||
// 读取 JSON 文件
|
||||
@ -21,130 +21,90 @@ import { read, readFileSync } from 'fs';
|
||||
}, localStorageData);
|
||||
console.log('set localStorage success');
|
||||
|
||||
// const cookie = JSON.parse(readFileSync('cookie.json', 'utf8'));
|
||||
// await page.setCookie(...cookie);
|
||||
// console.log('cookie', cookie);
|
||||
|
||||
// console.log(JSON.stringify(jsonData, null, 2));
|
||||
|
||||
page.on('console', (msg) => {
|
||||
for (let i = 0; i < msg.args().length; ++i) {
|
||||
console.log(`${msg.args()[i]}`);
|
||||
}
|
||||
});
|
||||
|
||||
// await page.evaluate((jsonData) => {
|
||||
// // 打开 IndexedDB 数据库
|
||||
// const openRequest = indexedDB.open('hlk_touch_test_14920', 2);
|
||||
|
||||
// // 处理数据库版本升级
|
||||
// openRequest.onupgradeneeded = (event) => {
|
||||
// const db = event.target.result;
|
||||
// // 创建对象存储,如果不存在的话
|
||||
// if (!db.objectStoreNames.contains('keyvaluepairs')) {
|
||||
// db.createObjectStore('keyvaluepairs');
|
||||
// }
|
||||
// if (!db.objectStoreNames.contains('local-forage-detect-blob-support')) {
|
||||
// db.createObjectStore('local-forage-detect-blob-support');
|
||||
// }
|
||||
// };
|
||||
|
||||
// openRequest.onsuccess = (event) => {
|
||||
// const db = event.target.result;
|
||||
// const transaction = db.transaction(['keyvaluepairs'], 'readwrite');
|
||||
// const objectStore = transaction.objectStore('keyvaluepairs'); // 使用硬编码的存储名
|
||||
// console.log(jsonData[0].value);
|
||||
|
||||
// console.log('jsonData.length', jsonData.length);
|
||||
|
||||
// for (let i = 0; i < jsonData.length; i++) {
|
||||
// const addObject = objectStore.put(jsonData[i].value, jsonData[i].key);
|
||||
// addObject.onsuccess = (event) => {
|
||||
// console.log('数据添加成功');
|
||||
// };
|
||||
// addObject.onerror = (event) => {
|
||||
// console.error('数据添加失败:', event.target.error);
|
||||
// };
|
||||
// }
|
||||
|
||||
// // 事务错误处理
|
||||
// transaction.onerror = (event) => {
|
||||
// console.error('事务失败:', event.target.error);
|
||||
// };
|
||||
// };
|
||||
|
||||
// // 错误处理
|
||||
// openRequest.onerror = (event) => {
|
||||
// console.error('数据库打开失败:', event.target.error);
|
||||
// };
|
||||
// }, jsonData); // 将 jsonData 传递到浏览器上下文中
|
||||
|
||||
await page.evaluate((jsonData) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 打开 IndexedDB 数据库
|
||||
const openRequest = indexedDB.open('hlk_touch_test_14920', 2);
|
||||
// 使用 async 函数来处理异步操作
|
||||
const processDatabase = async (database) => {
|
||||
try {
|
||||
// 打开 IndexedDB 数据库
|
||||
const openRequest = indexedDB.open(database.databaseName, 2);
|
||||
|
||||
// 处理数据库版本升级
|
||||
openRequest.onupgradeneeded = (event) => {
|
||||
const db = event.target.result;
|
||||
// 创建对象存储,如果不存在的话
|
||||
if (!db.objectStoreNames.contains('keyvaluepairs')) {
|
||||
db.createObjectStore('keyvaluepairs');
|
||||
}
|
||||
if (!db.objectStoreNames.contains('local-forage-detect-blob-support')) {
|
||||
db.createObjectStore('local-forage-detect-blob-support');
|
||||
}
|
||||
};
|
||||
|
||||
openRequest.onsuccess = (event) => {
|
||||
const db = event.target.result;
|
||||
const transaction = db.transaction(['keyvaluepairs'], 'readwrite');
|
||||
const objectStore = transaction.objectStore('keyvaluepairs'); // 使用硬编码的存储名
|
||||
console.log(jsonData[0].value);
|
||||
|
||||
console.log('jsonData.length', jsonData.length);
|
||||
|
||||
let completedOperations = 0;
|
||||
const totalOperations = jsonData.length;
|
||||
|
||||
for (let i = 0; i < jsonData.length; i++) {
|
||||
const addObject = objectStore.put(jsonData[i].value, jsonData[i].key);
|
||||
|
||||
addObject.onsuccess = () => {
|
||||
console.log('数据添加成功', jsonData[i].key);
|
||||
completedOperations++;
|
||||
// 如果所有操作完成,调用 resolve
|
||||
if (completedOperations === totalOperations) {
|
||||
resolve('所有数据写入完成');
|
||||
// 处理数据库版本升级
|
||||
openRequest.onupgradeneeded = (event) => {
|
||||
const db = event.target.result;
|
||||
// 创建对象存储,如果不存在的话
|
||||
if (!db.objectStoreNames.contains('keyvaluepairs')) {
|
||||
db.createObjectStore('keyvaluepairs');
|
||||
}
|
||||
if (!db.objectStoreNames.contains('local-forage-detect-blob-support')) {
|
||||
db.createObjectStore('local-forage-detect-blob-support');
|
||||
}
|
||||
};
|
||||
|
||||
addObject.onerror = (event) => {
|
||||
console.error('数据添加失败:', event.target.error);
|
||||
reject('数据添加失败');
|
||||
// 处理数据库打开成功
|
||||
openRequest.onsuccess = async (event) => {
|
||||
const db = event.target.result;
|
||||
const table = database.data;
|
||||
const transaction = db.transaction(['keyvaluepairs'], 'readwrite');
|
||||
const objectStore = transaction.objectStore('keyvaluepairs'); // 使用硬编码的存储名
|
||||
console.log(table.value);
|
||||
|
||||
let completedOperations = 0;
|
||||
const totalOperations = table.length;
|
||||
|
||||
// 使用 Promise.all 来确保所有的写入操作完成
|
||||
const writeOperations = table.map((item, index) => {
|
||||
return new Promise((innerResolve, innerReject) => {
|
||||
const addObject = objectStore.put(item.value, item.key);
|
||||
addObject.onsuccess = () => {
|
||||
console.log('数据添加成功', item.key);
|
||||
completedOperations++;
|
||||
// 如果所有操作完成,调用 resolve
|
||||
if (completedOperations === totalOperations) {
|
||||
innerResolve('数据写入成功');
|
||||
}
|
||||
};
|
||||
addObject.onerror = (event) => {
|
||||
console.error('数据添加失败:', event.target.error);
|
||||
innerReject('数据添加失败');
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
// 等待所有写入操作完成
|
||||
try {
|
||||
await Promise.all(writeOperations);
|
||||
console.log('所有数据写入完成');
|
||||
resolve('所有数据写入完成');
|
||||
} catch (error) {
|
||||
reject('数据写入失败');
|
||||
}
|
||||
};
|
||||
|
||||
// 错误处理
|
||||
openRequest.onerror = (event) => {
|
||||
console.error('数据库打开失败:', event.target.error);
|
||||
reject('数据库打开失败');
|
||||
};
|
||||
} catch (error) {
|
||||
reject('数据库操作失败: ' + error);
|
||||
}
|
||||
|
||||
// 事务错误处理
|
||||
transaction.onerror = (event) => {
|
||||
console.error('事务失败:', event.target.error);
|
||||
reject('事务失败');
|
||||
};
|
||||
};
|
||||
|
||||
// 错误处理
|
||||
openRequest.onerror = (event) => {
|
||||
console.error('数据库打开失败:', event.target.error);
|
||||
reject('数据库打开失败');
|
||||
};
|
||||
// 遍历所有数据库
|
||||
Promise.all(jsonData.map((database) => processDatabase(database)))
|
||||
.then(() => resolve('所有数据库操作完成'))
|
||||
.catch((error) => reject('操作失败: ' + error));
|
||||
});
|
||||
}, jsonData); // 将 jsonData 传递到浏览器上下文中
|
||||
|
||||
console.log('end');
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 2000));
|
||||
|
||||
await page.goto('https://hlk.meiguanjia.net');
|
||||
|
||||
// await
|
||||
|
||||
// await browser.close();
|
||||
// await browser.close();
|
||||
})();
|
||||
|
||||
@ -62,47 +62,58 @@ import { resolve } from 'path';
|
||||
|
||||
// 获取浏览器中的 IndexedDB 数据
|
||||
const result = await page.evaluate(async () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = indexedDB.open('hlk_touch_test_14920');
|
||||
const databases = await indexedDB.databases();
|
||||
const allData = [];
|
||||
|
||||
request.onsuccess = (event) => {
|
||||
const db = event.target.result;
|
||||
const transaction = db.transaction(db.objectStoreNames, 'readonly');
|
||||
for (const db of databases) {
|
||||
const databaseName = db.name;
|
||||
|
||||
const objectStore = transaction.objectStore(db.objectStoreNames[0]);
|
||||
const cursorRequest = objectStore.openCursor();
|
||||
// 打开数据库
|
||||
const request = indexedDB.open(databaseName);
|
||||
|
||||
const allData = [];
|
||||
cursorRequest.onsuccess = (event) => {
|
||||
const cursor = event.target.result;
|
||||
if (cursor) {
|
||||
// console.log(cursor.key);
|
||||
// console.log(JSON.stringify(value));
|
||||
const key = cursor.key;
|
||||
const value = cursor.value;
|
||||
const databaseData = await new Promise((resolve, reject) => {
|
||||
request.onsuccess = (event) => {
|
||||
const db = event.target.result;
|
||||
const transaction = db.transaction(db.objectStoreNames, 'readonly');
|
||||
const objectStore = transaction.objectStore(db.objectStoreNames[0]);
|
||||
const cursorRequest = objectStore.openCursor();
|
||||
|
||||
allData.push({ key, value });
|
||||
const storeData = [];
|
||||
|
||||
cursor.continue();
|
||||
} else {
|
||||
resolve(allData);
|
||||
}
|
||||
cursorRequest.onsuccess = (event) => {
|
||||
const cursor = event.target.result;
|
||||
if (cursor) {
|
||||
storeData.push({ key: cursor.key, value: cursor.value });
|
||||
cursor.continue();
|
||||
} else {
|
||||
resolve(storeData); // 执行 resolve,返回数据
|
||||
}
|
||||
};
|
||||
|
||||
cursorRequest.onerror = (event) => {
|
||||
reject(event.target.error); // 发生错误时 reject
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
request.onerror = (event) => {
|
||||
reject(event.target.error);
|
||||
};
|
||||
});
|
||||
request.onerror = (event) => {
|
||||
reject(event.target.error); // 发生错误时 reject
|
||||
};
|
||||
});
|
||||
|
||||
// 将数据库数据存入 allData
|
||||
allData.push({
|
||||
databaseName,
|
||||
data: databaseData,
|
||||
});
|
||||
}
|
||||
|
||||
return allData;
|
||||
});
|
||||
// console.log(result);
|
||||
// const cookie = await page.cookies();
|
||||
// fs.writeFileSync('./cookie.json', JSON.stringify(cookie));
|
||||
const localStorageData = await page.evaluate(() => {
|
||||
return JSON.stringify(localStorage); // 将 localStorage 转换为对象
|
||||
});
|
||||
fs.writeFileSync('./localStorage.json', localStorageData);
|
||||
fs.writeFileSync('./indexedDB.json', JSON.stringify(result));
|
||||
fs.writeFileSync('./localStorage.json', localStorageData);
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user