吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 675|回复: 37
收起左侧

[其他原创] 修改【自用挪车二维码..... 】,支持Server酱消息,需要服务器部署

  [复制链接]
qyc0 发表于 2024-11-13 11:42
本帖最后由 qyc0 于 2024-11-13 16:57 编辑

原帖地址:自用挪车二维码,免服务器,可微信通知,可拨打电话     https://www.52pojie.cn/thread-1979717-1-1.html
已经在原帖第550楼po过修改后的代码了
因我个人需要做Server酱的整合通知,同时也有服务器,目前适配了方糖的SCT微信通知整合以及用PHP规避了前端js泄露,同时加入了时间戳,一分钟只能通知一次,避免消息轰炸。

第二次更新在6楼,6楼代码已更新支持PushDeer。
2024/11/13测试过可在宝塔环境下部署。nginx:1.25.5;php8.0
index.html
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>通知车主挪车</title>
<style>
    * { box-sizing: border-box; margin: 0; padding: 0; }
    body { font-family: Arial, sans-serif; display: flex; align-items: center; justify-content: center; height: 100vh; background: #f0f2f5; color: #333; }
    .container { text-align: center; padding: 20px; width: 100%; max-width: 400px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); background: #fff; }
    h1 { font-size: 24px; margin-bottom: 20px; color: #007bff; }
    p { margin-bottom: 20px; font-size: 16px; color: #555; }
    button {
        width: 100%;
        padding: 15px;
        margin: 10px 0;
        font-size: 18px;
        font-weight: bold;
        color: #fff;
        border: none;
        border-radius: 6px;
        cursor: pointer;
        transition: background 0.3s;
    }
    .notify-btn { background: #28a745; }
    .notify-btn:hover { background: #218838; }
    .call-btn { background: #17a2b8; }
    .call-btn:hover { background: #138496; }
    .disabled {
        background: #6c757d !important;
        cursor: not-allowed;
    }
</style>
</head>
<body>
<div class="container">
    <h1>通知车主挪车</h1>
    <p>如需通知车主,请点击以下按钮</p>
    <button id="notifyButton" class="notify-btn">通知车主挪车</button>
    <button class="call-btn">拨打车主电话</button>
</div>
<script>
function startCooldown(duration) {
    const button = document.getElementById('notifyButton');
    button.disabled = true;
    button.classList.add('disabled');
 
    // 使用后端提供的冷却时间
    let cooldown = duration; 
    button.textContent = `冷却中 (${cooldown}s)`;
 
    const interval = setInterval(() => {
        cooldown -= 1;
        if (cooldown > 0) {
            button.textContent = `冷却中 (${cooldown}s)`;
        } else {
            clearInterval(interval);
            button.disabled = false;
            button.classList.remove('disabled');
            button.textContent = "通知车主挪车";
        }
    }, 1000);
}
 
function notifyOwner() {
    fetch("/fetch.php")
        .then(response => response.json())
        .then(data => {
            if (data.code === 0) {
                alert("通知已发送!");
                // 这里启动60秒的冷却
                startCooldown(60);
            } else if (data.code === 1 && data.cooldown) {
                // 如果有冷却时间,则开始冷却计时
                startCooldown(data.cooldown);
                alert(data.message);
            } else {
                alert("通知发送失败,请稍后重试。");
            }
        })
        .catch(error => {
            console.error("Error sending notification:", error);
            alert("通知发送出错,请检查网络连接。");
        });
}
 
function callOwner() {
    window.location.href = "tel:13188888888";
}
</script>
</body>
</html>


网站同目录下创建fetch.php
[Asm] 纯文本查看 复制代码
<?php
// fetch.php
 
// 定义用于保存时间戳的文件路径
$timestampFile = '/tmp/api_call_timestamp.txt';
$cooldownTime = 60; // 冷却时间(秒)
 
// 当前时间戳
$currentTime = time();
 
// 检查文件是否存在以及是否在冷却中
if (file_exists($timestampFile)) {
    $lastCalled = file_get_contents($timestampFile);
    $timeElapsed = $currentTime - (int)$lastCalled;
     
    if ($timeElapsed < $cooldownTime) {
        $remainingTime = $cooldownTime - $timeElapsed;
        exit(json_encode(['code' => 1, 'message' => '请求过于频繁,请稍后再试', 'cooldown' => $remainingTime]));
    }
}
 
// 执行外部 API 调用
$apiUrl = 'https://sctapi.ftqq.com/<sendkey>.send?title=挪车通知&desp=有人扫码通知你挪车啦';  //<sendkey>请自行为自己的SCT开头的密钥
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
 
if ($response === false) {
    echo json_encode(['code' => 1, 'message' => '请求失败: ' . curl_error($ch)]);
} else {
    // 保存当前时间戳到文件中
    file_put_contents($timestampFile, $currentTime);
    echo $response;
}
 
curl_close($ch);
?>

免费评分

参与人数 6吾爱币 +10 热心值 +4 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Lemonasc + 1 谢谢@Thanks!
peng792439529 + 1 谢谢@Thanks!
greatpeng + 1 + 1 谢谢@Thanks!
a1067709136 + 1 + 1 感谢分享!想问下能否支持自定义webhook方式通知?我不想用wxpush和sever酱 ...
helian147 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| qyc0 发表于 2024-11-21 11:21
本帖最后由 qyc0 于 2024-11-21 11:28 编辑
kover 发表于 2024-11-21 10:36
我让gpt写了一个,直接访问这个php文件可以推送到微信,但是那个html按钮点击无反应,翻找了不少帖子才发 ...

OKK。点击无反应可以看下原帖二楼。
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=1979717&pid=51669503

“注意:因论坛的html代码插入有BUG,会自动过滤掉35、36行按钮代码,复制以下替换下即可
        <button class="notify-btn" onclick="notifyOwner()">通知车主挪车</button>
        <button class="call-btn" onclick="callOwner()">拨打车主电话</button>”
 楼主| qyc0 发表于 2024-11-13 16:19
a1067709136 发表于 2024-11-13 16:14
还有个问题,如果别人把二维码保存下来,使用机器人自动点击通知按钮,虽然是限制每分钟只能通知一次,但是 ...

你在用server酱3?
dogpile 发表于 2024-11-13 15:51
dsman 发表于 2024-11-13 15:55
好,拿走,谢谢
a1067709136 发表于 2024-11-13 16:14
还有个问题,如果别人把二维码保存下来,使用机器人自动点击通知按钮,虽然是限制每分钟只能通知一次,但是24小时不停发送也挺烦的,server酱免费版有字数限制,大佬能否加个webhook接口,我想用pushdeer来接收通知
 楼主| qyc0 发表于 2024-11-13 16:43
本帖最后由 qyc0 于 2024-11-13 16:50 编辑
a1067709136 发表于 2024-11-13 16:14
还有个问题,如果别人把二维码保存下来,使用机器人自动点击通知按钮,虽然是限制每分钟只能通知一次,但是 ...

根据pushdeer的开发文档,如果你只要用pushdeer的文本功能的话,
https://api2.pushdeer.com/message/push?pushkey=key&text=要发送的内容
代替23行中的链接,自行填入pushkey和text文本


完整的版本刚刚测试完了;
fetch.php替换如下代码:

[PHP] 纯文本查看 复制代码
<?php
// fetch.php

// 定义用于保存时间戳的文件路径
$timestampFile = '/tmp/api_call_timestamp.txt';
$cooldownTime = 60; // 冷却时间(秒)

// 当前时间戳
$currentTime = time();

// 检查文件是否存在以及是否在冷却中
if (file_exists($timestampFile)) {
    $lastCalled = file_get_contents($timestampFile);
    $timeElapsed = $currentTime - (int)$lastCalled;
    
    if ($timeElapsed < $cooldownTime) {
        $remainingTime = $cooldownTime - $timeElapsed;
        exit(json_encode(['code' => 1, 'message' => '请求过于频繁,请稍后再试', 'cooldown' => $remainingTime]));
    }
}

// 推送函数
function pushdeer_send($text, $desp = '', $type='text', $key = '[PUSHKEY]')
{
    $postdata = http_build_query(array('text' => $text, 'desp' => $desp, 'type' => $type, 'pushkey' => $key));
    $opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    ));
    
    $context  = stream_context_create($opts);
    return $result = file_get_contents('https://api2.pushdeer.com/message/push', false, $context);
}

// 使用 PushDeer 推送
$pushDeerKey = 'your_pushdeer_key'; // 替换为实际的 PushDeer 密钥
$text = '挪车通知';
$desp = '有人扫码通知你挪车啦';

$response = pushdeer_send($text, $desp, 'text', $pushDeerKey);

// 检查推送结果
if ($response) {
    // 保存当前时间戳到文件中
    file_put_contents($timestampFile, $currentTime);
    // 输出推送结果
    echo $response;
} else {
    echo json_encode(['code' => 1, 'message' => '推送失败']);
}
?>


xinxiu 发表于 2024-11-13 16:52
这个拿走了,我刚好也有服务器
 楼主| qyc0 发表于 2024-11-13 17:20
测试成功了@a1067709136
微信图片_20241113171919.jpg

点评

厉害!这么快弄出来了  发表于 2024-11-14 16:19
wolfishpepper26 发表于 2024-11-14 10:35
好用&#3366;&#3405;&#3366;&#3391;(&#757; &#8226;&#768; &#7447; - &#757; ) &#10023;
peng792439529 发表于 2024-11-14 13:35
感谢  正好需要,网上买的经常失效,还是自己做的放心
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表