乐趣区

关于微信小程序:PHP实现微信小程序状态检测违规暂停服务维护中正在修复

实现原理

进入那些状态不失常的小程序会被重定向至一个 Url,应用抓包软件抓取这个 Url,剔除不必要参数,应用 cURl 函数申请网页取得 HTML 内容,依据内容解析出以后 APPID 的小程序的状态。

代码

<?php

    // 编码
    header('Content-type:application/json');
    
    // 获取 appid
    $appid = trim($_GET['appid']);
    
    // appid 正则表达式验证规定
    $appid_pattern = '/^wx[a-f0-9]{16}$/';
    
    if($appid) {
        
        // 验证 appid 是否合乎规定
        if(!preg_match($appid_pattern, $appid)) {
        
            $result = array(
                'code' => 201,
                'msg' => 'appid 不合乎规定'
            );
        }else {
            
            // 指标 URL
            $url = 'https://mp.weixin.qq.com/mp/waerrpage?appid='.$appid.'&type=offshelf';
            
            // 初始化 cURL 会话
            $ch = curl_init();
            
            // 设置 cURL 选项
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            
            // 执行 cURL 并获取页面内容
            $response = curl_exec($ch);
            
            // 敞开 cURL 会话
            curl_close($ch);
            
            // 获取前面的内容
            $str1 = substr($response, strripos($response, "weui-msg__title"));
            
            // 获取后面的内容
            $str2 = substr($str1, 0, strrpos($str1, "weui-msg__desc"));
            
            // 不失常的类型
            $close_type_1 = '小程序因违规已暂停服务';
            $close_type_2 = '小程序系统故障,开发者正在修复';
            $close_type_3 = '小程序已暂停服务';
            $close_type_4 = '小程序零碎更新保护中';
            
            // 判断
            if(preg_match("/ 因违规已暂停服务 /", $str2)) {
                
                $result = array(
                    'code' => 201,
                    'msg' => $close_type_1
                );
            }else if(preg_match("/ 正在修复 /", $str2)) {
                
                $result = array(
                    'code' => 201,
                    'msg' => $close_type_2
                );
            }else if(preg_match("/ 小程序已暂停服务 /", $str2)) {
                
                $result = array(
                    'code' => 201,
                    'msg' => $close_type_3
                );
            }else if(preg_match("/ 更新保护中 /", $str2)) {
                
                $result = array(
                    'code' => 201,
                    'msg' => $close_type_4
                );
            }else{
                
                $result = array(
                    'code' => 200,
                    'msg' => '小程序失常'
                );
            }
        }
    }else {
        
        $result = array(
            'code' => 201,
            'msg' => '请传入 appid'
        );
    }

    // 输入
    echo json_encode($result,JSON_UNESCAPED_UNICODE);

?>

应用

上传 miniProgramStatusCheck.php 至服务器;

拜访:

https:// 域名 /miniProgramStatusCheck.php?appid= 被检测的小程序的 APPID
退出移动版