1
免费二级域名,包括可托管到cf的二级域名
125 阅
2
RN服务器添加 IPV6 地址
50 阅
3
永久免费节点搭建!通过Cloudflare Worker部署免费的VLESS节点,4K高速,解锁Netflix、ChatGPT
45 阅
4
图片加速接口:缓存图片,加速访问,解决防盗链
42 阅
5
常用安装脚本知识24年10月27日更新
39 阅
最新消息
apple001
· 04-13
给博主点赞
25263
· 03-28
收藏了。
123
· 02-05
春天来了,心情也好了。
123
· 02-03
太全了。
Typecho
· 01-26
欢迎加入 Typecho 大家族
首页
默认
日常
学习
技术
留言板
友链
关于
登 录
Search
标签搜索
cloudflare
壁纸
CF
白嫖
安装
图片
脚本
Linux
docker
域名
桌面壁纸
手机壁纸
NAT
LXC
HTML
网页
Caddy
代码
哪吒
高清壁纸
ws01
首页
栏目
默认
日常
学习
技术
留言板
友链
关于
登录
登 录
学习,技术
共 47 篇
23 人围观
Cloudflare五秒盾、JS质询、托管质询以及交互式质询的区别
Cloudflare五秒盾、JS质询、托管质询、交互式质询以及阻止的区别本文转自: 多记 - LOT.PM 一、JS质询(五秒盾)开启后,访客浏览器需要完成JS验证才能访问网站。其特点是用户无需点击,整个验证过程是自动的。二、托管质询托管质询(Managed Challenge)也就是俗称的五秒盾,托管质询是JS质询和交互式质询的结合版。实际上如果网络连接通畅,JS质询的完成时间其实是在1秒以内的,而之所以叫五秒盾其实是因为在中国大陆访问Cloudflare的连接性不佳,从而导致验证速度较慢,完成验证所需时间大概为5秒。Cloudflare会根据访客的环境、IP等参数进行评分,风险较低的用户会启用JS验证,而较高风险的用户会被要求完成交互式质询(需要完成鼠标点击的操作)。三、交互式质询交互式质询(Interactive Challenge)在某种意义上是验证码质询,也就是需要用户完成鼠标点击交互才能完成验证,这种验证比较影响用户体验,但安全性较JS质询而言更高。四、阻止没话说了,阻止,进不来了,别想访问五、总结队阻止,交互式质询安全性高,但用户体验较差。JS质询用户体验较好,但安全性不如交互式质询。
4个月前
0
0
16 人围观
Nginx安装与使用
Nginx安装与使用一、安装 Docker 和 Docker-Compose 一键命令curl -fsSL https://get.docker.com | sh && ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin二、进入home文件夹并在home文件夹下创建安装文件夹nginx,进入nginx文件夹并创建docker-compose.yml文件:cd /home/ && mkdir nginx && cd nginx && touch /home/nginx/docker-compose.yml三、进入/home/nginx ,打开docker-compose.yml文件,输入以下内容并保荐退出【如果是NAT小鸡,因端口没有全开,相应修改为可用的3个端口,例如:24888为一个可用端口,修改为24888:80,以此类推】:version: '3.8' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt四、在文件夹下启动 Nginxdocker-compose up -d # If using docker-compose-plugin docker compose up -d五、登录管理界面当您的 docker 容器运行时,通过管理界面的端口 81 连接到它。有时,由于密钥的原因,这可能需要一点时间,最好重启机器。reboot默认登录地址:http://ip:81默认管理员用户和密码:Email:admin@example.com Password:changeme使用此默认用户登录后,系统会立即要求您修改您的详细信息并更改您的密码。{dotted startColor="#ff6c6c" endColor="#1989fa"/}六、 在cf上设置和在 Nginx界面设置
5个月前
0
0
18 人围观
一键编辑删除cloudflare的DNS解析记录
一键编辑删除cloudflare的DNS解析记录由于 Cloudflare 的控制台没有批量删除解析的功能,一条一条删很麻烦。不过我们可以通过 Cloudflare 的 API 功能来实现批量删除解析,准确地讲是全部删除,目前还不能实现删除指定的解析。打开 用户 API 令牌 页面,点击 创建令牌 。然后点击 编辑区域 DNS 后的 使用模板 按钮。接着在 特定区域 右侧的下拉列表列表中选择你需要批量删除解析的域名。翻到网页底部,点击 继续以显示摘要。接着点击 创建令牌。复制虚线框内的令牌,保存备用。打开域名的概述页,下拉网页,在右下角找到 区域 ID。一、下面介绍第一种网页在线工具解决(不推荐,一页删除50条);在 梦牛网络注册并登录 二、下面介绍第二种脚本方法解决 (推荐) ;注意:脚本会删除指定域名的所有解析!请将以下的 替换为你之前创建的 API 令牌,将 替换为域名的区域 ID。如果你使用 Windows 系统,请使用以下 PowerShell 脚本。使用方法一:Windows 系统;$API_TOKEN = "你的 API 令牌" $ZONE_ID = "域名的区域 ID" $baseUrl = "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" $headers = @{ 'Authorization' = "Bearer $API_TOKEN" 'Content-Type' = "application/json" } $listUrl = $baseUrl + '?per_page=500' Write-Host $listUrl $records = Invoke-RestMethod -Uri $listUrl -Method 'GET' -Headers $headers $records = $records | Select-Object -ExpandProperty result foreach ($record in $records) { Write-Host "Deleting $($record.name) that points to $($record.content)" $deleteUrl = $baseUrl + '/' + $record.id Invoke-RestMethod -Uri $deleteUrl -Method 'DELETE' -Headers $headers Write-Host $deleteUrl }首先将脚本中的 替换为你之前创建的 API 令牌,将 替换为域名的区域 ID。然后右键脚本,点击 使用 PowerShell 运行,等待执行完成即可。
5个月前
0
0
4 人围观
windows设置开机默认开启数字小键盘
windows设置开机默认开启数字小键盘1、win+R打开运行,输入regedit打开注册表。2、找到目录HKEY_USERS.Default\Control Panel\Keyboard将InitialKeyboardIndicators项目的数据2147483648,修改为“80000002”,然后单击“确定”按钮。再重启电脑即可。
5个月前
0
0
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 * *
5个月前
0
0
1
2
3
4
...
10
您是第
36232
位访客