IT之家 6 月 9 日消息,在今天(6 月 9 日)召开的 2026 年全球开发者大会(WWDC)上,苹果为 Safari 浏览器新增 Notify Me 网页监控功能, 可持续检查网页变化,并在内容更新后及时提醒用户,适合追踪补货、价格或页面状态变化。 IT之家援引博文介绍,用户可以通过 Notify Me 监控网页,是把重复刷新网页的动作交给浏览器自动处理。 对普通用户来说,这能减少反复手动查看页面的时间成本,也让抢购、候补和库存关注变得更省心。 苹果官方并未透露关于该功能的更多细节,尚未披露检查频率、支持的网站类型,或通知形式等信息。
之前用这个佬发的脚本抢了一个 腾讯云抢购脚本 昨天我同事说看我用这个服务器还不错,让我给他也抢一个,然后我用的时候发现用不了了,用gpt帮我改出来的依旧一坨,蹲蹲有没有佬有能用的 2 个帖子 - 2 位参与者 阅读完整话题
IT之家 5 月 28 日消息,近日,重庆市两江新区市场监管局依法查处首例利用 AI 生成内容虚构商业场景、误导消费者的新型违法案件。 执法人员在日常网络巡查工作中发现,某企业为推广新款新能源汽车,滥用 AI 生成技术炮制营销短视频。视频全程虚构大量消费者到店看车、排队抢购的火爆场景,搭配“油价上涨,×× 车型卖疯了”等营销话术,通过企业微信公众号等网络平台广泛传播。 本案 AI 虚构热销场景视频截图 经查,视频内购车人群、门店热销画面均为 AI 智能合成,不存在任何真实交易记录,企业刻意营造车型供不应求、全民抢购的虚假氛围,以此诱导消费者盲目跟风消费。 相较于传统虚假广告,该案具备“全 AI 生成、纯场景虚构、无真人参演”的新型违法特征,隐蔽性、迷惑性更强,网络传播速度更快、覆盖面更广,扰乱正常市场宣传秩序。 IT之家注意到,针对该案新型违法模式,两江新区市场监管局精准对标法律法规,明确当事人两项违法事实,精准打击新技术滥用乱象。 一方面,当事人行为构成虚假广告违法。企业借助 AI 技术伪造车辆热销场景,虚构商品销售热度、消费者抢购行为,通过虚假且易引人误解的宣传内容欺骗、误导大众,违反《中华人民共和国广告法》第四条规定,构成第二十八条所指的违法行为,依法认定为虚假广告。 另一方面,当事人未落实 AI 生成内容法定标识义务。根据《人工智能生成合成内容标识办法》《互联网广告可识别性执法指南》要求,所有 AI 生成的商业广告内容,必须显著标注“本内容由 AI 生成”字样,并嵌入对应数字水印,保障公众知情权。而本案中,当事人仅在部分视频附带“#AI#”话题标签,未完成规范、显著的 AI 内容标识,未履行法定公示义务。 两江新区市场监管局提醒,AI 属于正常技术工具,可合法用于广告创意制作、内容优化等经营场景,新技术的应用本身不违法,但绝不能成为虚假宣传、违规营销的“挡箭牌”。任何广告宣传都必须坚守真实、合法、诚信的基本原则。
如题,这个还要每天预约抢购。是库存机吗?有没有坑?官网上最低配是 16+512 要 5999 。 另外现在入手 mac mini 跑龙虾、codex 啥的是不是 49 入国军?原本是想跑在一台旧台式上的,但旧台式快十年了,想退役了。
抢购了一台如题配置的云服务器,放着太浪费了,各位佬有什么想法吗? 10 个帖子 - 10 位参与者 阅读完整话题
如题,这个还要每天预约抢购。是库存机吗?有没有坑?官网上最低配是 16+512 要 5999 。 另外现在入手 mac mini 跑龙虾、codex 啥的是不是 49 入国军?原本是想跑在一台旧台式上的,但旧台式快十年了,想退役了。
如题,这个还要每天预约抢购。是库存机吗?有没有坑?官网上最低配是 16+512 要 5999 。 另外现在入手 mac mini 跑龙虾、codex 啥的是不是 49 入国军?原本是想跑在一台旧台式上的,但旧台式快十年了,想退役了。
如题,这个还要每天预约抢购。是库存机吗?有没有坑?官网上最低配是 16+512 要 5999 。 另外现在入手 mac mini 跑龙虾、codex 啥的是不是 49 入国军?原本是想跑在一台旧台式上的,但旧台式快十年了,想退役了。
如题,这个还要每天预约抢购。是库存机吗?有没有坑?官网上最低配是 16+512 要 5999 。 另外现在入手 mac mini 跑龙虾、codex 啥的是不是 49 入国军?原本是想跑在一台旧台式上的,但旧台式快十年了,想退役了。
如题,这个还要每天预约抢购。是库存机吗?有没有坑?官网上最低配是 16+512 要 5999 。 另外现在入手 mac mini 跑龙虾、codex 啥的是不是 49 入国军?原本是想跑在一台旧台式上的,但旧台式快十年了,想退役了。
在电脑和手机上几次没抢到后,我干脆给它挂我腾讯云服务器上去了 然后……额,昨天上午抢到了,结果我忘记付款超时了,昨天下午忘记抢了,今天上午又抢到了 所以?挂腾讯云自己的服务器上可以快人一步 哦对了,挂的是站内佬的抢购脚本,大家可以借朋友的机子,或者按小时开一下试试 6 个帖子 - 5 位参与者 阅读完整话题
IT之家 5 月 24 日消息,长安第四代 CS75 PLUS 蓝鲸超擎今日上市,上市抢购价区间 11.39-13.19 万元,并推出蓝鲸超擎真香型,一口价 10.99 万元。 IT之家注意到,该车提供安第斯灰、原子灰、尊贵黑、炫晶白、碧空蓝、星云辉、月华银灰 7 种颜色可选,车身长宽高分别为 4770/1910/1695mm。 内饰新增慕雪青山配色,配备 256 色环绕式氛围灯与浅色木纹膜片。新车全系标配 37 寸一体悬浮式三联屏与 AI 大模型智能助手,支持多终端无感互联及车辆智能控制功能。车辆配备定制开发版高德地图、18 扬声器车载音响系统,同时 标配 50W 手机无线快充 功能。 新车搭载天枢视觉版智能驾驶辅助系统, 支持 NCA 高快领航功能并配备专属提示小蓝灯 ,可在高速、快速路场景实现自动换道、车流跟随调速、汇流口避让换道等操作。车辆标配 LCC 车道巡航辅助功能,可辅助车辆保持车道居中行驶。泊车方面,车辆搭载 APA 自动泊车辅助系统,可适配多种常规泊车场景。 新车搭载 1.5T 发动机与驱动电机组成的混动系统。其中发动机最大功率 110kW,驱动电机最高转速 20000rpm、最大功率 180kW,电池放电功率 80kW,储能电池配备 1.7kWh 三元锂电池组。
挂了几个月的脚本,没想到今天凌晨1点左右突然收到抢购成功的提示 本来升级账号出现ABC,就已经毫无希望的时候,挂了几个月的脚本也一点消息都没有,谁知道突然就有货了。牛逼,甲骨文大善人! 6 个帖子 - 4 位参与者 阅读完整话题
昨天晚八点,预约狗东的月黑风高抢购鼠标 罗技的MX4,原价九百多,抢购价三百多,关键限量:2 准点抢购,果然不负所望,卡在付款环节,显示的是优惠价格390,一支付显示原价,再回来就售磬 有成功抢到的嘛? 2 个帖子 - 2 位参与者 阅读完整话题
# 跨境出海首选:腾讯云国际企业实名号,免实名服务器抢购与优惠充值指南 快速上云访问我们的官网: www.lingducloud.com ,客服 TG:cloudcup 在如今全球化业务飞速发展的时代,无论是从事跨境电商、海外独立站、游戏出海,还是搭建外贸企业官网,一款**高性能、高稳定性且部署便捷**的海外服务器都是不可或缺的底层支撑。 然而,国内云服务商严格的实名认证、繁琐的 ICP 备案流程,以及频繁的人脸识别核验,常常让许多急于上线业务的企业和开发者望而却步。针对这一痛点,腾讯云国际版( Tencent Cloud International )凭借其独特的政策优势与强大的基础设施,成为了出海用户的黄金选择。 --- ## 💡 为什么选择腾讯云国际企业实名号? 腾讯云国际站主要面向海外市场,其产品策略和合规要求与国内站有着本质的区别。拥有一个“国际企业实名号”,您将直接解锁以下核心优势: ### 1. 彻底告别繁琐,实现“免实名”体验 国内服务器必须绑定大陆身份证或营业执照,而腾讯云国际站只要不购买中国大陆境内的节点,**完全不需要进行国内的实名认证与人脸识别**。通过合规渠道获取的国际企业实名号,已经完成了高权限的资质认证,真正做到即开即用,保护隐私的同时,让您的业务能以最快速度上线。 ### 2. 全球节点部署,免备案直接上线 腾讯云在全球拥有数十个合规数据中心,包括中国香港、中国台湾、新加坡、硅谷、法兰克福等。 * **无需 ICP 备案:** 购买海外或港澳台节点,网站和应用无需任何备案手续,部署完成即可直接解析访问。 * **顶级的网络质量:** 特别是香港和新加坡节点,配备了优质的 CN2 直连线路,国内访问延迟极低,海外访问速度飞快。 ### 3. 稳定安全,免除“二次核验”断网风险 许多人曾尝试用他人身份注册国内号,但国内严苛的二次人脸核验机制往往导致账号随时被锁,业务被迫中断。而国际企业实名号遵循国际法律准则,**没有高频的人脸核验要求**,账号稳定性极高,是企业长期稳定运营的基石。 --- ## 💰 独家福利:国际企业号渠道充值享大额优惠 直接在腾讯云国际官网绑定个人海外信用卡(如 VISA 、MasterCard )不仅门槛高,而且无法享受批发级的折扣。 通过我们**官方合作的渠道代理商**,您可以享受专属的充值优惠: * **多种支付方式:** 支持国内主流支付方式,免去兑换外币和申请海外信用卡的烦恼。 * **充值返现/打折:** 渠道充值可享受专属折扣,充得多省得多,直接帮企业砍掉高达 20%~40% 的 IT 采购成本。 * **代金券叠加:** 新店开业或老客户续费,均有大额代金券不定期赠送。 --- ## 🛠 如何快速获取与使用? 1. **联系客服获取专属邀请链接:** 通过代理商发送的邀请邮件,直接注册或绑定现有的腾讯云国际账号。 2. **账号升级/交付:** 快速交付已完成高权限企业级认证的优质账号。 3. **优惠充值:** 提供您需要充值的金额,通过代理商渠道进行后台代充值,资金秒到账。 4. **自主选购:** 登录腾讯云国际站控制台,自由选购云服务器( Lighthouse/CVM )、云数据库、CDN 、全球短信等全线产品。 --- > 📌 **精明出海,从选对服务器开始!** > 腾讯云国际企业实名号,为您扫清海外拓展的一切门槛。优质免备案服务器 + 官方渠道超低折扣充值,让您的跨境业务快人一步,稳赚全球! > **赶快联系我们的在线客服,抢占限时优惠名额,开启您的全球化业务新篇章!**
抢购问题描述 平时正常的黑白号测试正常,一到抢购期间就出现: 429 空响应 调整为轮询策略后(每 2 秒抢购一次),在抢原的时候依然 429 空响应 ; 在抢精品的时候出现 4293 ,一直不出单。 想问问大佬们原因: 是 TLS 指纹出问题了? 还是抢购策略有问题? 或者是 IP 的问题? 要是能解决这个问题,价格在合理范围内随便大佬开。
抢购问题描述 平时正常的黑白号测试正常,一到抢购期间就出现: 429 空响应 调整为轮询策略后(每 2 秒抢购一次),在抢原的时候依然 429 空响应 ; 在抢精品的时候出现 4293 ,一直不出单。 想问问大佬们原因: 是 TLS 指纹出问题了? 还是抢购策略有问题? 或者是 IP 的问题? 要是能解决这个问题,价格在合理范围内随便大佬开。
抢购问题描述 平时正常的黑白号测试正常,一到抢购期间就出现: 429 空响应 调整为轮询策略后(每 2 秒抢购一次),在抢原的时候依然 429 空响应 ; 在抢精品的时候出现 4293 ,一直不出单。 想问问大佬们原因: 是 TLS 指纹出问题了? 还是抢购策略有问题? 或者是 IP 的问题? 要是能解决这个问题,价格在合理范围内随便大佬开。 1 个帖子 - 1 位参与者 阅读完整话题
抢购问题描述 平时正常的黑白号测试正常,一到抢购期间就出现: 429 空响应 调整为轮询策略后(每 2 秒抢购一次),在抢原的时候依然 429 空响应 ; 在抢精品的时候出现 4293 ,一直不出单。 想问问大佬们原因: 是 TLS 指纹出问题了? 还是抢购策略有问题? 或者是 IP 的问题? 要是能解决这个问题,价格在合理范围内随便大佬开。
腾讯云新用户38一年的服务器,抢了好几天都没抢到就让gpt写了个脚本 购买地址: https://cloud.tencent.com/act/pro/featured-202604?from=29774 // ==UserScript== // @name Tencent Cloud Flash Helper // @namespace local.tencent.cloud.flash // @version 0.1.0 // @author GPT5.5 // @description Region-selectable bounded request helper for Tencent Cloud activity page. // @match https://cloud.tencent.com/act/pro/featured-202604* // @run-at document-idle // @grant none // ==/UserScript== (function () { 'use strict'; const API_URL = 'https://act-api.cloud.tencent.com/dianshi/do-goods'; const STORAGE_KEY = 'tencentCloudFlashHelperState'; const DEFAULT_INTERVAL_MS = 200; const DEFAULT_DURATION_MS = 15 * 1000; const EARLY_START_MS = 500; const REGIONS = [ { id: 4, label: '上海' }, { id: 8, label: '广州' }, { id: 1, label: '北京' }, ]; const PAYLOAD_TEMPLATE = { activity_id: 162634773874417, goods: [ { act_id: 1784747698901873, type: 'lighthouse_v5', goods_param: { zone: '', timeSpanUnit: '12m', scenario: '0', goodsNum: 1, ddocUnionConnect: 0, area: 1, regionId: 4, BlueprintId: 'LINUX_UNIX', imageId: 'lhbp-qje6xg9k', type: 'bundle_budget_mc_lg4_01', }, page_from: 'act_buy', }, ], preview: 0, agent_channel: { fromChannel: '', fromSales: '', isAgentClient: false, fromUrl: 'https://cloud.tencent.com/act/pro/featured-202604?fromSource=gwzcw.12145564.12145564.12145564&utm_medium=cpc&utm_id=gwzcw.12145564.12145564.12145564&thirdparty=1&tk=3af777ac-73d2-4b06-8f39-5ed1b50d11c5#MS', agent_key: '', }, business: { id: 23544, from: 'lightningDeals', }, }; function clone(value) { return JSON.parse(JSON.stringify(value)); } function buildPayload(regionId) { const payload = clone(PAYLOAD_TEMPLATE); payload.goods[0].goods_param.regionId = Number(regionId); return payload; } function parseCookie(cookieText) { return String(cookieText || '') .split(';') .map((item) => item.trim()) .filter(Boolean) .reduce((cookies, item) => { const eqIndex = item.indexOf('='); if (eqIndex === -1) return cookies; const key = item.slice(0, eqIndex); const value = item.slice(eqIndex + 1); cookies[key] = decodeURIComponent(value); return cookies; }, {}); } function hash33(text) { let hash = 5381; for (let i = 0; i < text.length; i += 1) { hash += (hash << 5) + text.charCodeAt(i); } return String(hash & 0x7fffffff); } function deriveCsrfToken(cookieText) { const cookies = parseCookie(cookieText); if (cookies.skey) return hash33(cookies.skey); if (cookies.p_skey) return hash33(cookies.p_skey); if (cookies.qcmainCSRFToken) return cookies.qcmainCSRFToken; return ''; } function resolveCsrfToken(cookieText) { const cookies = parseCookie(cookieText); if (cookies.skey) return { token: hash33(cookies.skey), source: 'skey' }; if (cookies.p_skey) return { token: hash33(cookies.p_skey), source: 'p_skey' }; if (cookies.qcmainCSRFToken) return { token: cookies.qcmainCSRFToken, source: 'qcmainCSRFToken' }; return { token: '', source: '' }; } function maskSecret(value) { const text = String(value || ''); if (!text) return ''; if (text.length <= 8) return `${text.slice(0, 2)}****`; return `${text.slice(0, 4)}****${text.slice(-3)}`; } function inspectAuthState(cookieText) { const cookies = parseCookie(cookieText); const keys = Object.keys(cookies); const resolved = resolveCsrfToken(cookieText); return { cookieFound: keys.length > 0, cookieCount: keys.length, hasSkey: Boolean(cookies.skey), hasPSkey: Boolean(cookies.p_skey), hasUin: Boolean(cookies.uin), csrfFound: Boolean(resolved.token), csrfSource: resolved.source, csrfMasked: maskSecret(resolved.token), }; } function clamp(value, min, max) { return Math.min(Math.max(value, min), max); } function calculatePanelPosition(options) { const margin = 8; const maxLeft = Math.max(margin, options.viewportWidth - options.panelWidth - margin); const maxTop = Math.max(margin, options.viewportHeight - options.panelHeight - margin); return { left: clamp(options.pointerX - options.offsetX, margin, maxLeft), top: clamp(options.pointerY - options.offsetY, margin, maxTop), }; } function getNextWindow(now = new Date()) { const saleTimes = [ { hour: 10, minute: 0, label: '10:00' }, { hour: 15, minute: 0, label: '15:00' }, ]; for (const sale of saleTimes) { const saleAt = new Date(now); saleAt.setHours(sale.hour, sale.minute, 0, 0); const startAt = new Date(saleAt.getTime() - EARLY_START_MS); if (now < new Date(saleAt.getTime() + DEFAULT_DURATION_MS)) { return { saleLabel: sale.label, saleAt, startAt, endAt: new Date(startAt.getTime() + DEFAULT_DURATION_MS), }; } } const tomorrow = new Date(now); tomorrow.setDate(tomorrow.getDate() + 1); tomorrow.setHours(10, 0, 0, 0); return { saleLabel: '10:00', saleAt: tomorrow, startAt: new Date(tomorrow.getTime() - EARLY_START_MS), endAt: new Date(tomorrow.getTime() - EARLY_START_MS + DEFAULT_DURATION_MS), }; } function isSuccessResponse(data) { if (!data || typeof data !== 'object') return false; if (data.code === 0) return true; if (typeof data.msg === 'string' && data.msg.toLowerCase() === 'ok') return true; return false; } const core = { API_URL, REGIONS, buildPayload, calculatePanelPosition, deriveCsrfToken, inspectAuthState, getNextWindow, isSuccessResponse, maskSecret, parseCookie, }; window.__TencentCloudFlashCore = core; if (!window.document || !document.body) return; let timer = null; let sender = null; let countdown = null; let running = false; let panel; function loadState() { try { return JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}'); } catch (_) { return {}; } } function saveState(state) { localStorage.setItem(STORAGE_KEY, JSON.stringify({ ...loadState(), ...state })); } function formatTime(date) { return date.toLocaleTimeString('zh-CN', { hour12: false }); } function getEls() { return { region: panel.querySelector('[data-role="region"]'), arm: panel.querySelector('[data-role="arm"]'), testSend: panel.querySelector('[data-role="test-send"]'), cookieState: panel.querySelector('[data-role="cookie-state"]'), csrfState: panel.querySelector('[data-role="csrf-state"]'), status: panel.querySelector('[data-role="status"]'), log: panel.querySelector('[data-role="log"]'), }; } function setStatus(message) { getEls().status.textContent = message; } function setRunningControls(isRunning) { const els = getEls(); els.arm.textContent = isRunning ? '停止' : '开始'; els.arm.classList.toggle('is-stop', isRunning); } function applyPanelPosition(position) { if (!position || typeof position.left !== 'number' || typeof position.top !== 'number') return; const rect = panel.getBoundingClientRect(); const next = calculatePanelPosition({ pointerX: position.left, pointerY: position.top, offsetX: 0, offsetY: 0, panelWidth: rect.width, panelHeight: rect.height, viewportWidth: window.innerWidth, viewportHeight: window.innerHeight, }); panel.style.left = `${next.left}px`; panel.style.top = `${next.top}px`; panel.style.right = 'auto'; panel.style.bottom = 'auto'; } function enablePanelDrag() { const handle = panel.querySelector('[data-role="drag-handle"]'); if (!handle) return; handle.addEventListener('pointerdown', (event) => { if (event.button !== 0) return; const rect = panel.getBoundingClientRect(); const offsetX = event.clientX - rect.left; const offsetY = event.clientY - rect.top; handle.setPointerCapture?.(event.pointerId); event.preventDefault(); function movePanel(moveEvent) { const next = calculatePanelPosition({ pointerX: moveEvent.clientX, pointerY: moveEvent.clientY, offsetX, offsetY, panelWidth: rect.width, panelHeight: rect.height, viewportWidth: window.innerWidth, viewportHeight: window.innerHeight, }); panel.style.left = `${next.left}px`; panel.style.top = `${next.top}px`; panel.style.right = 'auto'; panel.style.bottom = 'auto'; } function stopDragging(upEvent) { document.removeEventListener('pointermove', movePanel); document.removeEventListener('pointerup', stopDragging); handle.releasePointerCapture?.(upEvent.pointerId); const finalRect = panel.getBoundingClientRect(); saveState({ panelPosition: { left: finalRect.left, top: finalRect.top } }); } document.addEventListener('pointermove', movePanel); document.addEventListener('pointerup', stopDragging); }); } function addLog(message, data) { const log = getEls().log; const line = document.createElement('div'); const time = formatTime(new Date()); const suffix = data === undefined ? '' : ` ${JSON.stringify(data).slice(0, 260)}`; line.textContent = `[${time}] ${message}${suffix}`; log.prepend(line); while (log.children.length > 12) { log.removeChild(log.lastChild); } } function readConfig() { const els = getEls(); const state = { regionId: Number(els.region.value), }; saveState(state); return state; } function buildHeaders(config) { const token = resolveCsrfToken(document.cookie).token; const headers = { Accept: 'application/json, text/plain, */*', 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest', }; if (token) headers['X-CSRF-TOKEN'] = token; return headers; } function formatAuthState(authState) { const cookieText = authState.cookieFound ? `已检测可读项(${authState.cookieCount} 项,skey:${authState.hasSkey ? '有' : '无'},p_skey:${authState.hasPSkey ? '有' : '无'},uin:${authState.hasUin ? '有' : '无'})` : '未检测到可读 Cookie,HttpOnly Cookie 仍可能由浏览器自动携带'; const csrfText = authState.csrfFound ? `已获取(来源:${authState.csrfSource},${authState.csrfMasked})` : '未获取,请确认已登录腾讯云'; return { cookieText, csrfText }; } function refreshAuthState(writeLog = false) { const els = getEls(); const authState = inspectAuthState(document.cookie); const formatted = formatAuthState(authState); els.cookieState.textContent = formatted.cookieText; els.csrfState.textContent = formatted.csrfText; if (writeLog) { addLog(`登录态检测:可读 Cookie ${authState.cookieFound ? '已检测' : '未检测'},CSRF ${authState.csrfFound ? '已获取' : '未获取'}`); } return authState; } async function sendOnce(config) { const response = await fetch(API_URL, { method: 'POST', mode: 'cors', credentials: 'include', headers: buildHeaders(config), body: JSON.stringify(buildPayload(config.regionId)), }); const text = await response.text(); let data; try { data = JSON.parse(text); } catch (_) { data = { status: response.status, body: text.slice(0, 500) }; } return { ok: response.ok, status: response.status, data }; } function stop(reason) { running = false; if (timer) clearTimeout(timer); if (sender) clearInterval(sender); if (countdown) clearInterval(countdown); timer = null; sender = null; countdown = null; setRunningControls(false); setStatus(reason || '已停止'); } function clearScheduledWork() { if (timer) clearTimeout(timer); if (sender) clearInterval(sender); if (countdown) clearInterval(countdown); timer = null; sender = null; countdown = null; } function startSending(config, activeWindow) { if (running) return; running = true; setRunningControls(true); const startedAt = Date.now(); let attempts = 0; setStatus(`发送中:${activeWindow.saleLabel}`); addLog(`开始发送,地区 ${config.regionId}`); sender = setInterval(async () => { attempts += 1; if (Date.now() - startedAt >= DEFAULT_DURATION_MS) { addLog(`到达 15 秒上限,共 ${attempts} 次`); stop('已到达发送上限'); return; } try { const result = await sendOnce(config); addLog(`第 ${attempts} 次,HTTP ${result.status}`, result.data); if (result.ok && isSuccessResponse(result.data)) { stop(`检测到成功响应,共 ${attempts} 次`); } } catch (error) { addLog(`第 ${attempts} 次失败`, { message: error.message }); } }, DEFAULT_INTERVAL_MS); } function arm() { clearScheduledWork(); running = false; setRunningControls(true); const config = readConfig(); const authState = refreshAuthState(true); const activeWindow = getNextWindow(new Date()); const waitMs = Math.max(0, activeWindow.startAt.getTime() - Date.now()); setStatus(`已设置:${activeWindow.saleLabel},${formatTime(activeWindow.startAt)} 开始`); addLog(`等待 ${activeWindow.saleLabel},提前 0.5 秒开始,地区 ${config.regionId}`); if (!authState.cookieFound || !authState.csrfFound) { addLog('提示:Cookie 或 CSRF 未检测完整,请确认已登录腾讯云'); } countdown = setInterval(() => { const leftMs = activeWindow.startAt.getTime() - Date.now(); if (leftMs <= 0) { setStatus(`即将发送:${activeWindow.saleLabel}`); return; } setStatus(`已设置:${activeWindow.saleLabel},剩余 ${Math.ceil(leftMs / 1000)} 秒`); }, 1000); timer = setTimeout(() => { if (countdown) clearInterval(countdown); countdown = null; startSending(config, activeWindow); }, waitMs); } function toggleRun() { if (timer || sender || countdown || running) { stop('手动停止'); return; } arm(); } async function testSendOnce() { const config = readConfig(); const authState = refreshAuthState(true); setStatus('正在发送测试请求...'); addLog(`测试请求:立即发送一次,地区 ${config.regionId}`); if (!authState.cookieFound || !authState.csrfFound) { addLog('提示:Cookie 或 CSRF 未检测完整,请确认已登录腾讯云'); } try { const result = await sendOnce(config); addLog(`测试请求完成,HTTP ${result.status}`, result.data); setStatus(`测试请求完成:HTTP ${result.status}`); } catch (error) { addLog('测试请求失败', { message: error.message }); setStatus('测试请求失败'); } } function createPanel() { const state = loadState(); panel = document.createElement('div'); panel.id = 'tencent-cloud-flash-helper'; panel.innerHTML = ` <style> #tencent-cloud-flash-helper { position: fixed; right: 16px; bottom: 16px; z-index: 2147483647; width: 320px; box-sizing: border-box; padding: 12px; border: 1px solid rgba(0, 0, 0, 0.14); border-radius: 8px; background: #ffffff; color: #1f2329; font: 13px/1.45 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; box-shadow: 0 8px 26px rgba(0, 0, 0, 0.18); } #tencent-cloud-flash-helper * { box-sizing: border-box; } #tencent-cloud-flash-helper .tc-row { display: grid; grid-template-columns: 70px 1fr; gap: 8px; align-items: center; margin-top: 8px; } #tencent-cloud-flash-helper label { color: #4e5969; } #tencent-cloud-flash-helper input, #tencent-cloud-flash-helper select { width: 100%; height: 30px; border: 1px solid #c9cdd4; border-radius: 4px; padding: 4px 8px; font: inherit; } #tencent-cloud-flash-helper .tc-title { display: flex; justify-content: space-between; align-items: center; font-weight: 600; cursor: move; user-select: none; touch-action: none; } #tencent-cloud-flash-helper .tc-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 10px; } #tencent-cloud-flash-helper button { height: 32px; border: 0; border-radius: 4px; background: #176bff; color: #fff; cursor: pointer; font: inherit; } #tencent-cloud-flash-helper button.is-stop { background: #d54941; } #tencent-cloud-flash-helper .tc-status { margin-top: 10px; padding: 8px; border-radius: 4px; background: #f2f3f5; color: #1f2329; } #tencent-cloud-flash-helper .tc-auth { margin-top: 10px; padding: 8px; border-radius: 4px; background: #f7f8fa; color: #1f2329; } #tencent-cloud-flash-helper .tc-auth div { margin-top: 4px; word-break: break-word; } #tencent-cloud-flash-helper .tc-log { margin-top: 8px; max-height: 180px; overflow: auto; font-size: 12px; color: #4e5969; word-break: break-all; } </style> <div class="tc-title" data-role="drag-handle"> <span>腾讯云抢购辅助</span> <span>10:00 / 15:00</span> </div> <div class="tc-row"> <label>地区</label> <select data-role="region"> ${REGIONS.map((region) => `<option value="${region.id}">${region.label}</option>`).join('')} </select> </div> <div class="tc-auth"> <div><strong>可读 Cookie:</strong><span data-role="cookie-state">待检测</span></div> <div><strong>X-CSRF-TOKEN:</strong><span data-role="csrf-state">待检测</span></div> </div> <div class="tc-actions"> <button type="button" data-role="arm">开始</button> <button type="button" data-role="test-send">测试请求</button> </div> <div class="tc-status" data-role="status">请选择地区并点击开始</div> <div class="tc-log" data-role="log"></div> `; document.body.appendChild(panel); applyPanelPosition(state.panelPosition); enablePanelDrag(); const els = getEls(); els.region.value = String(state.regionId || 4); setRunningControls(false); els.arm.addEventListener('click', toggleRun); els.testSend.addEventListener('click', testSendOnce); refreshAuthState(false); } createPanel(); })(); 7 个帖子 - 6 位参与者 阅读完整话题