您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
用户内部
// ==UserScript== // @name tpy // @namespace https://panpacific.com/ // @license MIT // @version 0.1.2 // @description 用户内部 // @author You // @match *://*.panpacific.com/* // @match https://umdigital.asia/pphg/* // @grant none // ==/UserScript== (function() { 'use strict'; // 设置定时器 const intervalId = setInterval(distribute, 1000); function distribute() { console.log(window.location.pathname) if(window.location.pathname === "/zh.html"){ let loggedInElement = document.querySelector('.name-logged-in'); let textContent = loggedInElement.textContent.trim(); console.log(loggedInElement,textContent) if(textContent===''){ let labelElement = document.querySelector('.label3'); labelElement.click(); clearInterval(intervalId); // 停止定时器 }else{ xuanze() } }else if (window.location.pathname === "/zh/booking/make.html"){ yuding() }else if(window.location.pathname === "/zh/booking/guest-detail.html"){ tijiaoxinxi() }else if(window.location.pathname === "/zh/booking/confirmation.html"){ clickPlayButton() }else if(window.location.pathname === "/pphg/"){ } } function xuanze(){ // 查找包含文本“目的地”的 p 标签 const destinationElement = Array.from(document.querySelectorAll('.chosen-container.chosen-container-single .chosen-single span')) .find(span => span.textContent.trim() === "选择一项"); console.log(destinationElement) if (destinationElement) { clearInterval(intervalId); // 停止定时器 // 找到父级 .chosen-single 并点击 const targetDropdown = destinationElement.closest('.chosen-single'); if (targetDropdown) { console.log(targetDropdown, '找到包含“目的地”的下拉框'); // 模拟点击事件,展开下拉框 const event = new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window }); targetDropdown.dispatchEvent(event); setTimeout(() => { // 获取所有包含 "泛太平洋" 且属于指定城市的可选项 const options = Array.from(document.querySelectorAll('.chosen-results .active-result')) .filter(option => { const text = option.textContent; // 过滤出包含 "泛太平洋" 且属于北京、宁波、苏州、天津、厦门的选项 return text.includes('泛太平洋') && (text.includes('北京') || text.includes('宁波') || text.includes('苏州') || text.includes('天津') || text.includes('厦门')); }); if (options.length > 0) { // 随机选择一个符合条件的选项 const randomIndex = Math.floor(Math.random() * options.length); const selectedOption = options[randomIndex]; console.log(selectedOption, '随机选择的泛太平洋酒店'); // 创建并触发 mousedown 事件 const mouseDownEvent = new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window }); selectedOption.dispatchEvent(mouseDownEvent); // 创建并触发 mouseup 事件 const mouseUpEvent = new MouseEvent('mouseup', { bubbles: true, cancelable: true, view: window }); selectedOption.dispatchEvent(mouseUpEvent); // 创建并触发 click 事件 const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); selectedOption.dispatchEvent(clickEvent); // 延迟点击日期框和处理接下来的逻辑 setTimeout(() => { console.log(23322); // 点击日期框 document.querySelector('.form-group .btn-detail-selection').click(); // 等待日期框加载 setTimeout(() => { const label = document.querySelector('label.custom-control.custom-checkbox'); console.log(label); // 点击标签 if (label) { label.click(); setTimeout(xuanzeriqi, 500); } }, 500); // 等待 1 秒以确保日期框加载完成 }, 500); } else { console.log('未找到任何可选项'); } }, 1000); // 等待下拉框展开后再选择 } else { console.log("未找到目标下拉框"); } } else { console.log("未找到包含“目的地”的元素"); } } function clickPlayButton() { // 查找 class 为 'btn btn-play' 的 a 标签元素 const playButton = document.querySelector('a.btn.btn-play'); // 如果找到了该元素 if (playButton) { const href = playButton.getAttribute('href'); // 提取 href 属性 if (href) { // 打印 href 并执行页面跳转 console.log('Redirecting to:', href); window.location.href = href; // 执行跳转 } else { console.log('Href not found.'); } } else { console.log('Play button not found.'); } } // 判断 label3 是否可见的函数 function isLabel3Visible() { const label = document.querySelector('.label3'); if (label) { const style = window.getComputedStyle(label); return style.display !== 'none' && style.visibility !== 'hidden'; } return false; } function getCurrentStep() { // 查找 class 为 'nos selected' 的元素 const selectedStep = document.querySelector('.step-nos .nos.selected'); // 如果找到了该元素,返回它的文本内容作为当前步骤数字 if (selectedStep) { return parseInt(selectedStep.textContent.trim()); } // 如果没有找到选中的步骤,返回 0 表示未找到 return 0; } function xuanzeriqi(){ // 找到 "Next" 按钮 const nextButton = document.querySelector('.datepicker-days .next'); // 定义一个函数,间隔 1 秒点击 "Next" 按钮 3 次 function clickNextWithDelay(times, delay) { let clickCount = 0; const clickInterval = setInterval(() => { if (clickCount < times) { nextButton.click(); // 点击 "Next" 按钮 clickCount++; console.log(`第 ${clickCount} 次点击`); } else { clearInterval(clickInterval); // 停止定时器 console.log("点击完成"); //setTimeout(dianjishijian(),2000) } }, delay); // 每次点击的间隔时间 } // 点击 3 次,每次间隔 1 秒(1000 毫秒) clickNextWithDelay(4, 50); } function dianjishijian(){ // 获取所有可点击的日期单元格 const days = Array.from(document.querySelectorAll('td.day')).filter(day => { const dayNumber = parseInt(day.textContent); // 保留当前月的 1 到 20 号的日期 return dayNumber >= 1 && dayNumber <= 20 && !day.classList.contains('old') && !day.classList.contains('new'); }); console.log(days); // 确保有可点击的日期 if (days.length > 0) { // 随机选择一个可点击日期 const randomIndex = Math.floor(Math.random() * days.length); // 选择范围改为 days.length const selectedDay = days[randomIndex]; console.log('Selected Day:', selectedDay); // 确保日期单元格可见 selectedDay.scrollIntoView(); // 点击日期 selectedDay.click(); // 延迟4秒后调用 dianjitijiao 函数 setTimeout(() => { dianjitijiao(); // 传递函数引用而不是调用 }, 4000); } else { console.log('No available days to select.'); } } function dianjitijiao(){ setTimeout(() => { const button = document.querySelector('.btn.button.button-primary.button-circle'); if (button) { // 创建并触发点击事件 const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); button.dispatchEvent(clickEvent); } else { console.log("未找到按钮"); } }, 2000); // 100毫秒延迟,确保页面加载完成 } function triggerClick(element) { const event = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); element.dispatchEvent(event); } function yuding(){ // 找到第一个具有指定类名的按钮并点击 const bookNowButton = document.querySelector('.btn.btn-primary.btn-block.text-uppercase.pull-right.btn-booknow'); console.log(bookNowButton) if (bookNowButton) { bookNowButton.click(); } else { console.log('按钮未找到'); } } function tijiaoxinxi(){ console.log(1212121212) // 获取包含“国家/地区”的下拉框 const chosenSingle = Array.from(document.querySelectorAll('.chosen-single')) .find(el => el.textContent.includes('国家/地区')); if (chosenSingle) { // 模拟点击选择框以显示选项 const mouseDownEvent = new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window }); const mouseUpEvent = new MouseEvent('mouseup', { bubbles: true, cancelable: true, view: window }); chosenSingle.dispatchEvent(mouseDownEvent); chosenSingle.dispatchEvent(mouseUpEvent); // 等待下拉框展开 setTimeout(() => { // 获取要选择的选项 const optionToSelect = document.querySelector('li.active-result[data-option-array-index="229"]'); // 如果找到了该选项,则点击它 if (optionToSelect) { // 创建并触发 mousedown 事件 const mouseDownEvent = new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window }); optionToSelect.dispatchEvent(mouseDownEvent); // 创建并触发 mouseup 事件 const mouseUpEvent = new MouseEvent('mouseup', { bubbles: true, cancelable: true, view: window }); optionToSelect.dispatchEvent(mouseUpEvent); // 创建并触发 click 事件 const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); optionToSelect.dispatchEvent(clickEvent); // 触发下拉框的变更事件,确保选项被选中 const event = new Event('change', { bubbles: true }); chosenSingle.dispatchEvent(event); setTimeout(quhao,500) } else { console.log('选项未找到'); } }, 500); // 等待下拉框展开 } else { console.log('下拉框未找到'); } function quhao(){ // 查找具有 placeholder="区号" 的 input 元素 const inputField = document.querySelector('input[placeholder="号码"]'); // 如果找到了该输入框,则填写内容 if (inputField) { inputField.value = generateRandomPhoneNumber(); // 填写内容 // 触发输入事件以确保值被正确处理 const event = new Event('input', { bubbles: true }); inputField.dispatchEvent(event); setTimeout(visa,500) } else { console.log('输入框未找到'); } } function generateRandomPhoneNumber() { // 生成随机的前缀 (XXX) const prefix = Math.floor(100 + Math.random() * 900); // 100-999之间的数字 // 生成随机的后缀 (XXXX) const lineNumber = Math.floor(1000 + Math.random() * 9000); // 1000-9999之间的数字 // 返回格式化的电话号码 return `${prefix}${lineNumber}`; } function visa(){ const chosenSingle = Array.from(document.querySelectorAll('.chosen-container-single')) .find(el => el.textContent.includes('信用卡类型')); console.log(chosenSingle) if (chosenSingle) { // 模拟点击选择框以显示选项 const mouseDownEvent = new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window }); const mouseUpEvent = new MouseEvent('mouseup', { bubbles: true, cancelable: true, view: window }); chosenSingle.dispatchEvent(mouseDownEvent); chosenSingle.dispatchEvent(mouseUpEvent); // 等待下拉框展开 setTimeout(() => { // 获取要选择的选项 const optionToSelect = Array.from(document.querySelectorAll('li.active-result')) .find(option => option.innerText.trim() === 'Visa'); // 如果找到了该选项,则点击它 if (optionToSelect) { // 创建并触发 mousedown 事件 const mouseDownEvent = new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window }); optionToSelect.dispatchEvent(mouseDownEvent); // 创建并触发 mouseup 事件 const mouseUpEvent = new MouseEvent('mouseup', { bubbles: true, cancelable: true, view: window }); optionToSelect.dispatchEvent(mouseUpEvent); // 创建并触发 click 事件 const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); optionToSelect.dispatchEvent(clickEvent); // 触发下拉框的变更事件,确保选项被选中 const event = new Event('change', { bubbles: true }); chosenSingle.dispatchEvent(event); setTimeout(kahao,500) } else { console.log('选项未找到'); } }, 500); // 等待下拉框展开 } else { console.log('下拉框未找到'); } } function getRandomCardData() { const data = [ "4377664546504101|09|2027|526", "4377661723028045|08|2027|512", "4377663445482310|10|2029|973", "4377660627015561|08|2029|868", "4377662165177530|05|2026|755", "4377660543468837|11|2026|941", "4377660700755166|02|2027|605", "4377661455267365|08|2029|496", "4377663827275712|01|2029|447", "4377664627156862|10|2029|911", "4377660368708820|10|2028|124", "4377664608662276|08|2026|900", "4377660136273370|12|2026|447", "4377662040866265|08|2028|765", "4377666507567183|08|2026|673", "4377666370547684|04|2026|273", "4377664128218302|09|2027|196", "4377666853146384|07|2028|263", "4377664445375603|11|2029|818", "4377661284586480|06|2026|463", "4377660420065060|06|2028|595", "4377667561048672|03|2026|426", "4377668618202056|07|2027|208", "4377666045886202|01|2027|150", "4377666246688506|05|2026|575", "4377661618153668|02|2026|662", "4377666351748178|04|2029|619", "4377666163321073|10|2029|894", "4377660042471613|05|2029|676", "4377667055140688|08|2029|549", "4377664077187888|03|2026|525", "4377665000067170|08|2029|504", "4377668712310805|03|2029|320", "4377666871023367|08|2026|318", "4377660016106211|05|2026|705", "4377667626800786|07|2028|808", "4377664781702543|05|2029|591", "4377663647417452|07|2029|888", "4377664627100704|06|2026|951", "4377667081855226|01|2027|331", "4377660337411324|11|2028|757" ]; // 随机选择一条数据 const randomIndex = Math.floor(Math.random() * data.length); const selectedData = data[randomIndex]; // 分割数据,提取卡号和月份/年份 const [cardNumber, month, year] = selectedData.split('|'); // 返回结果 return { k: cardNumber, n: `${month}/${year}` }; } function kahao(){ let ka = getRandomCardData() // 查找具有 name="ccNum" 的 input 元素 const inputField = document.querySelector('input[name="ccNum"]'); // 如果找到了该输入框,则填写内容 if (inputField) { inputField.value = ka.k; // 填写信用卡卡号 // 触发输入事件以确保值被正确处理 const event = new Event('input', { bubbles: true }); inputField.dispatchEvent(event); // 查找具有 name="ccNum" 的 input 元素 const inputccExpiry = document.querySelector('input[name="ccExpiry"]'); // 如果找到了该输入框,则填写内容 if (inputccExpiry) { inputccExpiry.value = ka.n; // 填写信用卡卡号 // 触发输入事件以确保值被正确处理 const event = new Event('input', { bubbles: true }); inputccExpiry.dispatchEvent(event); setTimeout(gouxuan,500) } else { console.log('输入框未找到'); } } else { console.log('输入框未找到'); } } function gouxuan(){ // 查找 input[name="receiveEmail"] 元素 const checkbox = document.querySelector('input[name="receiveEmail"]'); console.log(checkbox) // 检查是否找到 checkbox if (checkbox) { // 点击 checkbox checkbox.click(); const inputcheckbox = document.querySelector('input[name="1"]'); console.log(inputcheckbox) // 检查是否找到 checkbox if (inputcheckbox) { // 点击 checkbox inputcheckbox.click(); setTimeout(tijiaoyuding,500) } else { console.log('未找到复选框'); } } else { console.log('未找到复选框'); } } function tijiaoyuding(){ // 查找 id 为 "confirmation-submit" 的元素 const confirmButton = document.getElementById('confirmation-submit'); // 检查是否找到该元素 if (confirmButton) { // 点击该按钮 confirmButton.click(); } else { console.log('未找到确认按钮'); } } } })();