实现原理
进入那些状态不失常的小程序会被重定向至一个 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