diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4041396 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +server/node_modules/* +.env \ No newline at end of file diff --git a/mv2_simple_crx/src/actions/amazon.js b/mv2_simple_crx/src/actions/amazon.js index 64db60c..39689cb 100644 --- a/mv2_simple_crx/src/actions/amazon.js +++ b/mv2_simple_crx/src/actions/amazon.js @@ -86,7 +86,7 @@ export function injected_amazon_switch_language(params) { export function injected_amazon_search_list(params) { const start_url = params && params.url ? String(params.url) : location.href; - const category_keyword = params && params.category_keyword ? String(params.category_keyword).trim() : ''; + const category_keyword = params && params.category_keyword ? String(params.category_keyword).trim() : ''; const sort_by = params && params.sort_by ? String(params.sort_by).trim() : ''; function pick_number(text) { @@ -106,15 +106,15 @@ export function injected_amazon_search_list(params) { if (mm) return Math.round(parseFloat(mm[1]) * 1000000); const digits = raw.replace(/[^\d]/g, ''); return digits ? Number(digits) : null; - } + } - function abs_url(href) { - try { - return new URL(href, location.origin).toString(); - } catch (_) { - return href; - } - } + function abs_url(href) { + try { + return new URL(href, location.origin).toString(); + } catch (_) { + return href; + } + } function parse_asin_from_url(url) { if (!url || typeof url !== 'string') return null; @@ -161,20 +161,20 @@ export function injected_amazon_search_list(params) { const n = pick_int(review_count_text); return Number.isFinite(n) ? n : null; })(); - items.push({ + items.push({ index: idx + 1, asin: asin || parse_asin_from_url(item_url), - title, + title, url: item_url, - price, + price, rating, rating_text, review_count, review_count_text, - }); - }); - return items; - } + }); + }); + return items; + } function pick_next_url() { const a = document.querySelector('a.s-pagination-next'); @@ -191,7 +191,7 @@ export function injected_amazon_search_list(params) { return { start_url, href: location.href, - category_keyword, + category_keyword, sort_by, total: items.length, items, @@ -273,18 +273,90 @@ export function injected_amazon_product_detail() { if (t) bullets.push(t); }); - const variants = {}; - document.querySelectorAll('[id^="variation_"]').forEach((block) => { - const key = block.id.replace(/^variation_/, '') || block.id; - const sel = - block.querySelector('.selection') || - block.querySelector('.a-button-selected .a-button-text') || - block.querySelector('[class*="dropdown"]'); - if (sel) { - const v = norm(sel.textContent); - if (v) variants[key] = v; + /** 变体 id 后缀是否为颜色 / 尺寸(仅提取这两项,不收集其它维度) */ + function is_sku_color_key(k) { + const x = String(k).toLowerCase(); + return x === 'color' || x === 'color_name' || x.endsWith('_color_name'); + } + function is_sku_size_key(k) { + const x = String(k).toLowerCase(); + return x === 'size' || x === 'size_name' || x.endsWith('_size_name'); + } + + /** 变体维度:颜色 / 尺寸 各为选项列表 */ + const sku = { color: [], size: [] }; + + const twister_plus_root = document.querySelector('#twister-plus-desktop-twister-container'); + + if (twister_plus_root) { + const color_row = twister_plus_root.querySelector('#inline-twister-row-color_name'); + if (color_row) { + const seen_c = new Set(); + color_row.querySelectorAll('li').forEach((li) => { + const img = li.querySelector('img[alt]'); + if (!img) return; + const v = norm(img.getAttribute('alt')); + if (v && !seen_c.has(v)) { + seen_c.add(v); + sku.color.push(v); + } + }); } - }); + if (!sku.color.length) { + const dim = twister_plus_root.querySelector('#inline-twister-expanded-dimension-text-color_name'); + const v = dim && norm(dim.textContent); + if (v) sku.color.push(v); + } + const size_row = twister_plus_root.querySelector('#inline-twister-row-size_name'); + if (size_row) { + const seen_s = new Set(); + size_row.querySelectorAll('li').forEach((li) => { + const el = li.querySelector('.swatch-title-text-display, .swatch-title-text-single-line'); + const v = el ? norm(el.textContent) : null; + if (v && !seen_s.has(v)) { + seen_s.add(v); + sku.size.push(v); + } + }); + } + if (!sku.size.length) { + const dim = twister_plus_root.querySelector('#inline-twister-expanded-dimension-text-size_name'); + const v = dim && norm(dim.textContent); + if (v) sku.size.push(v); + } + } else { + let cur_color = null; + let cur_size = null; + document.querySelectorAll('[id^="variation_"]').forEach((block) => { + const key = block.id.replace(/^variation_/, '') || block.id; + if (!is_sku_color_key(key) && !is_sku_size_key(key)) return; + const sel = + block.querySelector('.selection') || + block.querySelector('.a-button-selected .a-button-text') || + block.querySelector('[class*="dropdown"]'); + if (!sel) return; + const v = norm(sel.textContent); + if (!v) return; + if (is_sku_color_key(key) && !cur_color) cur_color = v; + if (is_sku_size_key(key) && !cur_size) cur_size = v; + }); + document.querySelectorAll('div.inline-twister-row[id^="inline-twister-row-"]').forEach((row) => { + const id = row.id || ''; + const key = id.replace(/^inline-twister-row-/, '') || id; + if (!is_sku_color_key(key) && !is_sku_size_key(key)) return; + const selected = + row.querySelector('.a-button-selected .swatch-title-text-display') || + row.querySelector('.a-button-selected .a-button-text') || + row.querySelector('.a-button-selected'); + if (!selected) return; + const v = norm(selected.textContent); + if (!v) return; + if (is_sku_color_key(key) && !cur_color) cur_color = v; + if (is_sku_size_key(key) && !cur_size) cur_size = v; + }); + if (cur_color) sku.color.push(cur_color); + if (cur_size) sku.size.push(cur_size); + } let delivery_hint = null; const del = document.querySelector( @@ -292,11 +364,6 @@ export function injected_amazon_product_detail() { ); if (del) delivery_hint = norm(del.innerText).slice(0, 500); - let sku = null; - Object.keys(product_info).forEach((k) => { - if (/^sku$/i.test(k) || /item model|型号|part number|制造商型号/i.test(k)) sku = product_info[k]; - }); - const images = []; const seen_img = new Set(); function add_img(u) { @@ -338,7 +405,6 @@ export function injected_amazon_product_detail() { product_info, detail_extra_lines, bullets, - variants, delivery_hint, sku, images, @@ -492,8 +558,8 @@ export function amazon_search_list(data, sendResponse) { chrome.tabs.update(tab.id, { url: next_url, active: true }, () => { if (chrome.runtime.lastError) return reject_nav(new Error(chrome.runtime.lastError.message)); resolve_nav(true); - }); - }); + }); + }); await wait_tab_complete(tab.id); } const injected_result_list = await tab.execute_script( @@ -518,10 +584,10 @@ export function amazon_search_list(data, sendResponse) { total: unique_map.size, items: Array.from(unique_map.values()).slice(0, limit), }; - const result = { - code: 0, - status: true, - message: 'ok', + const result = { + code: 0, + status: true, + message: 'ok', data: { tab_id: tab.id, url, category_keyword, sort_by: sort_by || 'featured', limit, result: list_result }, }; send_action('amazon_search_list', result); @@ -610,7 +676,7 @@ export function amazon_set_language(data, sendResponse) { data: null, documentURI: AMAZON_HOME_FOR_LANG, }); - reject(err); + reject(err); } }); } @@ -686,7 +752,8 @@ export function amazon_product_detail(data, sendResponse) { return run_pdp_action(data && data.product_url, injected_amazon_product_detail, [], 'amazon_product_detail', sendResponse); } -amazon_product_detail.desc = 'Amazon 商品详情(标题、价格、品牌、SKU、要点、变体、配送摘要等)'; +amazon_product_detail.desc = + 'Amazon 商品详情(标题、价格、品牌、sku{color[],size[]}、要点、配送摘要等)'; amazon_product_detail.params = { product_url: { type: 'string', diff --git a/mv2_simple_crx/src/bridge/bridge.html b/mv2_simple_crx/src/bridge/bridge.html new file mode 100644 index 0000000..3599743 --- /dev/null +++ b/mv2_simple_crx/src/bridge/bridge.html @@ -0,0 +1,11 @@ + + + + + server_bridge + + + + + + diff --git a/mv2_simple_crx/src/bridge/bridge.js b/mv2_simple_crx/src/bridge/bridge.js new file mode 100644 index 0000000..54fd827 --- /dev/null +++ b/mv2_simple_crx/src/bridge/bridge.js @@ -0,0 +1,32 @@ +/** + * 服务端 Puppeteer 通过此页与 background 通讯(等同 UI 发 chrome.runtime.sendMessage) + * 页面内若需 Web Worker 做重计算,可在此 postMessage;当前直连 background 即可满足指令/结果 + */ +(function () { + function server_bridge_invoke(action, data) { + return new Promise(function (resolve, reject) { + if (!action) { + reject(new Error('缺少 action')); + return; + } + chrome.runtime.sendMessage({ action: action, data: data || {} }, function (res) { + var err = chrome.runtime.lastError; + if (err) { + reject(new Error(err.message)); + return; + } + if (!res) { + reject(new Error('background 无响应')); + return; + } + if (res.ok) { + resolve(res.data); + } else { + reject(new Error(res.error || 'action 失败')); + } + }); + }); + } + + window.server_bridge_invoke = server_bridge_invoke; +})(); diff --git a/server/.env.example b/server/.env.example new file mode 100644 index 0000000..c20f82d --- /dev/null +++ b/server/.env.example @@ -0,0 +1,13 @@ +# MySQL +MYSQL_HOST=127.0.0.1 +MYSQL_PORT=3306 +MYSQL_USER=root +MYSQL_PASSWORD= +MYSQL_DATABASE=ecom_crawl + +# 扩展目录(未打包,含 manifest.json) +CRX_SRC_PATH=d:/项目/电商抓取项目/mv2_simple_crx/src + +SERVER_PORT=38080 +ACTION_TIMEOUT_MS=300000 +PUPPETEER_HEADLESS=false diff --git a/server/app.js b/server/app.js new file mode 100644 index 0000000..b51f309 --- /dev/null +++ b/server/app.js @@ -0,0 +1,31 @@ +import dotenv from 'dotenv'; +import Koa from 'koa'; +import body_parser from 'koa-bodyparser'; + +import { sequelize } from './models/index.js'; +import { crawl_router } from './routes/crawl.js'; +import { schedule_task_router } from './routes/schedule_task.js'; +import { reload_all_schedules } from './services/schedule_loader.js'; + +dotenv.config(); + +const app = new Koa(); +app.use(body_parser({ jsonLimit: '10mb' })); + +app.use(crawl_router.routes()).use(crawl_router.allowedMethods()); +app.use(schedule_task_router.routes()).use(schedule_task_router.allowedMethods()); + +app.use(async (ctx) => { + ctx.status = 404; + ctx.body = { ok: false, error: 'not_found' }; +}); + +const port = Number(process.env.SERVER_PORT || 38080); + +await sequelize.authenticate(); +await sequelize.sync(); +await reload_all_schedules(); + +app.listen(port); +// eslint-disable-next-line no-console +console.log(`server listening on ${port}`); diff --git a/server/config/database.js b/server/config/database.js new file mode 100644 index 0000000..b1322b5 --- /dev/null +++ b/server/config/database.js @@ -0,0 +1,22 @@ +import dotenv from 'dotenv'; + +dotenv.config(); + +export function get_sequelize_options() { + return { + host: process.env.MYSQL_HOST || '127.0.0.1', + port: Number(process.env.MYSQL_PORT || 3306), + username: process.env.MYSQL_USER || 'root', + password: process.env.MYSQL_PASSWORD || '', + database: process.env.MYSQL_DATABASE || 'ecom_crawl', + dialect: 'mysql', + logging: false, + define: { + underscored: true, + timestamps: true, + createdAt: 'created_at', + updatedAt: 'updated_at' + }, + timezone: '+08:00' + }; +} diff --git a/server/models/crawl_run_record.js b/server/models/crawl_run_record.js new file mode 100644 index 0000000..ccbcb22 --- /dev/null +++ b/server/models/crawl_run_record.js @@ -0,0 +1,26 @@ +import { DataTypes } from 'sequelize'; + +export function define_crawl_run_record(sequelize) { + return sequelize.define( + 'crawl_run_record', + { + id: { type: DataTypes.BIGINT.UNSIGNED, primaryKey: true, autoIncrement: true }, + action_name: { type: DataTypes.STRING(128), allowNull: false }, + request_payload: { type: DataTypes.TEXT, allowNull: true, comment: 'JSON 请求体' }, + ok: { type: DataTypes.BOOLEAN, allowNull: false }, + result_payload: { type: DataTypes.TEXT('long'), allowNull: true, comment: 'JSON 结果' }, + error_message: { type: DataTypes.TEXT, allowNull: true }, + source: { + type: DataTypes.STRING(32), + allowNull: false, + defaultValue: 'api', + comment: 'api | cron' + }, + schedule_task_id: { type: DataTypes.BIGINT.UNSIGNED, allowNull: true } + }, + { + tableName: 'crawl_run_record', + indexes: [{ fields: ['action_name'] }, { fields: ['created_at'] }] + } + ); +} diff --git a/server/models/index.js b/server/models/index.js new file mode 100644 index 0000000..398a558 --- /dev/null +++ b/server/models/index.js @@ -0,0 +1,15 @@ +import { Sequelize } from 'sequelize'; +import { get_sequelize_options } from '../config/database.js'; +import { define_crawl_run_record } from './crawl_run_record.js'; +import { define_schedule_task } from './schedule_task.js'; + +const sequelize_options = get_sequelize_options(); +const { database, username, password, ...rest } = sequelize_options; + +export const sequelize = new Sequelize(database, username, password, rest); + +export const crawl_run_record = define_crawl_run_record(sequelize); +export const schedule_task = define_schedule_task(sequelize); + +schedule_task.hasMany(crawl_run_record, { foreignKey: 'schedule_task_id', as: 'records' }); +crawl_run_record.belongsTo(schedule_task, { foreignKey: 'schedule_task_id', as: 'schedule_task' }); diff --git a/server/models/schedule_task.js b/server/models/schedule_task.js new file mode 100644 index 0000000..67a839e --- /dev/null +++ b/server/models/schedule_task.js @@ -0,0 +1,19 @@ +import { DataTypes } from 'sequelize'; + +export function define_schedule_task(sequelize) { + return sequelize.define( + 'schedule_task', + { + id: { type: DataTypes.BIGINT.UNSIGNED, primaryKey: true, autoIncrement: true }, + name: { type: DataTypes.STRING(128), allowNull: false }, + cron_expression: { type: DataTypes.STRING(64), allowNull: false }, + action_name: { type: DataTypes.STRING(128), allowNull: false }, + payload_json: { type: DataTypes.TEXT, allowNull: true }, + enabled: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: true }, + last_run_at: { type: DataTypes.DATE, allowNull: true } + }, + { + tableName: 'schedule_task' + } + ); +} diff --git a/server/package-lock.json b/server/package-lock.json new file mode 100644 index 0000000..e863dcf --- /dev/null +++ b/server/package-lock.json @@ -0,0 +1,2461 @@ +{ + "name": "ecom_crawl_server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ecom_crawl_server", + "version": "1.0.0", + "dependencies": { + "@koa/router": "^12.0.1", + "dotenv": "^16.4.5", + "koa": "^2.15.3", + "koa-bodyparser": "^4.4.1", + "mysql2": "^3.11.0", + "node-cron": "^3.0.3", + "puppeteer": "^23.4.1", + "sequelize": "^6.37.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "license": "BSD-3-Clause" + }, + "node_modules/@koa/router": { + "version": "12.0.2", + "resolved": "https://registry.npmmirror.com/@koa/router/-/router-12.0.2.tgz", + "integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.3.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/@puppeteer/browsers/-/browsers-2.6.1.tgz", + "integrity": "sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.4.0", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmmirror.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/validator": { + "version": "13.15.10", + "resolved": "https://registry.npmmirror.com/@types/validator/-/validator-13.15.10.tgz", + "integrity": "sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==", + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmmirror.com/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmmirror.com/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmmirror.com/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.5.5", + "resolved": "https://registry.npmmirror.com/bare-fs/-/bare-fs-4.5.5.tgz", + "integrity": "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/bare-os/-/bare-os-3.8.0.tgz", + "integrity": "sha512-Dc9/SlwfxkXIGYhvMQNUtKaXCaGkZYGcd1vuNUUADVqzu4/vQfvnMkYYOUnt2VwQ2AqKr/8qAVFRtwETljgeFg==", + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/bare-stream/-/bare-stream-2.8.1.tgz", + "integrity": "sha512-bSeR8RfvbRwDpD7HWZvn8M3uYNDrk7m9DQjYOFkENZlXW8Ju/MPaqUPQq5LqJ3kyjEm07siTaAQ7wBKCU59oHg==", + "license": "Apache-2.0", + "dependencies": { + "streamx": "^2.21.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/basic-ftp/-/basic-ftp-5.2.0.tgz", + "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "license": "MIT", + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chromium-bidi": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/chromium-bidi/-/chromium-bidi-0.11.0.tgz", + "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/co-body": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/co-body/-/co-body-6.2.0.tgz", + "integrity": "sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==", + "license": "MIT", + "dependencies": { + "@hapi/bourne": "^3.0.0", + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "license": "MIT" + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1367902", + "resolved": "https://registry.npmmirror.com/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz", + "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==", + "license": "BSD-3-Clause" + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dottie": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/dottie/-/dottie-2.0.7.tgz", + "integrity": "sha512-7lAK2A0b3zZr3UC5aE69CPdCFR4RHW1o2Dr74TqFykxkUCBXSRJum/yPc7g8zRHJqWKomPLHwFLLoUnn8PXXRg==", + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "license": "MIT", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflation": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/inflation/-/inflation-2.1.0.tgz", + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmmirror.com/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ], + "license": "MIT" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa": { + "version": "2.16.4", + "resolved": "https://registry.npmmirror.com/koa/-/koa-2.16.4.tgz", + "integrity": "sha512-3An0GCLDSR34tsCO4H8Tef8Pp2ngtaZDAZnsWJYelqXUK5wyiHvGItgK/xcSkmHLSTn1Jcho1mRQs2ehRzvKKw==", + "license": "MIT", + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.9.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-bodyparser": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz", + "integrity": "sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==", + "license": "MIT", + "dependencies": { + "co-body": "^6.0.0", + "copy-to": "^2.0.1", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "license": "MIT" + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "license": "MIT", + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/lru.min": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/lru.min/-/lru.min-1.1.4.tgz", + "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.48", + "resolved": "https://registry.npmmirror.com/moment-timezone/-/moment-timezone-0.5.48.tgz", + "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==", + "license": "MIT", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mysql2": { + "version": "3.20.0", + "resolved": "https://registry.npmmirror.com/mysql2/-/mysql2-3.20.0.tgz", + "integrity": "sha512-eCLUs7BNbgA6nf/MZXsaBO1SfGs0LtLVrJD3WeWq+jPLDWkSufTD+aGMwykfUVPdZnblaUK1a8G/P63cl9FkKg==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.2", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.7.2", + "long": "^5.3.2", + "lru.min": "^1.1.4", + "named-placeholders": "^1.1.6", + "sql-escaper": "^1.3.3" + }, + "engines": { + "node": ">= 8.0" + }, + "peerDependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", + "license": "MIT", + "dependencies": { + "lru.min": "^1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-cron": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/node-cron/-/node-cron-3.0.3.tgz", + "integrity": "sha512-dOal67//nohNgYWb+nWmg5dkFdIwDm8EpeGYMekPMrngV3637lqnX0lbUcCtgibHTz6SEz7DAIjKvKDFYCnO1A==", + "license": "ISC", + "dependencies": { + "uuid": "8.3.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/pg-connection-string": { + "version": "2.12.0", + "resolved": "https://registry.npmmirror.com/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/puppeteer": { + "version": "23.11.1", + "resolved": "https://registry.npmmirror.com/puppeteer/-/puppeteer-23.11.1.tgz", + "integrity": "sha512-53uIX3KR5en8l7Vd8n5DUv90Ae9QDQsyIthaUFVzwV6yU750RjqRznEtNMBT20VthqAdemnJN+hxVdmMHKt7Zw==", + "deprecated": "< 24.15.0 is no longer supported", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.6.1", + "chromium-bidi": "0.11.0", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1367902", + "puppeteer-core": "23.11.1", + "typed-query-selector": "^2.12.0" + }, + "bin": { + "puppeteer": "lib/cjs/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "23.11.1", + "resolved": "https://registry.npmmirror.com/puppeteer-core/-/puppeteer-core-23.11.1.tgz", + "integrity": "sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==", + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.6.1", + "chromium-bidi": "0.11.0", + "debug": "^4.4.0", + "devtools-protocol": "0.0.1367902", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/retry-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/retry-as-promised/-/retry-as-promised-7.1.1.tgz", + "integrity": "sha512-hMD7odLOt3LkTjcif8aRZqi/hybjpLNgSk5oF5FCowfCjok6LukpN2bDX7R5wDmbgBQFn7YoBxSagmtXHaJYJw==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize": { + "version": "6.37.8", + "resolved": "https://registry.npmmirror.com/sequelize/-/sequelize-6.37.8.tgz", + "integrity": "sha512-HJ0IQFqcTsTiqbEgiuioYFMSD00TP6Cz7zoTti+zVVBwVe9fEhev9cH6WnM3XU31+ABS356durAb99ZuOthnKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.6", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.1", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.4", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.9.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmmirror.com/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sql-escaper": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/sql-escaper/-/sql-escaper-1.3.3.tgz", + "integrity": "sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=2.0.0", + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/mysqljs/sql-escaper?sponsor=1" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmmirror.com/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-fs": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/tar-fs/-/tar-fs-3.1.2.tgz", + "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.8", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-query-selector": { + "version": "2.12.1", + "resolved": "https://registry.npmmirror.com/typed-query-selector/-/typed-query-selector-2.12.1.tgz", + "integrity": "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==", + "license": "MIT" + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.15.26", + "resolved": "https://registry.npmmirror.com/validator/-/validator-13.15.26.tgz", + "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/ylru": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmmirror.com/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 0000000..834df29 --- /dev/null +++ b/server/package.json @@ -0,0 +1,20 @@ +{ + "name": "ecom_crawl_server", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "start": "node app.js", + "db_sync": "node scripts/db_sync.js" + }, + "dependencies": { + "@koa/router": "^12.0.1", + "dotenv": "^16.4.5", + "koa": "^2.15.3", + "koa-bodyparser": "^4.4.1", + "mysql2": "^3.11.0", + "node-cron": "^3.0.3", + "puppeteer": "^23.4.1", + "sequelize": "^6.37.3" + } +} diff --git a/server/routes/crawl.js b/server/routes/crawl.js new file mode 100644 index 0000000..29fc428 --- /dev/null +++ b/server/routes/crawl.js @@ -0,0 +1,26 @@ +import Router from '@koa/router'; +import { execute_action_and_record } from '../services/task_executor.js'; + +export const crawl_router = new Router(); + +crawl_router.post('/api/crawl/run_action', async (ctx) => { + const { action_name, action_payload } = ctx.request.body || {}; + + if (!action_name) { + ctx.status = 400; + ctx.body = { ok: false, error: '缺少 action_name' }; + return; + } + + try { + const data = await execute_action_and_record({ + action_name, + action_payload: action_payload || {}, + source: 'api' + }); + ctx.body = { ok: true, data }; + } catch (err) { + ctx.status = 500; + ctx.body = { ok: false, error: (err && err.message) || String(err) }; + } +}); diff --git a/server/routes/schedule_task.js b/server/routes/schedule_task.js new file mode 100644 index 0000000..294b067 --- /dev/null +++ b/server/routes/schedule_task.js @@ -0,0 +1,73 @@ +import Router from '@koa/router'; +import { schedule_task } from '../models/index.js'; +import { safe_json_parse, safe_json_stringify } from '../services/json_utils.js'; + +export const schedule_task_router = new Router(); + +schedule_task_router.post('/api/schedule_task/create', async (ctx) => { + const { name, cron_expression, action_name, payload } = ctx.request.body || {}; + if (!name || !cron_expression || !action_name) { + ctx.status = 400; + ctx.body = { ok: false, error: '缺少 name/cron_expression/action_name' }; + return; + } + + const payload_json = payload ? safe_json_stringify(payload) : null; + const row = await schedule_task.create({ + name, + cron_expression, + action_name, + payload_json, + enabled: true + }); + + ctx.body = { ok: true, data: { id: row.id } }; +}); + +schedule_task_router.post('/api/schedule_task/list', async (ctx) => { + const rows = await schedule_task.findAll({ order: [['id', 'desc']] }); + ctx.body = { + ok: true, + data: rows.map((r) => ({ + id: r.id, + name: r.name, + cron_expression: r.cron_expression, + action_name: r.action_name, + payload: safe_json_parse(r.payload_json), + enabled: r.enabled, + last_run_at: r.last_run_at + })) + }; +}); + +schedule_task_router.post('/api/schedule_task/set_enabled', async (ctx) => { + const { id, enabled } = ctx.request.body || {}; + if (!id || typeof enabled !== 'boolean') { + ctx.status = 400; + ctx.body = { ok: false, error: '缺少 id/enabled(boolean)' }; + return; + } + + const row = await schedule_task.findByPk(id); + if (!row) { + ctx.status = 404; + ctx.body = { ok: false, error: '任务不存在' }; + return; + } + + row.enabled = enabled; + await row.save(); + ctx.body = { ok: true }; +}); + +schedule_task_router.post('/api/schedule_task/delete', async (ctx) => { + const { id } = ctx.request.body || {}; + if (!id) { + ctx.status = 400; + ctx.body = { ok: false, error: '缺少 id' }; + return; + } + + await schedule_task.destroy({ where: { id } }); + ctx.body = { ok: true }; +}); diff --git a/server/scripts/db_sync.js b/server/scripts/db_sync.js new file mode 100644 index 0000000..b4e4f27 --- /dev/null +++ b/server/scripts/db_sync.js @@ -0,0 +1,6 @@ +import { sequelize } from '../models/index.js'; + +await sequelize.sync({ alter: true }); +// eslint-disable-next-line no-console +console.log('sync ok'); +await sequelize.close(); diff --git a/server/services/cron_manager.js b/server/services/cron_manager.js new file mode 100644 index 0000000..1cd635c --- /dev/null +++ b/server/services/cron_manager.js @@ -0,0 +1,30 @@ +import cron from 'node-cron'; + +const task_id_to_cron_job = new Map(); + +export function stop_all_cron_jobs() { + for (const job of task_id_to_cron_job.values()) { + job.stop(); + } + task_id_to_cron_job.clear(); +} + +export function upsert_cron_job(schedule_task_id, cron_expression, on_tick) { + const existing = task_id_to_cron_job.get(schedule_task_id); + if (existing) { + existing.stop(); + task_id_to_cron_job.delete(schedule_task_id); + } + + const job = cron.schedule(cron_expression, on_tick, { scheduled: true }); + task_id_to_cron_job.set(schedule_task_id, job); +} + +export function remove_cron_job(schedule_task_id) { + const job = task_id_to_cron_job.get(schedule_task_id); + if (!job) { + return; + } + job.stop(); + task_id_to_cron_job.delete(schedule_task_id); +} diff --git a/server/services/json_utils.js b/server/services/json_utils.js new file mode 100644 index 0000000..9b0f70b --- /dev/null +++ b/server/services/json_utils.js @@ -0,0 +1,18 @@ +export function safe_json_stringify(value) { + try { + return JSON.stringify(value); + } catch (err) { + return JSON.stringify({ error: 'json_stringify_failed', message: String(err) }); + } +} + +export function safe_json_parse(text) { + if (text === null || text === undefined || text === '') { + return null; + } + try { + return JSON.parse(text); + } catch (err) { + return null; + } +} diff --git a/server/services/puppeteer_runner.js b/server/services/puppeteer_runner.js new file mode 100644 index 0000000..3948292 --- /dev/null +++ b/server/services/puppeteer_runner.js @@ -0,0 +1,102 @@ +import dotenv from 'dotenv'; +import path from 'node:path'; +import puppeteer from 'puppeteer'; + +dotenv.config(); + +let browser_singleton = null; + +function get_action_timeout_ms() { + return Number(process.env.ACTION_TIMEOUT_MS || 300000); +} + +function get_crx_src_path() { + const crx_src_path = process.env.CRX_SRC_PATH; + if (!crx_src_path) { + throw new Error('缺少环境变量 CRX_SRC_PATH'); + } + return crx_src_path; +} + +function get_extension_id_from_targets(targets) { + for (const target of targets) { + const url = target.url(); + if (!url) continue; + if (url.startsWith('chrome-extension://')) { + const match = url.match(/^chrome-extension:\/\/([^/]+)\//); + if (match && match[1]) return match[1]; + } + } + return null; +} + +export async function get_or_create_browser() { + if (browser_singleton) { + return browser_singleton; + } + + const extension_path = path.resolve(get_crx_src_path()); + const headless = String(process.env.PUPPETEER_HEADLESS || 'false') === 'true'; + + browser_singleton = await puppeteer.launch({ + headless, + args: [ + `--disable-extensions-except=${extension_path}`, + `--load-extension=${extension_path}`, + '--no-default-browser-check', + '--disable-popup-blocking', + '--disable-dev-shm-usage' + ] + }); + + return browser_singleton; +} + +export async function invoke_extension_action(action_name, action_payload) { + const browser = await get_or_create_browser(); + + const page = await browser.newPage(); + await page.goto('about:blank'); + + const targets = await browser.targets(); + const extension_id = get_extension_id_from_targets(targets); + if (!extension_id) { + await page.close(); + throw new Error('未找到扩展 extension_id(请确认 CRX_SRC_PATH 指向 src 且成功加载)'); + } + + const bridge_url = `chrome-extension://${extension_id}/bridge/bridge.html`; + await page.goto(bridge_url, { waitUntil: 'domcontentloaded' }); + + const timeout_ms = get_action_timeout_ms(); + const action_res = await page.evaluate( + async (action, payload, timeout) => { + function with_timeout(promise, timeout_ms_inner) { + return new Promise((resolve, reject) => { + const timer = setTimeout(() => reject(new Error('action_timeout')), timeout_ms_inner); + promise + .then((v) => { + clearTimeout(timer); + resolve(v); + }) + .catch((e) => { + clearTimeout(timer); + reject(e); + }); + }); + } + + if (!window.server_bridge_invoke) { + throw new Error('bridge 未注入 window.server_bridge_invoke'); + } + + return await with_timeout(window.server_bridge_invoke(action, payload), timeout); + }, + action_name, + action_payload || {}, + timeout_ms + ); + + await page.close(); + return action_res; +} diff --git a/server/services/schedule_loader.js b/server/services/schedule_loader.js new file mode 100644 index 0000000..787d72b --- /dev/null +++ b/server/services/schedule_loader.js @@ -0,0 +1,33 @@ +import { schedule_task } from '../models/index.js'; +import { safe_json_parse } from './json_utils.js'; +import { execute_action_and_record } from './task_executor.js'; +import { remove_cron_job, upsert_cron_job } from './cron_manager.js'; + +export async function reload_all_schedules() { + const rows = await schedule_task.findAll(); + + for (const row of rows) { + if (!row.enabled) { + remove_cron_job(row.id); + continue; + } + + upsert_cron_job(row.id, row.cron_expression, async () => { + try { + await schedule_task.update( + { last_run_at: new Date() }, + { where: { id: row.id } } + ); + + await execute_action_and_record({ + action_name: row.action_name, + action_payload: safe_json_parse(row.payload_json) || {}, + source: 'cron', + schedule_task_id: row.id + }); + } catch (err) { + // cron 执行失败已在 crawl_run_record 落库,避免重复抛出影响其它任务 + } + }); + } +} diff --git a/server/services/task_executor.js b/server/services/task_executor.js new file mode 100644 index 0000000..ae615b7 --- /dev/null +++ b/server/services/task_executor.js @@ -0,0 +1,39 @@ +import { crawl_run_record } from '../models/index.js'; +import { safe_json_stringify } from './json_utils.js'; +import { invoke_extension_action } from './puppeteer_runner.js'; + +export async function execute_action_and_record(params) { + const { + action_name, + action_payload, + source, + schedule_task_id + } = params; + + const request_payload = safe_json_stringify(action_payload || {}); + + let ok = false; + let result_payload = null; + let error_message = null; + + try { + const result = await invoke_extension_action(action_name, action_payload || {}); + ok = true; + result_payload = safe_json_stringify(result); + return result; + } catch (err) { + ok = false; + error_message = (err && err.message) || String(err); + throw err; + } finally { + await crawl_run_record.create({ + action_name, + request_payload, + ok, + result_payload, + error_message, + source, + schedule_task_id: schedule_task_id || null + }); + } +} diff --git a/执行计划.md b/执行计划.md index 2057b10..c078fd3 100644 --- a/执行计划.md +++ b/执行计划.md @@ -10,3 +10,1319 @@ |------|------|------| | `amazon_product_detail` | `product_url`(商品详情页完整链接,须含 `/dp/ASIN`) | 抓取标题、价格、品牌、SKU、要点、变体、配送摘要、主图等 | | `amazon_product_reviews` | `product_url`;可选 `limit`(默认 50,最大 100) | 抓取详情页「买家评论」区域已渲染的评论(`[data-hook=review]`),条数以页面实际展示为准 | + + +{ + "ac_badge": "亚马逊 精选", + "asin": "B0B56CHMSC", + "bestseller_hint": null, + "brand_line": "访问 Lifewit 品牌旗舰店", + "brand_store_url": null, + "bullets": [ + "保温:午餐包采用保温材料,保冷效果长达4.5小时。 此外,内部衬里采用食品级 PEVA 箔,因此您可以直接将食物放入袋子中,无需任何担心。 内置 2 毫米 EPE 泡沫为您的容器、食物和饮料提供很好的保护", + "大容量:尺寸 - 10 英寸 ( 25.4 厘米 ) × 6.7 英寸 ( 17 厘米 ) × 8 英寸 ( 20.3 厘米 )。 大人午餐盒容量为9升,容量大,可容纳12罐可乐(330毫升),或午餐如三明治、沙拉、零食、饮料、水果等。 适合办公室、工作、野餐、沙滩、旅行。", + "【防漏防水】男士午餐盒外部采用600D防水防污牛津布制成,经久耐用,防水,易清洗。 即使装满了水和冰块,也能够很好地容纳水果和饮料,不会渗漏。", + "【材质】保温便当袋的内衬采用PEVA箔制成,不易沾染热食物,不易融化。 高品质强力拉链将破碎的可能性降至最低。 非常适合您在办公室和野餐食物储存的需求。", + "【方便便携】保冷的午餐袋的盖子采用强力双向拉链,可将饭盒放入包中,垂直取出。 防止液体从容器外渗出和弄脏包内。 坚固的手柄和肩带让您轻松携带。 此外,正面和侧面的额外口袋可以容纳钥匙和耳塞等小物品" + ], + "delivery_hint": "配送, 预计4月13日星期一送达", + "detail_extra_lines": [], + "images": [ + "https://m.media-amazon.com/images/I/71tf1kD9PBL._AC_SY355_.jpg", + "https://m.media-amazon.com/images/I/71tf1kD9PBL._AC_SY450_.jpg", + "https://m.media-amazon.com/images/I/71tf1kD9PBL._AC_SX425_.jpg", + "https://m.media-amazon.com/images/I/71tf1kD9PBL._AC_SX466_.jpg", + "https://m.media-amazon.com/images/I/71tf1kD9PBL._AC_SX522_.jpg", + "https://m.media-amazon.com/images/I/71tf1kD9PBL._AC_SX569_.jpg", + "https://m.media-amazon.com/images/I/71tf1kD9PBL._AC_SX679_.jpg", + "https://m.media-amazon.com/images/I/419MEWckZ7L._AC_US100_.jpg", + "https://m.media-amazon.com/images/I/51K8FreJFLL._AC_US100_.jpg", + "https://m.media-amazon.com/images/I/41ZzjBnOIsL._AC_US100_.jpg", + "https://m.media-amazon.com/images/I/51RgeRAqnRL._AC_US100_.jpg", + "https://m.media-amazon.com/images/I/519AKkeYVCL._AC_US100_.jpg", + "https://m.media-amazon.com/images/I/51A9Vqde6LL._AC_US100_.jpg", + "https://m.media-amazon.com/images/I/51k64GfCgQL.SS125_PKplay-button-mb-image-grid-small_.jpg", + "https://m.media-amazon.com/images/S/sash//pLB3SkYb3bHZzHQ.svg", + "https://m.media-amazon.com/images/S/sash//swRPyHOrgnz358_.svg" + ], + "main_image": "https://m.media-amazon.com/images/I/71tf1kD9PBL._AC_SY355_.jpg", + "price": "US$7.99", + "product_info": { + "ASIN": "B0B56CHMSC", + "主题": "食品", + "亚马逊热销商品排名": "厨房和餐厅商品里排第11名 (查看厨房和餐厅商品销售排行榜) 可重复使用午餐袋商品里排第1名", + "产品保养说明": "仅限手洗", + "产品款式": "摩登", + "产品的推荐用途": "办公室、野餐、旅行、露营", + "产品类型名称": "可重复使用的午餐袋", + "制造商": "Lifewit", + "制造年份": "2022", + "包装内数量": "1", + "品牌": "Lifewit", + "商品尺寸": "17深度 x 25.4宽度 x 20.3高度 厘米", + "商品尺寸 长 x 宽 x 高": "17深度 x 25.4宽度 x 20.3高度 厘米", + "商品形状": "矩形", + "商品组成信息": "主隔层,侧口袋", + "商品质地": "包", + "商品重量": "300 克", + "图案": "纯色", + "容量": "9 升", + "年龄范围说明": "成人", + "年龄范围(描述)": "成人", + "建议用法": "办公室、野餐、旅行、露营", + "材质": "聚酯纤维", + "材质类型": "聚酯纤维", + "特殊功能": "可调节肩带, 防漏, 隔热", + "用户评分": "4.6 4.6 颗星,最多 5 颗星 (56,444) var dpAcrHasRegisteredArcLinkClickAction; P.when('A', 'ready').execute(function(A) { if (dpAcrHasRegisteredArcLinkClickAction !== true) { dpAcrHasRegisteredArcLinkClickAction = true; A.declarative( 'acrLink-click-metrics', 'click', { \"allowLinkDefault\": true }, function (event) { if (window.ue) { ue.count(\"acrLinkClickCount\", (ue.count(\"acrLinkClickCount\") || 0) + 1); } } ); } }); P.when('A', 'cf').execute(function(A) { A.declarative('acrStarsLink-click-metrics', 'click', { \"allowLinkDefault\" : true }, function(event){ if(window.ue) { ue.count(\"acrStarsLinkWithPopov", + "销售商保修": "终身质保,从购买之日起一年。", + "闭合类型": "拉链", + "隔室数量": "1", + "颜色": "黑色" + }, + "rating_stars": "4.6 颗星,最多 5 颗星", + "review_count_text": "(56,444)", + "sku": "B0B56CHMSC|黑色|M", + "sku_color": "黑色", + "sku_size": "M", + "social_proof": "过去一个月有3万+顾客购买", + "stage": "detail", + "sustainability_hint": "可持续发展特性", + "title": "Lifewit 中号午餐包保温午餐盒柔软冷却手提包适合成年男士女士,黑色 12 罐(9 升)", + "url": "https://www.amazon.com/-/zh/dp/B0B56CHMSC" +} 详情 + + + +{ + "stage": "list", + "limit": 100, + "total": 144, + "items": [ + { + "asin": "B095YC5M82", + "index": 1, + "price": "US$19.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 22, + "review_count_text": "(2.2万)", + "title": "MIYCOO 男女午餐袋和午餐盒,双层防漏保温柔软大号成人露营冷藏袋,适合工作、沙滩、野餐、旅行(黑色,15 升)", + "url": "https://www.amazon.com/-/zh/dp/B095YC5M82/ref=sr_1_1?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-1" + }, + { + "asin": "B0B56CHMSC", + "index": 2, + "price": "US$7.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 56, + "review_count_text": "(5.6万)", + "title": "Lifewit 中号午餐包保温午餐盒柔软冷却手提包适合成年男士女士,黑色 12 罐(9 升)", + "url": "https://www.amazon.com/-/zh/dp/B0B56CHMSC/ref=sr_1_2?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-2" + }, + { + "asin": "B0D5MGDJ2R", + "index": 3, + "price": "US$29.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 1901, + "review_count_text": "(1901)", + "title": "Cooler Backpack - 40 罐保暖背包冷却器男女适用,便携式 2 个防漏隔层冷藏袋,适合海滩旅行野餐午餐徒步烧烤露营 - MIYCOO", + "url": "https://www.amazon.com/-/zh/dp/B0D5MGDJ2R/ref=sr_1_3?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-3" + }, + { + "asin": "B0BWHHLRVF", + "index": 4, + "price": "US$8.95", + "rating": 4.2, + "rating_text": "4.2 颗星,最多 5 颗星", + "review_count": 153, + "review_count_text": "(153)", + "title": "隔热野餐冷藏袋 - 顶部拉链,保温或保冷 - 非常适合野餐、沙滩、食品配送和户外(13.8 x 7.9 x 7.9 英寸)", + "url": "https://www.amazon.com/-/zh/dp/B0BWHHLRVF/ref=sr_1_4?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-4" + }, + { + "asin": "B0711TMHZX", + "index": 5, + "price": null, + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 1167, + "review_count_text": "(1167)", + "title": "JanSport Lunch Break 保温冷藏袋 - 防漏野餐手提包,黑色, 黑色, 午休时间", + "url": "https://www.amazon.com/-/zh/dp/B0711TMHZX/ref=sr_1_5?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-5" + }, + { + "asin": "B0C5T1GPNG", + "index": 6, + "price": "US$8.99", + "rating": 4.3, + "rating_text": "4.3 颗星,最多 5 颗星", + "review_count": 274, + "review_count_text": "(274)", + "title": "保温野餐袋冷藏袋可重复使用,沙滩包冷藏袋带拉链顶部 - 隔热袋适合冷热,野餐篮可折叠,野餐,海滩,户外(13.8 x 7.9 x 7.9 英寸)", + "url": "https://www.amazon.com/-/zh/dp/B0C5T1GPNG/ref=sr_1_6?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-6" + }, + { + "asin": "B08NHM95JJ", + "index": 7, + "price": "US$23.74", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 2923, + "review_count_text": "(2923)", + "title": "LIQING 35L 大号野餐篮 2 层内部口袋防漏隔热,折叠内部支撑,增强稳定性,情侣结婚礼物(灰色)", + "url": "https://www.amazon.com/-/zh/dp/B08NHM95JJ/ref=sr_1_7?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-7" + }, + { + "asin": "B078MLMCY2", + "index": 8, + "price": "US$62.98", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 4738, + "review_count_text": "(4738)", + "title": "Apollo Walker 野餐背包适合 4 人,带冷藏隔层、酒袋、野餐毯(45 英寸 x 53 英寸),适合送给家人和爱人的礼物(棕色)", + "url": "https://www.amazon.com/-/zh/dp/B078MLMCY2/ref=sr_1_8?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-8" + }, + { + "asin": "B0BT9JWG4C", + "index": 9, + "price": "US$57.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 358, + "review_count_text": "(358)", + "title": "4 人野餐背包,野餐篮套装,防漏野餐包,沙滩冷藏背包带保温酒袋,野餐毯,双层野餐背包,适用于海滩、露营、公园(拉丝卡其色)", + "url": "https://www.amazon.com/-/zh/dp/B0BT9JWG4C/ref=sr_1_9?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-9" + }, + { + "asin": "B091CL4YKY", + "index": 10, + "price": "US$9.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 11, + "review_count_text": "(1.1万)", + "title": "Femuar 可重复使用午餐盒男女 – 保温午餐袋防漏午餐盒适用于工作办公室野餐海滩 – 可冷冻午餐冷藏袋带可调节肩带 – 黑色", + "url": "https://www.amazon.com/-/zh/dp/B091CL4YKY/ref=sr_1_10?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-10" + }, + { + "asin": "B0CC93FQN8", + "index": 11, + "price": "US$39.99", + "rating": 4.4, + "rating_text": "4.4 颗星,最多 5 颗星", + "review_count": 1720, + "review_count_text": "(1720)", + "title": "大号防水隔热冷藏背包男女适用,防漏冷藏背包,适用于露营、沙滩、钓鱼、野餐、旅行、户外,30L,48罐", + "url": "https://www.amazon.com/-/zh/dp/B0CC93FQN8/ref=sr_1_11?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-11" + }, + { + "asin": "B0CWGL8Z55", + "index": 12, + "price": "US$7.99", + "rating": 4.3, + "rating_text": "4.3 颗星,最多 5 颗星", + "review_count": 153, + "review_count_text": "(153)", + "title": "保温袋野餐篮包沙滩包可折叠冷藏袋可重复使用拉链顶部用于温暖或冷野餐配件,户外(13.8 x 7.9 x 7.9 英寸)", + "url": "https://www.amazon.com/-/zh/dp/B0CWGL8Z55/ref=sr_1_12?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-12" + }, + { + "asin": "B0D59G1P6P", + "index": 13, + "price": "US$5.98", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 5117, + "review_count_text": "(5117)", + "title": "午餐包女士/男士午餐盒女士/男士(黑色)", + "url": "https://www.amazon.com/-/zh/dp/B0D59G1P6P/ref=sr_1_13?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-13" + }, + { + "asin": "B084JCXKKP", + "index": 14, + "price": "US$69.00", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 312, + "review_count_text": "(312)", + "title": "PICNIC TIME Coronado 帆布和柳条篮手提包,野餐手提袋,沙滩手提包", + "url": "https://www.amazon.com/-/zh/dp/B084JCXKKP/ref=sr_1_14?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-14" + }, + { + "asin": "B081LM4H92", + "index": 15, + "price": "US$29.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 6917, + "review_count_text": "(6917)", + "title": "Jumbo 保温冷藏袋(木炭色)带高清隔热 - 优质可折叠软冷藏袋,可制作完美的保温杂货袋,食品运输袋,旅行包,海滩或野餐袋", + "url": "https://www.amazon.com/-/zh/dp/B081LM4H92/ref=sr_1_15?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-15" + }, + { + "asin": "B07FRCPC6F", + "index": 16, + "price": "US$52.98", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 4738, + "review_count_text": "(4738)", + "title": "apollo walker 野餐背包,适合2人,带冷藏隔层,可拆卸瓶/酒架,羊毛毯,盘子和餐具(蓝色)", + "url": "https://www.amazon.com/-/zh/dp/B07FRCPC6F/ref=sr_1_16?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-16" + }, + { + "asin": "B0F2459DTH", + "index": 17, + "price": "US$24.96", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 1248, + "review_count_text": "(1248)", + "title": "男士保温午餐袋和午餐盒 – 双层可重复使用午餐袋女士手提包冷藏袋防漏柔软可扩展 – 大午餐盒适合工作/成人/野餐/户外(黑色,15L)", + "url": "https://www.amazon.com/-/zh/dp/B0F2459DTH/ref=sr_1_17?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-17" + }, + { + "asin": "B0D6QSVFJV", + "index": 18, + "price": "US$26.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 293, + "review_count_text": "(293)", + "title": "野餐篮 SIYUAN 可折叠购物篮 带手柄 27L 大型市场篮带盖 可重复使用的折叠杂货篮保温冷藏袋,绿色", + "url": "https://www.amazon.com/-/zh/dp/B0D6QSVFJV/ref=sr_1_18?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-18" + }, + { + "asin": "B0DJM2YN3Z", + "index": 19, + "price": "US$16.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 369, + "review_count_text": "(369)", + "title": "Lifewit 超大手提袋,可重复使用的杂货袋,带金属线框架和手柄,立式实用可折叠购物袋用于存放,野餐,海滩,洗衣,汽车,46升,1包,灰色", + "url": "https://www.amazon.com/-/zh/dp/B0DJM2YN3Z/ref=sr_1_19?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-19" + }, + { + "asin": "B09QBZY38F", + "index": 20, + "price": "US$14.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 4382, + "review_count_text": "(4382)", + "title": "Becokan 女式沙滩包大号防水沙滩手提包拉链沙滩包防水防沙游泳泳池包大手提包", + "url": "https://www.amazon.com/-/zh/dp/B09QBZY38F/ref=sr_1_20?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-20" + }, + { + "asin": "B09Y93RGJC", + "index": 21, + "price": "US$21.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 5907, + "review_count_text": "(5907)", + "title": "HSHRISH 可扩展大号成人战术午餐盒,耐用保温午餐袋带肩带,男士工作户外野餐旅行柔软冷藏袋,20 罐/16 升,黑色", + "url": "https://www.amazon.com/-/zh/dp/B09Y93RGJC/ref=sr_1_21?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-21" + }, + { + "asin": "B09VT1FCYN", + "index": 22, + "price": "US$13.90", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 2425, + "review_count_text": "(2425)", + "title": "KALIDI 沙滩尼龙网眼手提包,休闲手提包 Hobo 女式可折叠 MAX 23L 单肩包 适合海滩野餐度假", + "url": "https://www.amazon.com/-/zh/dp/B09VT1FCYN/ref=sr_1_22?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-22" + }, + { + "asin": "B0C64BQY4S", + "index": 23, + "price": "US$29.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 665, + "review_count_text": "(665)", + "title": "冷藏袋 48 罐保温防漏软冷藏箱大号可折叠便携式旅行冷藏袋 32 升用于野餐,防水软冰箱,适合露营,海滩,钓鱼,户外 - 32 夸脱", + "url": "https://www.amazon.com/-/zh/dp/B0C64BQY4S/ref=sr_1_23?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-23" + }, + { + "asin": "B0D116KDSS", + "index": 24, + "price": "US$7.99", + "rating": 4.3, + "rating_text": "4.3 颗星,最多 5 颗星", + "review_count": 153, + "review_count_text": "(153)", + "title": "保温可重复使用食品野餐包沙滩包,带拉链的冷藏袋 - 适合冷热,野餐篮可折叠,海滩,户外派对,露营,节日(红色)", + "url": "https://www.amazon.com/-/zh/dp/B0D116KDSS/ref=sr_1_24?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-24" + }, + { + "asin": "B0BZQRFY78", + "index": 25, + "price": "US$74.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 100, + "review_count_text": "(100)", + "title": "保温沙滩冷藏袋,防漏,优质玉米壳、沙滩包,泳池包,手提包,吸管,藤,女士礼品,野餐篮,婚礼礼物,午餐, 自然/米色", + "url": "https://www.amazon.com/-/zh/dp/B0BZQRFY78/ref=sr_1_25?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-25" + }, + { + "asin": "B0BDZ9H2RM", + "index": 26, + "price": "US$17.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 2704, + "review_count_text": "(2704)", + "title": "露营冷藏背包 30 罐,软背包冷却器隔热防漏旅行冷藏袋防水午餐野餐海滩工作旅行保温袋饮料饮料啤酒袋冷却器", + "url": "https://www.amazon.com/-/zh/dp/B0BDZ9H2RM/ref=sr_1_26?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-26" + }, + { + "asin": "B0B971KYX4", + "index": 27, + "price": "US$25.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 293, + "review_count_text": "(293)", + "title": "野餐篮,SIYUAN 可折叠购物篮带盖 27L 大型市场篮带把手可重复使用的折叠杂货篮保温冷藏袋,适合野餐旅行,蓝色", + "url": "https://www.amazon.com/-/zh/dp/B0B971KYX4/ref=sr_1_27?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-27" + }, + { + "asin": "B0D53D2Q94", + "index": 28, + "price": "US$17.99", + "rating": 4.2, + "rating_text": "4.2 颗星,最多 5 颗星", + "review_count": 1033, + "review_count_text": "(1033)", + "title": "背包冷却器隔热防漏男士 Wowen 36 罐软冷藏背包隔热防水大容量冷藏袋便携午餐露营旅行野餐徒步", + "url": "https://www.amazon.com/-/zh/dp/B0D53D2Q94/ref=sr_1_28?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-28" + }, + { + "asin": "B0FBV7P186", + "index": 29, + "price": "US$20.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 23, + "review_count_text": "(23)", + "title": "2 个保温野餐篮,可折叠购物篮,带 29 升大市场篮带把手,折叠购物篮保温冷藏袋,适用于野餐旅行食品配送市场购物红色", + "url": "https://www.amazon.com/-/zh/dp/B0FBV7P186/ref=sr_1_29?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-29" + }, + { + "asin": "B073CHBWC9", + "index": 30, + "price": "US$75.99", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 4923, + "review_count_text": "(4923)", + "title": "Sunflora 野餐背包,适合4人,带毛毯野餐篮套装,适合2人,带隔热冷藏酒袋,适合家庭情侣(刷米色)", + "url": "https://www.amazon.com/-/zh/dp/B073CHBWC9/ref=sr_1_30?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-30" + }, + { + "asin": "B07T93TVBT", + "index": 31, + "price": "US$23.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 406, + "review_count_text": "(406)", + "title": "Tirrinia 大号保温野餐篮,34 升防水防漏可折叠便携式冷藏篮套装,带铝制手柄,适合旅行,可折叠杂货袋,黑色", + "url": "https://www.amazon.com/-/zh/dp/B07T93TVBT/ref=sr_1_31?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-31" + }, + { + "asin": "B01LE7BBL4", + "index": 32, + "price": "US$21.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 3443, + "review_count_text": "(3443)", + "title": "ALLCAMP 保温冷藏袋 便携式可折叠野餐篮冷藏袋 可折叠 防漏 轻巧 缝在框架中(中灰色)", + "url": "https://www.amazon.com/-/zh/dp/B01LE7BBL4/ref=sr_1_32?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-32" + }, + { + "asin": "B085ND362Z", + "index": 33, + "price": "US$53.19", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 1974, + "review_count_text": "(1974)", + "title": "ALLCAMP 野餐背包 - 带隔层的保温冷藏袋,可拆卸酒杯架,盖毯和餐具套装,2 人野餐套装,适合家庭外出,情侣礼物(灰色)", + "url": "https://www.amazon.com/-/zh/dp/B085ND362Z/ref=sr_1_33?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-33" + }, + { + "asin": "B0CPYFXYLF", + "index": 34, + "price": "US$9.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 1537, + "review_count_text": "(1537)", + "title": "Mesh Beach Bag, Large Beach Tote with Zipper Pocket, Toys Pool Bag for Family Travel Vacation Cruise Essentials", + "url": "https://www.amazon.com/-/zh/dp/B0CPYFXYLF/ref=sr_1_34?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-34" + }, + { + "asin": "B0FBH2YD2N", + "index": 35, + "price": "US$19.99", + "rating": 3.9, + "rating_text": "3.9 颗星,最多 5 颗星", + "review_count": 14, + "review_count_text": "(14)", + "title": "野餐收纳袋 – 大容量防水储物袋,可折叠收纳袋,适用于海滩、徒步和户外毛毯/餐具", + "url": "https://www.amazon.com/-/zh/dp/B0FBH2YD2N/ref=sr_1_35?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-35" + }, + { + "asin": "B0F98WH91R", + "index": 36, + "price": "US$4.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 2, + "review_count_text": "(2)", + "title": "Lisianthus 女式大号保温午餐袋,适合野餐海滩或旅行,14 升防漏冷藏袋 红色", + "url": "https://www.amazon.com/-/zh/dp/B0F98WH91R/ref=sr_1_36?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-36" + }, + { + "asin": "B0B38GQPGF", + "index": 37, + "price": "US$19.95", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 4689, + "review_count_text": "(4689)", + "title": "BALEINE 2 件装保温可重复使用杂货袋,可折叠冷藏袋,适用于杂货,重型大号保温袋(40.64 厘米 x 22.96 厘米 x 33.02 厘米,春季散步)", + "url": "https://www.amazon.com/-/zh/dp/B0B38GQPGF/ref=sr_1_37?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-37" + }, + { + "asin": "B08RSKGYPM", + "index": 38, + "price": "US$27.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 4426, + "review_count_text": "(4426)", + "title": "TOURIT 软边冷藏袋保温48/60罐,大号可折叠防漏冰盒,适合野餐、沙滩、露营、旅行", + "url": "https://www.amazon.com/-/zh/dp/B08RSKGYPM/ref=sr_1_38?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-38" + }, + { + "asin": "B094J81F6T", + "index": 39, + "price": "US$46.98", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 394, + "review_count_text": "(394)", + "title": "野餐背包和配件 – 2 人隔热野餐套装,带双隔层,轻质毛毯,餐具套装,适合新婚夫妇和情侣礼物灰色", + "url": "https://www.amazon.com/-/zh/dp/B094J81F6T/ref=sr_1_39?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-39" + }, + { + "asin": "B0G1BD2MZG", + "index": 40, + "price": "US$18.23", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 10, + "review_count_text": "(10)", + "title": "男士女士保温午餐包,大号可重复使用的午餐盒,带可调节肩带,防漏冷冻-安全手提包,适用于工作、野餐、办公室,600D 防水面料", + "url": "https://www.amazon.com/-/zh/dp/B0G1BD2MZG/ref=sr_1_40?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-40" + }, + { + "asin": "B0BX3HVQSP", + "index": 41, + "price": "US$26.24", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 661, + "review_count_text": "(661)", + "title": "Amazon Basics 可重复使用保温软冷藏袋/背包", + "url": "https://www.amazon.com/-/zh/dp/B0BX3HVQSP/ref=sr_1_41?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-41" + }, + { + "asin": "B0F7LBC1TL", + "index": 42, + "price": "US$27.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 551, + "review_count_text": "(551)", + "title": "LOVEVOOK 保温午餐袋女士,宽开口成人午餐盒女士,大号防漏冷藏袋适用于工作野餐海滩家庭学院,午餐教师手提包带可调节肩带杯架", + "url": "https://www.amazon.com/-/zh/dp/B0F7LBC1TL/ref=sr_1_42?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-42" + }, + { + "asin": "B0BX3HVQST", + "index": 43, + "price": "US$16.27", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 782, + "review_count_text": "(782)", + "title": "Amazon Basics 软保温冷却器", + "url": "https://www.amazon.com/-/zh/dp/B0BX3HVQST/ref=sr_1_43?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-43" + }, + { + "asin": "B08NHLPBN9", + "index": 44, + "price": "US$25.64", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 2923, + "review_count_text": "(2923)", + "title": "LIQING 35L 大号野餐篮 2 层内部口袋防漏隔热,折叠内部支撑,增强稳定性,情侣结婚礼物(酒红色)", + "url": "https://www.amazon.com/-/zh/dp/B08NHLPBN9/ref=sr_1_44?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-44" + }, + { + "asin": "B0F37N4VKN", + "index": 45, + "price": "US$22.79", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 1478, + "review_count_text": "(1478)", + "title": "Bluboon 网眼沙滩手提包带冷藏隔层隔热可拆卸野餐包带拉链和口袋泳池包 女式", + "url": "https://www.amazon.com/-/zh/dp/B0F37N4VKN/ref=sr_1_45?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-45" + }, + { + "asin": "B0BMQ8M11J", + "index": 46, + "price": "US$21.24", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 2184, + "review_count_text": "(2184)", + "title": "大号女士午餐袋/保温成人午餐盒/防漏冷藏午餐手提包带储物袋。可重复使用的午餐钱包适合工作野餐徒步 12 升,条纹", + "url": "https://www.amazon.com/-/zh/dp/B0BMQ8M11J/ref=sr_1_46?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-46" + }, + { + "asin": "B08W4GWCZS", + "index": 47, + "price": "US$23.74", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 2923, + "review_count_text": "(2923)", + "title": "LIQING 35L 大号野餐篮 2 层内部口袋防漏隔热,折叠内部支撑,增强稳定性,情侣结婚礼物(三文鱼色)", + "url": "https://www.amazon.com/-/zh/dp/B08W4GWCZS/ref=sr_1_47?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-47" + }, + { + "asin": "B01CV8JH7A", + "index": 48, + "price": "US$18.75", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 964, + "review_count_text": "(964)", + "title": "MIER 18L 大号柔软冷藏隔热野餐袋,适用于杂货、露营、汽车、亮橙色", + "url": "https://www.amazon.com/-/zh/dp/B01CV8JH7A/ref=sr_1_48?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.pZpJ5whTXy3XN1zWEb8nsugQTRpylzpQrIYYKNPNPOLDgyIWHU_ykg-Do1gnk-n4-wymnLzhsMgkJYl4JN2-zwgLPVkILxqYtuHiUgYIQshvcuKjgpBcSgBV3udFvatifJbR1RSfGqM-XGCCTI4g3xOkxC52ONg22tE6hKaxo9XJ5LwXrWr-PwuzLemD1u3H-4U6FHRnIhpmAuOo4iM3AQImTRw9aWAaV-ngGncdsEpWsTxPfTCYGglow8XY2gMtg7VaioccVFQZ2jUOaueXOA_GJGl2WFppKpdLj9G8tOA.BaX14ufgaUsg-8x9weiFyyrzwTV3N3E0udrfEqZikV8&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813783&sr=8-48" + }, + { + "asin": "B07P3YNG2K", + "index": 1, + "price": null, + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 4881, + "review_count_text": "(4881)", + "title": "CleverMade Collapsible LUXE Tote - Reusable Grocery Shopping Storage Bag Organizer w/Handles Reinforced Bottom", + "url": "https://www.amazon.com/-/zh/dp/B07P3YNG2K/ref=sr_1_49?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-49&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B097S7P43Y", + "index": 2, + "price": "US$29.98", + "rating": 4.4, + "rating_text": "4.4 颗星,最多 5 颗星", + "review_count": 376, + "review_count_text": "(376)", + "title": "可爱格子野餐毯,防水可折叠,大号80x60英寸(约203.2x152.4厘米),超大号80x80英寸(约203.2x203.2厘米),便携式紧凑沙滩毯,超大 XL 户外垫(棕褐色,XL 码 ) )", + "url": "https://www.amazon.com/-/zh/dp/B097S7P43Y/ref=sr_1_50?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-50&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0D2D15S4X", + "index": 3, + "price": "US$26.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 1174, + "review_count_text": "(1174)", + "title": "可扩展战术午餐盒,大号保温午餐冷藏袋重型防漏午餐桶适合男士成人工作办公室户外野餐旅行,16L,黑色", + "url": "https://www.amazon.com/-/zh/dp/B0D2D15S4X/ref=sr_1_51?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-51&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0D9JJ71BN", + "index": 4, + "price": "US$16.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 535, + "review_count_text": "(535)", + "title": "JUNGYOON Heavy-Duty Insulated Grocery Bags & Insulated Bag – Collapsible Cooler Bag with Zippered Top", + "url": "https://www.amazon.com/-/zh/dp/B0D9JJ71BN/ref=sr_1_52?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-52&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0BDSGN485", + "index": 5, + "price": "US$24.95", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 8046, + "review_count_text": "(8046)", + "title": "BALEINE 3 件装可重复使用的杂货袋,可折叠购物袋,底部加固手柄(开花季节)", + "url": "https://www.amazon.com/-/zh/dp/B0BDSGN485/ref=sr_1_53?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-53&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B01FXM4OEW", + "index": 6, + "price": "US$59.99", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 1963, + "review_count_text": "(1963)", + "title": "Hap Tim 野餐背包适合4人,带冷藏隔层,可拆卸瓶/酒架,羊毛毯,盘子和餐具套装,非常适合户外、运动、远足、露营、烧烤(咖啡)", + "url": "https://www.amazon.com/-/zh/dp/B01FXM4OEW/ref=sr_1_54?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-54&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B08BYFW2QJ", + "index": 7, + "price": "US$65.99", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 3360, + "review_count_text": "(3360)", + "title": "Hap Tim 野餐篮背包适合4人,带隔热防漏冷藏隔层,酒架,羊毛毯,餐具套装,情侣结婚礼物,订婚礼物", + "url": "https://www.amazon.com/-/zh/dp/B08BYFW2QJ/ref=sr_1_55?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-55&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B07DGWB7YY", + "index": 8, + "price": "US$23.69", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 2704, + "review_count_text": "(2704)", + "title": "ALLCAMP 酒袋 - 带酒杯、开瓶器和葡萄酒配件的保温冷藏袋 - 适用于旅行、野餐和礼品创意的便携式葡萄酒礼品袋 (黑色)", + "url": "https://www.amazon.com/-/zh/dp/B07DGWB7YY/ref=sr_1_56?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-56&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0FB9SFMYJ", + "index": 9, + "price": "US$15.99", + "rating": 4, + "rating_text": "4.0 颗星,最多 5 颗星", + "review_count": 1, + "review_count_text": "(1)", + "title": "2 件装保温可重复使用食品野餐包沙滩包,带拉链顶部沙滩包冷藏袋 - 保温袋,适合冷热,野餐篮可折叠,户外派对,露营,节日(A)", + "url": "https://www.amazon.com/-/zh/dp/B0FB9SFMYJ/ref=sr_1_57?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-57&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0DZ2MPY4C", + "index": 10, + "price": "US$27.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 345, + "review_count_text": "(345)", + "title": "沙滩包带冷却器,49 升大号防水防沙手提包,带拉链,可折叠旅行包,适用于海滩、游泳池、野餐", + "url": "https://www.amazon.com/-/zh/dp/B0DZ2MPY4C/ref=sr_1_58?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-58&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0C19ZYSVK", + "index": 11, + "price": "US$26.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 1894, + "review_count_text": "(1894)", + "title": "BeeGreen 冷藏袋柔软保温手提包,适合海滩旅行杂货购物午餐便携式大号冰冷却器带手柄硬冷冻袋,顶部拉链,可折叠防漏送货手提袋,苔藓色", + "url": "https://www.amazon.com/-/zh/dp/B0C19ZYSVK/ref=sr_1_59?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-59&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0BFH97CRV", + "index": 12, + "price": "US$12.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 401, + "review_count_text": "(401)", + "title": "FITDON 黄麻帆布手提包女式 - 大号黄麻沙滩包,可折叠防水购物手提包,适合野餐旅行海滩", + "url": "https://www.amazon.com/-/zh/dp/B0BFH97CRV/ref=sr_1_60?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-60&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0C3WHF9S3", + "index": 13, + "price": "US$54.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 124, + "review_count_text": "(124)", + "title": "Rnoony Picnic Backpack for Camping, Picnic Basket for with Insulated Cooler Bag and Bottle Pouch,Camping Gifts for Couples with Lightweight Blanket and Cutlery Set for Family, Couple and Hiking", + "url": "https://www.amazon.com/-/zh/dp/B0C3WHF9S3/ref=sr_1_61?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-61&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B083DHKJS5", + "index": 14, + "price": "US$11.89", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 6598, + "review_count_text": "(6598)", + "title": "TOPDesign 1 | 3 | 6 | 30 件装帆布手提包,带外部口袋,可重复使用的杂货购物袋,顶部拉链闭合,日常必需品(黑色/自然色1 件装)", + "url": "https://www.amazon.com/-/zh/dp/B083DHKJS5/ref=sr_1_62?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-62&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0CN43GCYT", + "index": 15, + "price": "US$9.98", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 1070, + "review_count_text": "(1070)", + "title": "KALIDI FANCY FOREST 沙滩网眼手提包,女式单肩包 MAX 27L 购物袋", + "url": "https://www.amazon.com/-/zh/dp/B0CN43GCYT/ref=sr_1_63?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-63&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0DSZ9C22R", + "index": 16, + "price": "US$12.99", + "rating": 4.4, + "rating_text": "4.4 颗星,最多 5 颗星", + "review_count": 713, + "review_count_text": "(713)", + "title": "PEASUG 食品配送保温袋,XXXL 披萨配送袋,大容量冷藏袋保温,适合购物和餐饮,可折叠,重型(黑色)", + "url": "https://www.amazon.com/-/zh/dp/B0DSZ9C22R/ref=sr_1_64?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-64&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0F7R8748H", + "index": 17, + "price": "US$23.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 110, + "review_count_text": "(110)", + "title": "ZOMFELT 75L Standing Extra Large Utility Tote Bag with Removable Dividers&4-sided Reinforced, Reusable Grocery Shopping Bags", + "url": "https://www.amazon.com/-/zh/dp/B0F7R8748H/ref=sr_1_65?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-65&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0CS2R1S1B", + "index": 18, + "price": "US$24.36", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 5592, + "review_count_text": "(5592)", + "title": "BAGSMART 女式手提包,轻质蓬松手提包,带隔层单肩包手提包,适合旅行、工作、健身房 | Lightweight, Puffy, Quilted, for Travel, Work", + "url": "https://www.amazon.com/-/zh/dp/B0CS2R1S1B/ref=sr_1_66?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-66&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B093F7CV87", + "index": 19, + "price": "US$22.49", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 1504, + "review_count_text": "(1504)", + "title": "LHZK 立式超大实用手提包,带金属线框架和侧面加固,超大手提包带手柄,可重复使用的杂货袋可折叠,沙滩包,汽车手提包(灰色)", + "url": "https://www.amazon.com/-/zh/dp/B093F7CV87/ref=sr_1_67?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-67&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0892YNM1S", + "index": 20, + "price": "US$17.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 6105, + "review_count_text": "(6105)", + "title": "LUNCIA 隔热单层砂锅背带,烤宽面条行李袋可保温或保冷,保温午餐袋适合野餐和野餐,适合 9 英寸 x 13 英寸(约 22.9 厘米 x 33.0 厘米)烘焙盘,灰色", + "url": "https://www.amazon.com/-/zh/dp/B0892YNM1S/ref=sr_1_68?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-68&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0DXFSVFZ4", + "index": 21, + "price": "US$26.28", + "rating": 4.4, + "rating_text": "4.4 颗星,最多 5 颗星", + "review_count": 110, + "review_count_text": "(110)", + "title": "升级超大实用手提包,带反光带,立式可重复使用的杂货袋,硬底,四面加固,可折叠实用手提包,带提手,适用于海滩、野餐、汽车", + "url": "https://www.amazon.com/-/zh/dp/B0DXFSVFZ4/ref=sr_1_69?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-69&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0B1Q169W1", + "index": 22, + "price": "US$17.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 443, + "review_count_text": "(443)", + "title": "保温冷藏袋可重复使用的杂货手提包运输大号午餐盒 女式", + "url": "https://www.amazon.com/-/zh/dp/B0B1Q169W1/ref=sr_1_70?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-70&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B097P26RLV", + "index": 23, + "price": "US$25.99", + "rating": 4.4, + "rating_text": "4.4 颗星,最多 5 颗星", + "review_count": 1668, + "review_count_text": "(1668)", + "title": "sapsisel 80 x 80 英寸(约 203.2 x 203.2 厘米)野餐毯超大防水可折叠沙滩毯,3 层户外毛毯,适合 6 至 8 名成人,适合露营、公园、海滩、草地、室内……", + "url": "https://www.amazon.com/-/zh/dp/B097P26RLV/ref=sr_1_71?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-71&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0D92ZNWK3", + "index": 24, + "price": "US$100.00", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 1887, + "review_count_text": "(1887)", + "title": "Stanley All Day Julienne 柔软冷藏袋和午餐盒 | 带拉链保温旅行包 | 不含双酚 A", + "url": "https://www.amazon.com/-/zh/dp/B0D92ZNWK3/ref=sr_1_72?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-72&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0CBFSKW4Z", + "index": 25, + "price": "US$14.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 373, + "review_count_text": "(373)", + "title": "esouler 隔热砂锅便携袋冷热食品携带袋烤宽面条支架午餐袋适用于野餐、派对、旅行,适合 22.86 x 33.02 厘米砂锅菜-灰色", + "url": "https://www.amazon.com/-/zh/dp/B0CBFSKW4Z/ref=sr_1_73?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-73&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0CVNMVMSY", + "index": 26, + "price": "US$59.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 4025, + "review_count_text": "(4025)", + "title": "简约现代超大沙滩包 | 防水度假橡胶手提包带拉链口袋,适合旅行、游泳池、船、杂货、运动 | 杏仁桦木", + "url": "https://www.amazon.com/-/zh/dp/B0CVNMVMSY/ref=sr_1_74?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-74&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0DZ5WKZ15", + "index": 27, + "price": "US$9.79", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 320, + "review_count_text": "(320)", + "title": "男女保温午餐包,双防漏午餐盒柔软冷藏手提包,带 5 个口袋,600D 牛津布,EVA 衬里,可调节肩带,适合工作、野餐、海滩和旅行-黑色", + "url": "https://www.amazon.com/-/zh/dp/B0DZ5WKZ15/ref=sr_1_75?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-75&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B00HKVGXFI", + "index": 28, + "price": "US$23.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 576, + "review_count_text": "(576)", + "title": "ONIVA - 野餐时间品牌 - Vista 户外野餐毯和手提包 - 沙滩毯 - 露营毯,(有趣的条纹图案与水蓝色外部),40.64 x 27.94 x 7.62", + "url": "https://www.amazon.com/-/zh/dp/B00HKVGXFI/ref=sr_1_76?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-76&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0FHGSR81V", + "index": 29, + "price": "US$19.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 1458, + "review_count_text": "(1458)", + "title": "MEXS 女士男士保温午餐包大号可重复使用的午餐盒成人防漏便携式冷藏手提袋,适合工作野餐", + "url": "https://www.amazon.com/-/zh/dp/B0FHGSR81V/ref=sr_1_77?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-77&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B09CSSRGH8", + "index": 30, + "price": "US$33.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 3960, + "review_count_text": "(3960)", + "title": "冷藏背包,隔热背包冷却器防漏双层冷藏袋,男女 RFID 午餐背包", + "url": "https://www.amazon.com/-/zh/dp/B09CSSRGH8/ref=sr_1_78?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-78&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0BGND4C1C", + "index": 31, + "price": "US$19.99", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 2794, + "review_count_text": "(2794)", + "title": "豪华保温午餐盒包 女式 – 防漏防水冷却器带多口袋可拆卸肩带,适合工作野餐 – 教师母亲节圣诞节生日礼物", + "url": "https://www.amazon.com/-/zh/dp/B0BGND4C1C/ref=sr_1_79?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-79&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0GFVHFT8Y", + "index": 32, + "price": "US$15.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 99, + "review_count_text": "(99)", + "title": "男女保温午餐盒,工作用灯芯绒午餐袋,防漏成人冷藏手提袋,适用于办公室、野餐、旅行、户外(粉色蝴蝶结)", + "url": "https://www.amazon.com/-/zh/dp/B0GFVHFT8Y/ref=sr_1_80?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-80&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0BB2CDSNB", + "index": 33, + "price": "US$25.99", + "rating": 4.2, + "rating_text": "4.2 颗星,最多 5 颗星", + "review_count": 569, + "review_count_text": "(569)", + "title": "新款编织包,草编网眼手提包,沙滩,单肩包,Hobo 女士,可折叠大容量,适合假日。", + "url": "https://www.amazon.com/-/zh/dp/B0BB2CDSNB/ref=sr_1_81?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-81&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0FN3VMVHL", + "index": 34, + "price": "US$26.99", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 15, + "review_count_text": "(15)", + "title": "Rexmore 保温两瓶葡萄酒袋手提包,战术冷藏袋带可调节肩带,防漏隔层适合野餐旅行海滩派对,可放置眼镜和开瓶器,送给葡萄酒爱好者的礼物", + "url": "https://www.amazon.com/-/zh/dp/B0FN3VMVHL/ref=sr_1_82?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-82&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B08VDBW5PW", + "index": 35, + "price": "US$32.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 1, + "review_count_text": "(1万)", + "title": "SPARTER 背包冷却器隔热防漏 33/49 罐,2 个保温隔层保温袋,便携式轻质沙滩旅行露营午餐背包男女适用", + "url": "https://www.amazon.com/-/zh/dp/B08VDBW5PW/ref=sr_1_83?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-83&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0CJ4ZPSPH", + "index": 36, + "price": "US$49.99", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 114, + "review_count_text": "(114)", + "title": "35L 多功能行李袋,防水鞋子和野餐露营收纳袋,3 个可调节隔板,适合旅行、运动、健身房", + "url": "https://www.amazon.com/-/zh/dp/B0CJ4ZPSPH/ref=sr_1_84?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-84&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0D29DLZXK", + "index": 37, + "price": "US$23.55", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 193, + "review_count_text": "(193)", + "title": "立式超大实用手提包,坚硬底部和硬侧面,重型可重复使用的杂货袋带手柄和 3 个口袋,可购物、沙滩、野餐、汽车(57.1 厘米 x 27.9 厘米 x 30.5 厘米,灰色)", + "url": "https://www.amazon.com/-/zh/dp/B0D29DLZXK/ref=sr_1_85?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-85&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0DNPNY85J", + "index": 38, + "price": "US$8.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 335, + "review_count_text": "(335)", + "title": "KALIDI 沙滩手提包女式大号防水防沙单肩手提包可打包杂物包 Hobo 钱包野餐度假", + "url": "https://www.amazon.com/-/zh/dp/B0DNPNY85J/ref=sr_1_86?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-86&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0DSJC1SLT", + "index": 39, + "price": "US$47.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 143, + "review_count_text": "(143)", + "title": "2 人野餐篮带桌子和毛毯可折叠冷藏袋隔热野餐套装适用于海滩野餐篮野餐约会户外野餐配件婚礼礼物/新娘送礼会礼物", + "url": "https://www.amazon.com/-/zh/dp/B0DSJC1SLT/ref=sr_1_87?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-87&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0B3RDJ35Y", + "index": 40, + "price": "US$33.99", + "rating": 4.3, + "rating_text": "4.3 颗星,最多 5 颗星", + "review_count": 1561, + "review_count_text": "(1561)", + "title": "背包冷藏箱,带双层和12个冰袋 - 36 罐保冷长达 24 小时 - 防水防漏隔热冷藏背包 - 时尚冷藏书包 适合女性旅行工作海滩", + "url": "https://www.amazon.com/-/zh/dp/B0B3RDJ35Y/ref=sr_1_88?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-88&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0DJ5QPNXD", + "index": 41, + "price": "US$13.79", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 552, + "review_count_text": "(552)", + "title": "Bluboon 女士午餐盒可爱午餐袋可重复使用的保温午餐袋大容量午餐盒冷却器,适合工作野餐或旅行使用", + "url": "https://www.amazon.com/-/zh/dp/B0DJ5QPNXD/ref=sr_1_89?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-89&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B07XXZGVSM", + "index": 42, + "price": "US$19.99", + "rating": 4.5, + "rating_text": "4.5 颗星,最多 5 颗星", + "review_count": 22, + "review_count_text": "(2.2万)", + "title": "Bodaon 保温食品配送袋,XXXL 披萨配送袋,适用于冷热食物,商业,大容量可重复使用的加热袋,适合骑行的餐饮冷藏袋,派对保温器(黑色,1 件装)", + "url": "https://www.amazon.com/-/zh/dp/B07XXZGVSM/ref=sr_1_90?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-90&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0FH6M2K7B", + "index": 43, + "price": "US$29.99", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 18, + "review_count_text": "(18)", + "title": "GRANNY SAYS 2 合 1 49¼ 英寸深黑色防水野餐毯和手提包,大型野餐垫适用于露营、草地和公园,可折叠 3 层户外毛毯,无沙沙滩毯,带 1 个夹子和 4 个桩子", + "url": "https://www.amazon.com/-/zh/dp/B0FH6M2K7B/ref=sr_1_91?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-91&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0F9KQC2ZW", + "index": 44, + "price": "US$29.90", + "rating": 4.3, + "rating_text": "4.3 颗星,最多 5 颗星", + "review_count": 19, + "review_count_text": "(19)", + "title": "Outdoor Packable Picnic Blanket with Zipper Folds into Tote Bag with Large Storage and Shoulder Strap, Waterproof Sandproof for Lawn Beach Hiking Camping (colorful2, Small)", + "url": "https://www.amazon.com/-/zh/dp/B0F9KQC2ZW/ref=sr_1_92?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-92&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B07RTS9PKR", + "index": 45, + "price": "US$54.99", + "rating": 4.4, + "rating_text": "4.4 颗星,最多 5 颗星", + "review_count": 344, + "review_count_text": "(344)", + "title": "CapaBunga 农贸市场手提包带提手 - 7 个口袋大号实用手提袋 - 重型帆布实用包 带人造皮革底座 - 可重复使用的手提袋 - 天然杂货袋", + "url": "https://www.amazon.com/-/zh/dp/B07RTS9PKR/ref=sr_1_93?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-93&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0CDQLGJCC", + "index": 46, + "price": "US$48.95", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 60, + "review_count_text": "(60)", + "title": "Lilly Pulitzer 蓝色野餐和沙滩冷却器,带可调节肩带和拉链的保温袋,大型柔软冷却器,适合杂货或旅行,贝壳和铃铛", + "url": "https://www.amazon.com/-/zh/dp/B0CDQLGJCC/ref=sr_1_94?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-94&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B0B5TT75JV", + "index": 47, + "price": "US$13.99", + "rating": 4.4, + "rating_text": "4.4 颗星,最多 5 颗星", + "review_count": 1709, + "review_count_text": "(1709)", + "title": "沙滩包 – 女式网眼手提包防水泳池包旅行家庭泳池海滩度假游轮必备 2025", + "url": "https://www.amazon.com/-/zh/dp/B0B5TT75JV/ref=sr_1_95?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-95&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B07M7GRBPF", + "index": 48, + "price": "US$35.00", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 2368, + "review_count_text": "(2368)", + "title": "SCOUT Nooner 女士保温午餐盒,容量为 6 罐 - 适合教师和护士的轻质工作午餐袋 - 柔软冷却器适合海滩旅行和野餐", + "url": "https://www.amazon.com/-/zh/dp/B07M7GRBPF/ref=sr_1_96?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.rDM84kGGsPc-XWpG6MzZIa42yLEhxLYv_ZBfG8XtLJTBKQY9FOVaiIJDS-qezHjjE1zfLgHnCYQqMjJes1qqvVxUihjRKmHNjAcR7CUB4KU4cyfSzz_mryARRLb1_yLy7q559wtjtV-lzGPc6SzT4g854SSN6NEWp11HxEqgLBh6M0eI0eYKHvq8L9AR1dE_oXN3SirEoLwTXDk94GAXKUwW4qyNs7bfYMQ4ft37NZrAnq0gljbXTZYXy2wdkGEbS7N4Y7nAMMIOj6DP5OtwV_Xr2cug9XY5kAPMlWvdU2M.BqxuaAPiuKUrvJocp0Jy_SBeZhnbTXSbO7fd6NUiC74&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813786&sr=8-96&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B07XTYY5R9", + "index": 1, + "price": "US$33.99", + "rating": 4.6, + "rating_text": "4.6 颗星,最多 5 颗星", + "review_count": 434, + "review_count_text": "(434)", + "title": "PICNIC TIME 2 and 3 Bottle Insulated Wine Bag, Distressed Waxed Canvas Wine Tote, Durable Bottle Carrier Bag for Gifts and Travel with Side Pockets & Removable Divider (Khaki Green with Brown Accents)", + "url": "https://www.amazon.com/-/zh/dp/B07XTYY5R9/ref=sr_1_97?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.iS1en8yR0qgFbaJIlhuIgu8YsyLV5-DCio-0JVHtap2bUfogfnAOXTXfbQv0U-s-ZS3X2ROOAZno1fsBfS0lHKCahQCNGARa0vT99PRouy-MPWkM6T473jab_-xGImr1aiHUlPxtZnR6BvInaDDYCTTagFADm1LP9tGrvWNt7LoavUT8o8Bi3TmHpgR_snrFQ_Zlyv7js1bJy-qV6h60g_t_EFvlK7VhHND8abdkWFmz_Z63JYF20qUloN0YpqoYfU_U7vTbp2r1u8_XAA3s_tKEVf8ePcfnRCEmLgE5zDQ.iS2gmUDIpX4SuQDNCUZEuxcLa8w4GyA7lqRG5_7539M&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813790&sr=8-97&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B07MC6PNLX", + "index": 2, + "price": "US$55.00", + "rating": 4.7, + "rating_text": "4.7 颗星,最多 5 颗星", + "review_count": 2914, + "review_count_text": "(2914)", + "title": "SCOUT Original Deano 手提包 大号 - 耐用轻质开顶海滩、游泳池和湖泊包,内部拉链口袋,可折叠放平", + "url": "https://www.amazon.com/-/zh/dp/B07MC6PNLX/ref=sr_1_98?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.iS1en8yR0qgFbaJIlhuIgu8YsyLV5-DCio-0JVHtap2bUfogfnAOXTXfbQv0U-s-ZS3X2ROOAZno1fsBfS0lHKCahQCNGARa0vT99PRouy-MPWkM6T473jab_-xGImr1aiHUlPxtZnR6BvInaDDYCTTagFADm1LP9tGrvWNt7LoavUT8o8Bi3TmHpgR_snrFQ_Zlyv7js1bJy-qV6h60g_t_EFvlK7VhHND8abdkWFmz_Z63JYF20qUloN0YpqoYfU_U7vTbp2r1u8_XAA3s_tKEVf8ePcfnRCEmLgE5zDQ.iS2gmUDIpX4SuQDNCUZEuxcLa8w4GyA7lqRG5_7539M&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813790&sr=8-98&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B081SLGVK7", + "index": 3, + "price": "US$28.99", + "rating": 4.8, + "rating_text": "4.8 颗星,最多 5 颗星", + "review_count": 13, + "review_count_text": "(1.3万)", + "title": "可重复使用的杂货袋(3 个装) – 重型可重复使用的购物袋,带盒子形状,可站立、保持打开、折叠平整 – 大号手提包可折叠长提手和硬底(海军蓝)", + "url": "https://www.amazon.com/-/zh/dp/B081SLGVK7/ref=sr_1_99?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.iS1en8yR0qgFbaJIlhuIgu8YsyLV5-DCio-0JVHtap2bUfogfnAOXTXfbQv0U-s-ZS3X2ROOAZno1fsBfS0lHKCahQCNGARa0vT99PRouy-MPWkM6T473jab_-xGImr1aiHUlPxtZnR6BvInaDDYCTTagFADm1LP9tGrvWNt7LoavUT8o8Bi3TmHpgR_snrFQ_Zlyv7js1bJy-qV6h60g_t_EFvlK7VhHND8abdkWFmz_Z63JYF20qUloN0YpqoYfU_U7vTbp2r1u8_XAA3s_tKEVf8ePcfnRCEmLgE5zDQ.iS2gmUDIpX4SuQDNCUZEuxcLa8w4GyA7lqRG5_7539M&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813790&sr=8-99&xpid=ik9phYLHUP1Qo" + }, + { + "asin": "B000FYTIZY", + "index": 4, + "price": "US$79.99", + "rating": 4, + "rating_text": "4.0 颗星,最多 5 颗星", + "review_count": 469, + "review_count_text": "(469)", + "title": "ONIVA Picnic Time Turismo 背包冷藏箱带水瓶袋,柔软冷藏旅行袋(黑色)", + "url": "https://www.amazon.com/-/zh/dp/B000FYTIZY/ref=sr_1_100?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&dib=eyJ2IjoiMSJ9.iS1en8yR0qgFbaJIlhuIgu8YsyLV5-DCio-0JVHtap2bUfogfnAOXTXfbQv0U-s-ZS3X2ROOAZno1fsBfS0lHKCahQCNGARa0vT99PRouy-MPWkM6T473jab_-xGImr1aiHUlPxtZnR6BvInaDDYCTTagFADm1LP9tGrvWNt7LoavUT8o8Bi3TmHpgR_snrFQ_Zlyv7js1bJy-qV6h60g_t_EFvlK7VhHND8abdkWFmz_Z63JYF20qUloN0YpqoYfU_U7vTbp2r1u8_XAA3s_tKEVf8ePcfnRCEmLgE5zDQ.iS2gmUDIpX4SuQDNCUZEuxcLa8w4GyA7lqRG5_7539M&dib_tag=se&keywords=%E9%87%8E%E9%A4%90%E5%8C%85&qid=1773813790&sr=8-100&xpid=ik9phYLHUP1Qo" + } + ] +} // 列表的 + +{ + "items": [ + { + "author": "Leonardo Diaz", + "body": "I am very impressed with this Lifewit lunch bag. It is the perfect size—compact enough to carry easily but spacious enough to fit a full meal and drinks (9L capacity). What I like most: • Great Insulation: Keeps my food fresh and drinks cold for hours. • Smart Design: The side pockets and front zipper are very handy for keys or utensils. • Durable: The material feels high-quality and the zippers are smooth. Highly recommended for work or outdoor trips. Great value for the price!", + "date": "2026年2月28日在美国发布评论", + "index": 1, + "rating_text": "5.0 颗星,最多 5 颗星", + "review_id": "R1BLD2WOWJ6820", + "title": "5.0 颗星,最多 5 颗星 Perfect lunch bag for daily use!" + }, + { + "author": "SB", + "body": "Great medium sized lunch box for an adult!!! Excellent quality with plenty of space to hold Tupperware or meal prep containers . The lunch box is well made with strong stitching and a decent zipper. It is insulated enough to keep food cold when using an ice pack and easy to clean with soapy water or Clorox wipe. Great value.", + "date": "2026年2月22日在美国发布评论", + "index": 2, + "rating_text": "5.0 颗星,最多 5 颗星", + "review_id": "R2VN4GMGH5E3XJ", + "title": "5.0 颗星,最多 5 颗星 Great lunch box" + }, + { + "author": "OCD Reviews from Me to You", + "body": "I’m super happy with this lunch box. The design is sleek and low-key, so it doesn’t look bulky or awkward to carry around. It’s definitely more stylish than most lunch boxes I’ve owned, but not it a bad way. Size-wise, it’s pretty much perfect: not huge, but not cramped either. I can fit four frozen ice packs in it without any trouble, along with my food. Insulation is been impressive. If I put the lunch box in the freezer overnight or start with frozen packs, everything stays cold for around 8 hours during the day, which is exactly what I was hoping for. It feels well made, the zippers are smooth, and it holds its shape nicely. Cons: If you pack a lot of containers or bulky meals, this may feel kind of small (for me, it holds a canned soda, water bottle, a large Tupperware along with ice packs) Best for: People who want a clean-looking lunch box that fits a normal workday meal, uses ice packs, and doesn’t take up a ton of space in a fridge or bag. Overall, it’s a solid, well-designed lunch box that does what it’s supposed to do! I highly recommend it. 阅读更多", + "date": "2026年2月24日在美国发布评论", + "index": 3, + "rating_text": "5.0 颗星,最多 5 颗星", + "review_id": "R3H9TI7HQN1OKQ", + "title": "5.0 颗星,最多 5 颗星 Solid (and stylish) lunch box that does exactly what I need" + }, + { + "author": "Cindy A Gonzales", + "body": "It is a very large lunchbox, it may work for someone who brings breakfast, lunch and snacks for the day. If you are bringing a sandwich, chips and soda this will be too big. It’s very lightweight but it’s lined so items will stay cool but I had mine in the refrigerator so I’m not sure how cold it will keep your items if not refrigerated. The zipper compartment is pretty big so there’s extra room for your utensils and napkins. It’s not a bad bag for the price.", + "date": "2026年3月10日在美国发布评论", + "index": 4, + "rating_text": "4.0 颗星,最多 5 颗星", + "review_id": "R20EGWJMLYMTPT", + "title": "4.0 颗星,最多 5 颗星 Medium size seems larger but overall a good bag" + }, + { + "author": "Fitzgerald", + "body": "This is a great medium size lunch box! I love the pattern. It is not heavy but still keeps everything cold. It holds my lunch, drinks and some extra snacks. It is fully collapsible and can easily be stored away. The handles are good quality and the long strap makes it easy to carry around.", + "date": "2026年1月29日在美国发布评论", + "index": 5, + "rating_text": "5.0 颗星,最多 5 颗星", + "review_id": "RP0DUYFPZZTXP", + "title": "5.0 颗星,最多 5 颗星 Great lunch box!" + }, + { + "author": "Amazon Customer", + "body": "Absolutely love my Lunch bag. Very roomy, very light weight, and obsessed with the leopard print design. I thought the material would have been a little bit thicker. But it’s not that big of a deal. But it’s still a good lunch bag. The insulation is pretty good as well. It’s really easy to clean out as well. It is kinda on the flimsy side. I guess the more you use it, it’s stop being flimsy.", + "date": "2026年2月2日在美国发布评论", + "index": 6, + "rating_text": "5.0 颗星,最多 5 颗星", + "review_id": "RA9OTS3CYC8GJ", + "title": "5.0 颗星,最多 5 颗星 Lunch is roomy" + }, + { + "author": "Yvette D", + "body": "This is the bag!! Roomy, sturdy and looks fashionable.", + "date": "2026年3月11日在美国发布评论", + "index": 7, + "rating_text": "5.0 颗星,最多 5 颗星", + "review_id": "R3KVTE9FUV2P1F", + "title": "5.0 颗星,最多 5 颗星 Love this bag!!!" + }, + { + "author": "Auvreel", + "body": "Quality is good for price I think it's great it has two side pockets and one front pocket. Good insulated on the inside. The color came how I wanted it black. The design is very cute.", + "date": "2026年3月12日在美国发布评论", + "index": 8, + "rating_text": "5.0 颗星,最多 5 颗星", + "review_id": "RWNTE0I1MOX96", + "title": "5.0 颗星,最多 5 颗星 Good lunch bag" + }, + { + "author": "Jonathan", + "body": "Una bolsa muy bonita", + "date": "2024年6月14日在墨西哥发布评论", + "index": 9, + "rating_text": null, + "review_id": "R13ADEU04NTBGT", + "title": "Exelente" + }, + { + "author": "Eagle eye", + "body": "Extremely poor quality", + "date": "2025年2月3日在印度发布评论", + "index": 10, + "rating_text": null, + "review_id": "R13S3MYF8D18BZ", + "title": "Don't buy this product" + }, + { + "author": "Maxweell", + "body": "Excelente produto, qualidade impecável, só não dou 5 estrelas porque pedi na cor preta e veio a cinza.", + "date": "2025年4月7日在巴西发布评论", + "index": 11, + "rating_text": null, + "review_id": "R1DC39PRGSKLV8", + "title": "Bolsa térmica" + }, + { + "author": "Me", + "body": "Excellent quality and roomy without being too large.", + "date": "2025年12月21日在沙特阿拉伯发布评论", + "index": 12, + "rating_text": null, + "review_id": "R1MO0B59P50FMI", + "title": "Excellent" + }, + { + "author": "PASHA", + "body": "I needed a lunch bag that could hold enough food for long workdays, and this Lifewit Insulated Lunch Box does the job perfectly. Pros: ✅ Spacious Interior – Easily fits multiple containers, snacks, and even a couple of drinks. ✅ Great Insulation – Keeps food cold for hours when paired with ice packs. ✅ Waterproof & Easy to Clean – The interior is leakproof, and spills wipe up easily. ✅ Durable and Well-Made – Strong zippers, sturdy handles, and quality materials. ✅ Looks Stylish – Professional design, great for office, work, or outdoor use. Cons: None! It’s exactly what I was looking for. Highly recommend this lunch bag if you need something roomy, well-insulated, and durable for work, picnics, or travel. Definitely a great buy!", + "date": "2025年2月9日在加拿大发布评论", + "index": 13, + "rating_text": null, + "review_id": "R1VU80JRRS4JQS", + "title": "Spacious, Durable, and Keeps Food Cold for Hours!" + } + ], + "limit": 50, + "stage": "reviews", + "total": 13, + "url": "https://www.amazon.com/-/zh/dp/B0B56CHMSC?th=1" +} // 评论的 \ No newline at end of file