1
常用安装脚本知识24年3月27日更新
60 阅
2
注册GCP150刀相关【有手就行】
33 阅
3
免费二级域名,包括可托管到cf的二级域名
33 阅
4
永久免费节点搭建!通过Cloudflare Worker部署免费的VLESS节点,4K高速,解锁Netflix、ChatGPT
29 阅
5
图片加速接口:缓存图片,加速访问,解决防盗链
22 阅
最新消息
apple001
· 04-13
给博主点赞
25263
· 03-28
收藏了。
123
· 02-05
春天来了,心情也好了。
123
· 02-03
太全了。
Typecho
· 01-26
欢迎加入 Typecho 大家族
首页
默认
日常
学习
技术
留言板
友链
关于
登 录
Search
标签搜索
cloudflare
壁纸
CF
白嫖
安装
脚本
图片
Linux
docker
域名
桌面壁纸
手机壁纸
NAT
LXC
哪吒
高清壁纸
优选
github
vps
代码
ws01
首页
栏目
默认
日常
学习
技术
留言板
友链
关于
登录
登 录
休闲小屋
休闲导航
bingGPT
wszx博客
免费图床2
短链接
网络记事本
ws01音乐
ws01视频解析
在 Linux系统下常用的解压和移动文件命令
使用dd重装系统,重装Debian12最小化底包
12 人围观
serv00注册等系列教程,服务器清理,ssh连接不上问题轻松解决,非挂代理
serv00系列教程,服务器清理,ssh连接不上问题轻松解决,非挂代理一、FTP、ssh 无法连接1、修改链接地址,sXXX.serv00.com 换成 webXXX.serv00.comssh服务器清理pkill -kill -u ${username} chmod -R 755 ~/* chmod -R 755 ~/.* rm -rf ~/.* rm -rf ~/*sN.serv00.com 18(或其IP)+端口22(或80或443)webN.serv00.com 12(或其IP)+端口22cacheN.serv00.com 8(或其IP)+端口22panelN.serv00.com 5 +端口22panelN.serv00.net +端口22USER.serv00.net +端口22其中大写的 N 是邮件中给定的服务器号2、ip被blockip解锁地址:https://www.serv00.com/ip_unban二、注册1、serv00注册对ip要求较高,邮箱也有可能收不到邮件和在垃圾箱中,所以正常注册不上就只能 换ip,换邮箱 。2、推荐下面方法:打开ProxySite-免费网络代理,在代理中注册,地址随意,最好选波兰ProxySite-免费网络代理 serv00注册输入:https://www.serv00.com/offer/create_new_accountct8注册输入【代理地址必须选择🇵🇱波兰】:https://www.ct8.pl/offer/create_new_account可选临时邮箱 ,最好是自己的邮箱,信息填完后serv00最下面一栏填写:freect8最下面一栏填写:MyDevil.net三、cloudflare保活1、登录 cloudflare ,创建 Workers 或 Pages 项目2、复制以下代码到 Workers 并部署addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) addEventListener('scheduled', event => { event.waitUntil(handleScheduled(event.scheduledTime)) }) async function handleRequest(request) { return new Response('Worker is running') } async function handleScheduled(scheduledTime) { const accounts = JSON.parse(ACCOUNTS_JSON) const results = await loginAccounts(accounts) await sendSummary(results) } async function loginAccounts(accounts) { const results = [] for (const account of accounts) { const result = await loginAccount(account) results.push({ ...account, ...result }) await delay(Math.floor(Math.random() * 8000) + 1000) } return results } function generateRandomUserAgent() { const browsers = ['Chrome', 'Firefox', 'Safari', 'Edge', 'Opera']; const browser = browsers[Math.floor(Math.random() * browsers.length)]; const version = Math.floor(Math.random() * 100) + 1; const os = ['Windows NT 10.0', 'Macintosh', 'X11']; const selectedOS = os[Math.floor(Math.random() * os.length)]; const osVersion = selectedOS === 'X11' ? 'Linux x86_64' : selectedOS === 'Macintosh' ? 'Intel Mac OS X 10_15_7' : 'Win64; x64'; return `Mozilla/5.0 (${selectedOS}; ${osVersion}) AppleWebKit/537.36 (KHTML, like Gecko) ${browser}/${version}.0.0.0 Safari/537.36`; } async function loginAccount(account) { const { username, password, panelnum, type } = account let url = type === 'ct8' ? 'https://panel.ct8.pl/login/?next=/' : `https://panel${panelnum}.serv00.com/login/?next=/` const userAgent = generateRandomUserAgent(); try { const response = await fetch(url, { method: 'GET', headers: { 'User-Agent': userAgent, }, }) const pageContent = await response.text() const csrfMatch = pageContent.match(/name="csrfmiddlewaretoken" value="([^"]*)"/) const csrfToken = csrfMatch ? csrfMatch[1] : null if (!csrfToken) { throw new Error('CSRF token not found') } const initialCookies = response.headers.get('set-cookie') || '' const formData = new URLSearchParams({ 'username': username, 'password': password, 'csrfmiddlewaretoken': csrfToken, 'next': '/' }) const loginResponse = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Referer': url, 'User-Agent': userAgent, 'Cookie': initialCookies, }, body: formData.toString(), redirect: 'manual' }) console.log(`Login response status: ${loginResponse.status}`) console.log(`Login response headers: ${JSON.stringify(Object.fromEntries(loginResponse.headers))}`) const loginResponseBody = await loginResponse.text() console.log(`Login response body: ${loginResponseBody.substring(0, 200)}...`) if (loginResponse.status === 302 && loginResponse.headers.get('location') === '/') { const loginCookies = loginResponse.headers.get('set-cookie') || '' const allCookies = combineCookies(initialCookies, loginCookies) const dashboardResponse = await fetch(url.replace('/login/', '/'), { headers: { 'Cookie': allCookies, 'User-Agent': userAgent, } }) const dashboardContent = await dashboardResponse.text() console.log(`Dashboard content: ${dashboardContent.substring(0, 200)}...`) if (dashboardContent.includes('href="/logout/"') || dashboardContent.includes('href="/wyloguj/"')) { const nowUtc = formatToISO(new Date()) const nowBeijing = formatToISO(new Date(Date.now() + 8 * 60 * 60 * 1000)) const message = `账号 ${username} (${type}) 于北京时间 ${nowBeijing}(UTC时间 ${nowUtc})登录成功!` console.log(message) await sendTelegramMessage(message) return { success: true, message } } else { const message = `账号 ${username} (${type}) 登录后未找到登出链接,可能登录失败。` console.error(message) await sendTelegramMessage(message) return { success: false, message } } } else if (loginResponseBody.includes('Nieprawidłowy login lub hasło')) { const message = `账号 ${username} (${type}) 登录失败:用户名或密码错误。` console.error(message) await sendTelegramMessage(message) return { success: false, message } } else { const message = `账号 ${username} (${type}) 登录失败,未知原因。请检查账号和密码是否正确。` console.error(message) await sendTelegramMessage(message) return { success: false, message } } } catch (error) { const message = `账号 ${username} (${type}) 登录时出现错误: ${error.message}` console.error(message) await sendTelegramMessage(message) return { success: false, message } } } function combineCookies(cookies1, cookies2) { const cookieMap = new Map() const parseCookies = (cookieString) => { cookieString.split(',').forEach(cookie => { const [fullCookie] = cookie.trim().split(';') const [name, value] = fullCookie.split('=') if (name && value) { cookieMap.set(name.trim(), value.trim()) } }) } parseCookies(cookies1) parseCookies(cookies2) return Array.from(cookieMap.entries()).map(([name, value]) => `${name}=${value}`).join('; ') } async function sendSummary(results) { const successfulLogins = results.filter(r => r.success) const failedLogins = results.filter(r => !r.success) let summaryMessage = '登录结果统计:\n' summaryMessage += `成功登录的账号:${successfulLogins.length}\n` summaryMessage += `登录失败的账号:${failedLogins.length}\n` if (failedLogins.length > 0) { summaryMessage += '\n登录失败的账号列表:\n' failedLogins.forEach(({ username, type, message }) => { summaryMessage += `- ${username} (${type}): ${message}\n` }) } console.log(summaryMessage) await sendTelegramMessage(summaryMessage) } async function sendTelegramMessage(message) { const telegramConfig = JSON.parse(TELEGRAM_JSON) const { telegramBotToken, telegramBotUserId } = telegramConfig const url = `https://api.telegram.org/bot${telegramBotToken}/sendMessage` try { await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ chat_id: telegramBotUserId, text: message }) }) } catch (error) { console.error('Error sending Telegram message:', error) } } function formatToISO(date) { return date.toISOString().replace('T', ' ').replace('Z', '').replace(/\.\d{3}Z/, '') } function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)) }3、设置变量,都在Workers 或 Pages设置中变量1变量名称:ACCOUNTS_JSON其中“帐号1服务器”为,如:你的帐号在s2.serv00.com,则填写:2,帐号可随意增加和减少,最后一个大括号后没逗号。[ { "username": "serv00帐号1", "password": "serv00帐号1密码", "panelnum": "帐号1服务器", "type": "serv00" }, { "username": "serv00帐号2", "password": "serv00帐号2密码", "panelnum": "帐号1服务器", "type": "serv00" }, { "username": "serv00帐号3", "password": "serv00帐号3密码", "panelnum": "帐号1服务器", "type": "serv00" } ]变量2变量名称:ACCOUNTS_JSON设置TG通知,不用不设置{ "telegramBotToken": "TG Token:如72492745590000:AAGCNhe663WD3z_PxTaUvSAYlKFBJ5Q3A2YQQQQ", "telegramBotUserId": "59515042110000" }变量3设置“触发事件”,如以下设置是:每月12号11时4分触发启动,可修改为任意时间11 4 12 * *
3个月前
0
0
9 人围观
哪吒面板添加其它信息代码
哪吒面板添加其它信息代码,两种方式中的小鸡多少都可以自由增减,要举一反三。样式一:<script> window.onload = function() { const affLinks = { 1: { price: '⏰2024.10.16;💰9.5$/年'}, 2: { price: '⏰2024.1.29;💰7¥/年'}, 3: { price: '⏰2025.6.5;💰8.8$/年'}, 4: { price: '⏰2024.1.8;💰7¥/年'}, 5: { price: '⏰2025.8.19;💰4.99¥/月'} }; const createPriceTag = (price) => { if (!price) return null; const $priceTag = document.createElement('span'); $priceTag.setAttribute('style', 'background-color: rgba(30, 144, 255, 0.8); color: white; padding: 3px 6px; border-radius: 5px; margin-left: 5px;'); $priceTag.textContent = price; return $priceTag; }; const uiCards = document.querySelectorAll('.ui.card'); uiCards.forEach((card) => { let cardId = card.id; if (cardId && affLinks[cardId]) { let $aLinkBox = document.createElement('div'); $aLinkBox.setAttribute('style', 'position: absolute; bottom: 8px; right: 10px; display: flex; align-items: center;'); let $priceTag = createPriceTag((typeof affLinks[cardId] === 'object') ? affLinks[cardId].price : null); if ($priceTag) { $aLinkBox.appendChild($priceTag); } card.appendChild($aLinkBox); } }); }; </script> 样式二<script> window.onload = function(){ const extraData = { 1: {pid: 23,shop: 'CC',price: ' 💰9.5$ / 年',cycle: '⏰续期:',start: '10/16/2023',expire: '10/16/2024', expire1: '2024.10.16;'}, 2: {pid: 23,shop: 'CC',price: ' 💰9.5$ / 年',cycle: '⏰续期:',start: '10/16/2023',expire: '10/16/2024', expire1: '2024.10.16;'}, 3: {pid: 23,shop: 'CC',price: ' 💰9.5$ / 年',cycle: '⏰续期:',start: '10/16/2023',expire: '10/16/2024', expire1: '2024.10.16;'}, 4: {pid: 23,shop: 'CC',price: ' 💰9.5$ / 年',cycle: '⏰续期:',start: '10/16/2023',expire: '10/16/2024', expire1: '2024.10.16;'}, 5: {pid: 23,shop: 'CC',price: ' 💰9.5$ / 年',cycle: '⏰续期:',start: '10/16/2023',expire: '10/16/2024', expire1: '2024.10.16;'} } const cats = document.querySelectorAll('.ui.accordion'); cats.forEach((e, i)=>{ let $catsTitle = e.querySelector('.title'); let ct = $catsTitle.innerText; ct = ct.trim(); let $itemCard = e.querySelectorAll('.ui.card'); let uiCardCount = $itemCard.length; $catsTitle.innerHTML = $catsTitle.innerHTML.replace(ct, ct+ ' ('+ uiCardCount +')'); $itemCard.forEach((ee, ii)=>{ let $content = ee.querySelector('.content'); let $descriptionGrid = ee.querySelector('.description .ui.grid'); let $itemTitle = $content.querySelector('.header'); let id = ee.getAttribute('id'); if(extraData[id]){ let pid = extraData[id].pid; pid = parseInt(pid); let shop = extraData[id].shop; let price = extraData[id].price; let start = extraData[id].start; let expire = extraData[id].expire; let expire1 = extraData[id].expire1; let cycle = extraData[id].cycle; if(price){ let $priceL = document.createElement('div'); $priceL.setAttribute('class', 'three wide column'); $priceL.innerHTML = '其它'; $descriptionGrid.insertBefore($priceL, $descriptionGrid.childNodes[$descriptionGrid.childNodes.length-3]); let $priceR = document.createElement('div'); $priceR.setAttribute('class', 'thirteen wide column'); $priceR.innerHTML = '<div class="ui blue label">'+cycle+ expire1 +price +'</a></div>'; $descriptionGrid.insertBefore($priceR, $descriptionGrid.childNodes[$descriptionGrid.childNodes.length-3]) } } }); }); } </script> 式样三【在用完整,加入续期和其它】:<style> :root { --popup-filter: blur(10px); --bb: blur(15px) brightness(110%); --lc-color-light: rgba(255, 255, 255, 0.7); --bc-color-light: rgba(255, 255, 255, 0.1); --the-color-light: rgba(255, 255, 255, 0.4); --he-color-light: rgba(255, 255, 255, 0.5); --message-color-light: rgb(22, 22, 22, 1); --popup-color-light:rgba(235, 235, 235, 0.6); --bc-color-dark: rgba(0, 0, 0, 0.3); --lc-color-dark: rgba(55, 55, 55, 0.8); --the-color-dark: rgba(70, 70, 70, 0.1); --he-color-dark: rgba(35, 35, 35, 0.7); --message-color-dark: rgb(235, 235, 235, 0.8); --popup-color-dark:rgba(78, 78, 78, 0.6); } /* 背景图片 */ body { content: " " !important; background: fixed !important; z-index: -1 !important; top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important; background-position: top !important; background-repeat: no-repeat !important; background-size: cover !important; background-image: url(https://121.freewebhostmost.com/) !important; font-family: Arial,Helvetica,sans-serif !important; } /* 大卡片 */ #app .ui.fluid.accordion { background-color: #fbfbfb26 !important; border-radius: 0.4rem !important; } /* 小卡片 */ .ui.four.cards>.card { border-radius: 0.6rem !important; background-color: #fafafaa3 !important; } /* 有点累状态进度条颜色 */ .ui.progress.warning .bar { background-image: linear-gradient(to right, #fa709a 0%, #fee140 100%); !important; } /* 高负载状态进度条颜色 */ .ui.progress.error .bar { background-image: linear-gradient(to top, #ff0844 0%, #ffb199 100%);important; } /* 高负载状态进度条颜色续费专用 */ .ui.progress.error1 .bar { background-image: linear-gradient(to right, #00CD00 0%, #008B00 100%);important; } </style> <script> window.onload = function() { const extraData = { 1: { pid: 23, shop: 'CC', price: ' 💰9.5$ / 年;', cycle: '⏰续期:', cycle1: '⏰', cycle2: '月流量:', cycle3: '3T ', cycle4: '⌚', start: '12/13/2023', expire: '12/13/2024', expire1: '2024.12.13;' }, 2: { pid: 23, shop: 'CC', price: ' 💰9.5$ / 年;', cycle: '⏰续期:', cycle1: '⏰', cycle2: '月流量:', cycle3: '3T ', cycle4: '⌚', start: '12/13/2023', expire: '12/13/2024', expire1: '2024.12.13;' }, 3: { pid: 23, shop: 'CC', price: ' 💰9.5$ / 年;', cycle: '⏰续期:', cycle1: '⏰', cycle2: '月流量:', cycle3: '3T ', cycle4: '⌚', start: '12/13/2023', expire: '12/13/2024', expire1: '2024.12.13;' }, } const cats = document.querySelectorAll('.ui.accordion'); cats.forEach((e, i) => { let $catsTitle = e.querySelector('.title'); let ct = $catsTitle.innerText; ct = ct.trim(); let $itemCard = e.querySelectorAll('.ui.card'); let uiCardCount = $itemCard.length; $catsTitle.innerHTML = $catsTitle.innerHTML.replace(ct, ct + ' (' + uiCardCount + ')'); $itemCard.forEach((ee, ii) => { let $content = ee.querySelector('.content'); let $descriptionGrid = ee.querySelector('.description .ui.grid'); let $itemTitle = $content.querySelector('.header'); let id = ee.getAttribute('id'); if (extraData[id]) { let pid = extraData[id].pid; let shop = extraData[id].shop; let price = extraData[id].price; let start = extraData[id].start; let expire = extraData[id].expire; let expire1 = extraData[id].expire1; let cycle = extraData[id].cycle; let cycle1 = extraData[id].cycle1; let cycle2 = extraData[id].cycle2; let cycle3 = extraData[id].cycle3; let cycle4 = extraData[id].cycle4; if (price) { let $priceL = document.createElement('div'); $priceL.setAttribute('class', 'three wide column'); $priceL.innerHTML = '续期'; $descriptionGrid.insertBefore($priceL, $descriptionGrid.childNodes[$descriptionGrid.childNodes.length - 3]); let remainingTime = ''; if (expire !== '∞') { let endTime = new Date(expire).getTime(); let nowTime = new Date().getTime(); let timeDiff = endTime - nowTime; let daysRemaining = Math.ceil(timeDiff / (1000 * 3600 * 24)); remainingTime = daysRemaining > 0 ? `<span style="color: red;"> 剩${daysRemaining}天</span>` : '<span style="color: red;">(已过期)</span>'; } let $priceR = document.createElement('div'); $priceR.setAttribute('class', 'thirteen wide column'); $priceR.innerHTML = '<div class="ui blue label">' + cycle1 + expire1 + cycle4 + remainingTime + '</div>'; $descriptionGrid.insertBefore($priceR, $descriptionGrid.childNodes[$descriptionGrid.childNodes.length - 3]); } if (price) { let $priceL = document.createElement('div'); $priceL.setAttribute('class', 'three wide column'); $priceL.innerHTML = '其它'; $descriptionGrid.insertBefore($priceL, $descriptionGrid.childNodes[$descriptionGrid.childNodes.length - 3]); let $priceR = document.createElement('div'); $priceR.setAttribute('class', 'thirteen wide column'); $priceR.innerHTML = '<div class="ui blue label">' + price + ' ' + cycle2 + ' ' + cycle3 + '</div>'; $descriptionGrid.insertBefore($priceR, $descriptionGrid.childNodes[$descriptionGrid.childNodes.length - 3]); } } }); }); } </script> <style> body { overflow-y: scroll; } </style> <!-- 返回顶部按钮 --> <button id="topBtn" class="top-btn" style="display: none; position: fixed; bottom: 20px; right: 20px; z-index: 9999; background-color: #ffcc00; color: white; border: none; border-radius: 50%; width: 40px; height: 40px; font-size: 20px; display: flex; align-items: center; justify-content: center; cursor: pointer;">▲</button> <script> // 获取返回顶部按钮 const topBtn = document.getElementById('topBtn'); // 当DOM加载完成后执行 document.addEventListener('DOMContentLoaded', function() { // 监听滚动事件 window.onscroll = function() { scrollFunction(); }; // 显示或隐藏返回顶部按钮 function scrollFunction() { if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) { topBtn.style.display = "block"; } else { topBtn.style.display = "none"; } } // 当点击按钮时滚动到顶部 topBtn.addEventListener('click', function() { document.body.scrollTop = 0; // 对于 Safari document.documentElement.scrollTop = 0; // 对于 Chrome, Firefox, IE 和 Opera }); }); </script>
3个月前
0
0
7 人围观
哪吒面板右下角添加 回到顶部按钮
哪吒面板右下角添加 回到顶部 按钮<style> body { overflow-y: scroll; } </style> <!-- 返回顶部按钮 --> <button id="topBtn" class="top-btn" style="display: none; position: fixed; bottom: 20px; right: 20px; z-index: 9999; background-color: #ffcc00; color: white; border: none; border-radius: 50%; width: 40px; height: 40px; font-size: 20px; display: flex; align-items: center; justify-content: center; cursor: pointer;">▲</button> <script> // 获取返回顶部按钮 const topBtn = document.getElementById('topBtn'); // 当DOM加载完成后执行 document.addEventListener('DOMContentLoaded', function() { // 监听滚动事件 window.onscroll = function() { scrollFunction(); }; // 显示或隐藏返回顶部按钮 function scrollFunction() { if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) { topBtn.style.display = "block"; } else { topBtn.style.display = "none"; } } // 当点击按钮时滚动到顶部 topBtn.addEventListener('click', function() { document.body.scrollTop = 0; // 对于 Safari document.documentElement.scrollTop = 0; // 对于 Chrome, Firefox, IE 和 Opera }); }); </script>
3个月前
0
0
7 人围观
电脑中的图标不显示,可以重建图标缓存
有时电脑中的图标不显示,这就需要重新建立图标缓存一键重建图标缓存.bat:rem 关闭Windows外壳程序explorer taskkill /f /im explorer.exe rem 清理系统图标缓存数据库 attrib -h -s -r "%userprofile%\AppData\Local\IconCache.db" del /f "%userprofile%\AppData\Local\IconCache.db" attrib /s /d -h -s -r "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\*" del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_32.db" del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_96.db" del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_102.db" del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_256.db" del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_1024.db" del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_idx.db" del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_sr.db" rem 清理 系统托盘记忆的图标 echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream rem 重启Windows外壳程序explorer start explorer
3个月前
0
0
14 人围观
一次可生成n加节点,YTB视频4K秒开!2024最新永久免费,订阅节点订阅搭建保姆教程
一次可生成n加节点,YTB视频4K秒开!2024最新永久免费,订阅节点订阅搭建保姆教程 本文转自: 科技共享 原项目地址 代码 创建邦定KV空间,命名:settings支持Windows、MacOS、Linux 优选IP使用,操作简单,速度快。创建好后, 第一次打开设置登录密码 第一次打开设置登录密码 第一次打开设置登录密码 其它根据需要再设置
4个月前
0
0
1
2
3
4
...
13
您是第
31382
位访客