您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
从500彩票网和澳客网提取足彩信息
// ==UserScript== // @name 500ok // @namespace http://tampermonkey.net/ // @version 0.1.0 // @description 从500彩票网和澳客网提取足彩信息 // @author onedayl // @match https://odds.500.com/fenxi/shuju-*.shtml // @match https://odds.500.com/fenxi/ouzhi-*.shtml // @match https://odds.500.com/fenxi/yazhi-*.shtml // @match https://odds.500.com/fenxi/daxiao-*.shtml // @match https://www.okooo.com/jingcai/ // @match https://www.okooo.com/soccer/match/*/history/ // @match https://www.okooo.com/soccer/match/*/exchanges/ // @match https://www.okooo.com/jingcai/shuju/peilv/ // @icon https://www.500.com/favicon.ico // @license MIT // @grant GM_addStyle // @grant GM_setClipboard // @grant GM_setValue // @grant GM_getValue // ==/UserScript== const style = ` #float-ball { position: fixed; bottom: 330px; right: 88px; width: 60px; height: 60px; line-height: 60px; border-radius: 30px; background-color: #E60013; color: #ffffff; font-size: 12px; font-weight: bold; text-align: center; z-index: 9999; cursor: pointer; } .message { max-width: 200px; text-align: center; color: #ffffff; font-size: 14px; font-weight: bold; background-color: #E60013; border-radius: 6px; padding: 10px 14px; position: fixed; top: -42px; left: calc(50% - 100px); z-index: 9999; transition: top 0.1s ease-out; } .message-show { top: 100px; } ` GM_addStyle(style); let gameId = ''; async function getDataInfo() { const infoList = [] // 比赛时间 const gameTime = /比赛时间(.*)/.exec(document.querySelector('.game_time').innerText)[1] infoList.push(gameTime) // 比赛场次 const gameSerial = document.querySelector('#link73').innerText infoList.push(gameSerial) // 对战双方 const hdNameEl = document.querySelectorAll('.hd_name') const teamHostEl = hdNameEl[0] const teamHost = teamHostEl.innerText const teamGuestEl = hdNameEl[2] const teamGuest = teamGuestEl.innerText infoList.push(`${teamHost} vs ${teamGuest}\n`) // 两队排名 const teamHostRank = teamHostEl.parentElement.nextSibling.innerText const teamGuestRank = teamGuestEl.parentElement.nextSibling.innerText infoList.push(`两队排名\n${teamHost}:${teamHostRank}`) infoList.push(`${teamGuest}:${teamGuestRank}\n`) // 交战历史 infoList.push(`两队交战历史\n赛事 比赛日期 主队 比分 客队 半场 赛果`) const gameHistoryRows = Array.from(document.querySelectorAll('#team_jiaozhan tr')) for(let i = 2; i < gameHistoryRows.length; i++) { const gameHistoryCols = Array.from(gameHistoryRows[i].querySelectorAll('td')) const gameHistoryInfo = [] for(let j = 0; j < gameHistoryCols.length; j++) { gameHistoryInfo.push(gameHistoryCols[j].innerText.replaceAll('\n', ' ')) if(j == 4) { break} } infoList.push(gameHistoryInfo.join(' ')) } await GM_setValue('totalInfo', infoList.join('\n')) await sleep(500) location.href = `https://odds.500.com/fenxi/ouzhi-${getGameId()}.shtml` } async function getEuropeIndexInfo() { const infoList = [] const avwinc2 = document.querySelector('#avwinc2').innerText const avdrawc2 = document.querySelector('#avdrawc2').innerText const avlostc2 = document.querySelector('#avlostc2').innerText const avwinj2 = document.querySelector('#avwinj2').innerText const avdrawj2 = document.querySelector('#avdrawj2').innerText const avlostj2 = document.querySelector('#avlostj2').innerText infoList.push(`\n\n胜负值\n初始胜负值:${avwinc2} ${avdrawc2} ${avlostc2}`) infoList.push(`即时胜负值:${avwinj2} ${avdrawj2} ${avlostj2}`) await GM_setValue('totalInfo', await GM_getValue('totalInfo') + infoList.join('\n')) await sleep(500) location.href = `https://odds.500.com/fenxi/yazhi-${getGameId()}.shtml` } async function getAsiaIndexInfo() { const infoList = [] const plTables = document.querySelectorAll('.pl_table_data') infoList.push(`\n\n让球\n初始让球:${plTables[3].innerText.split('\t').join(' ')}`) infoList.push(`即时让球:${plTables[2].innerText.replaceAll('↑', '').replaceAll('↓', '').split('\t').join(' ')}`) await GM_setValue('totalInfo', await GM_getValue('totalInfo') + infoList.join('\n')) await sleep(500) location.href = `https://odds.500.com/fenxi/daxiao-${getGameId()}.shtml` } async function getBigOrSmallInfo() { const infoList = [] const plTables = document.querySelectorAll('.pl_table_data') infoList.push(`\n\n进球\n初始进球:${plTables[3].innerText.split('\t').join(' ')}`) infoList.push(`即时进球:${plTables[2].innerText.replaceAll('↑', '').replaceAll('↓', '').split('\t').join(' ')}`) await GM_setValue('totalInfo', await GM_getValue('totalInfo') + infoList.join('\n')) await sleep(500) location.href = 'https://www.okooo.com/jingcai/' } async function getExchangeInfo() { const infoList = [] const trEls = document.querySelectorAll('.noBberBottom')[0].querySelectorAll('tr') for(let i = 2; i < trEls.length; i++) { const tdList = trEls[i].innerText.replaceAll('\n', '').split('\t') infoList.push(`${tdList[0]} ${tdList[5]} ${tdList[6]} ${tdList[7]} ${tdList[8]}`) } await GM_setValue('temExchangeInfo', JSON.stringify(infoList)) await sleep(500) location.href = 'https://www.okooo.com/jingcai/shuju/peilv/' } async function getKellyVarianceInfo() { const tableEl = document.querySelector(`#table${gameId}`) const infoList = [] if(tableEl) { const trList = tableEl.querySelectorAll('tr') const kvList = trList[trList.length -2 ].innerText.split('\t') const temExchangeInfo = await GM_getValue('temExchangeInfo') const exchangeInfo = JSON.parse(temExchangeInfo).map((itm, idx) => { return `${itm} ${kvList[idx + 1]}` }).join('\n') const infoHead = '球队名称 成交价 成交量 庄家盈亏 赔率 凯利方差(‰)' GM_setClipboard(await GM_getValue('totalInfo') + `\n\n市场信息\n${infoHead}\n${exchangeInfo}`, 'text', () => { showMessage('全部信息已提取并复制到剪贴板') }) await GM_setValue('gameId', '') await GM_setValue('tempExchangeInfo', '') await GM_setValue('totalInfo', '') } } async function showFloatBall() { const gameId = /shuju-(\d+)/.exec(location.href)[1] await GM_setValue('gameId', gameId) const floatBall = document.createElement('div') floatBall.id = 'float-ball' floatBall.innerText = '500ok' floatBall.addEventListener('click', async () => { await GM_setValue('gameId', getGameId()) await GM_setValue('totalInfo', '') getDataInfo() }) document.body.append(floatBall) } function getGameId() { return /-(\d+)/.exec(location.href)[1] } function showMessage(msgText) { const messageEl = document.createElement('div') messageEl.innerText = msgText messageEl.classList.add('message') document.body.append(messageEl) setTimeout(() => { messageEl.classList.add('message-show') }, 50) setTimeout(() => { messageEl.remove() }, 3000) } function sleep(ms) { return new Promise(resolve => { setTimeout(() => { resolve() }, ms) }) } (function() { 'use strict' window.onload = async function() { gameId = await GM_getValue('gameId') if(location.href.indexOf('fenxi/shuju') != -1) { showFloatBall() } else if(gameId != '') { if(location.href.indexOf('fenxi/ouzhi') != -1) { getEuropeIndexInfo() } else if (location.href.indexOf('fenxi/yazhi') != -1) { getAsiaIndexInfo() } else if (location.href.indexOf('fenxi/daxiao') != -1) { getBigOrSmallInfo() } else if (location.href == 'https://www.okooo.com/jingcai/') { showMessage('请点击进入对应比赛的分析页面') } else if (location.href.indexOf('/history/') != -1) { const okGameId = /\d+/.exec(location.href)[0] await GM_setValue('gameId', okGameId) location.href = `https://www.okooo.com/soccer/match/${okGameId}/exchanges/` } else if (location.href.indexOf('/exchanges/') != -1) { getExchangeInfo() } else if (location.href.indexOf('/jingcai/shuju/peilv/') != -1) { getKellyVarianceInfo() } } } })()
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址