介绍
这个C++程序可以帮助你检测微信小程序是否被封禁。通过调用微信官方API接口,我们可以获取小程序的当前状态。返回结果包含状态码和详细封禁信息,其中code字段为1表示小程序正常,为0表示小程序被封禁。
代码
#include <iostream>
#include <string>
#include <curl/curl.h>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
// 回调函数,用于接收HTTP响应数据
static size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* s) {
size_t newLength = size * nmemb;
try {
s->append((char*)contents, newLength);
return newLength;
} catch(std::bad_alloc &e) {
// 处理内存分配错误
return 0;
}
}
// 检测微信小程序状态的函数
json checkWeChatMiniProgramStatus(const std::string& appid) {
CURL* curl;
CURLcode res;
std::string readBuffer;
json result;
curl = curl_easy_init();
if(curl) {
// 设置API请求URL
std::string apiUrl = "https://api.wxapi.work/xcx/checkxcx.php?appid=" + appid;
curl_easy_setopt(curl, CURLOPT_URL, apiUrl.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "C++ WeChat MiniProgram Checker/1.0");
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10L); // 10秒超时
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); // 跟随重定向
// 执行HTTP请求
res = curl_easy_perform(curl);
// 检查请求结果
if(res != CURLE_OK) {
result["code"] = 0;
result["error"] = "API请求失败: " + std::string(curl_easy_strerror(res));
} else {
long http_code = 0;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
if(http_code == 200) {
try {
// 解析JSON响应
auto jsonResponse = json::parse(readBuffer);
// 验证返回数据结构
if(jsonResponse.contains("code") && jsonResponse.contains("appid")) {
// 直接返回API的完整响应
result = jsonResponse;
} else {
result["code"] = 0;
result["error"] = "API返回数据格式不正确";
}
} catch(const json::parse_error& e) {
result["code"] = 0;
result["error"] = "JSON解析错误: " + std::string(e.what());
}
} else {
result["code"] = 0;
result["error"] = "HTTP错误代码: " + std::to_string(http_code);
}
}
// 清理curl资源
curl_easy_cleanup(curl);
} else {
result["code"] = 0;
result["error"] = "无法初始化CURL";
}
return result;
}
int main() {
std::cout << "微信小程序封禁状态检测 - 2025年9月最新" << std::endl;
std::cout << "=====================================" << std::endl;
// 要检测的小程序AppID
std::string appid;
std::cout << "请输入要检测的小程序AppID(如: wx81894c6dbb81c2e2): ";
std::cin >> appid;
// 调用检测函数
json result = checkWeChatMiniProgramStatus(appid);
// 输出结果
std::cout << "\n检测结果:" << std::endl;
std::cout << "小程序AppID: " << appid << std::endl;
if(result.contains("code")) {
int statusCode = result["code"].get<int>();
std::cout << "状态: " << (statusCode == 1 ? "正常" : "被封禁") << std::endl;
if(statusCode == 0 && result.contains("status")) {
std::cout << "封禁原因: " << result["status"].get<std::string>() << std::endl;
}
} else if(result.contains("error")) {
std::cout << "检测失败: " << result["error"].get<std::string>() << std::endl;
}
// 输出JSON格式结果
std::cout << "\n完整API响应:" << std::endl;
std::cout << result.dump(4) << std::endl;
return 0;
}
使用方法
-
确保已安装以下依赖库:
- libcurl (用于HTTP请求)
- nlohmann/json (用于JSON解析)
-
在Linux系统上可以使用以下命令安装依赖:
sudo apt-get install libcurl4-openssl-dev
-
编译程序:
g++ -std=c++11 wechat_miniprogram_check.cpp -o wechat_miniprogram_check -lcurl
-
运行程序:
./wechat_miniprogram_check
-
根据提示输入要检测的小程序AppID(如:wx81894c6dbb81c2e2)
-
程序会返回检测结果,格式如下:
{ "code": 0, "appid": "wx81894c6dbb81c2e2", "status": "已被封禁,封禁原因:存在绕开、规避或对抗平台审核监管的行为" }
返回结果说明
code
:- 1表示小程序正常
- 0表示小程序被封禁
appid
: 被检测的小程序IDstatus
: 封禁状态的详细描述(当code为0时存在)
注意事项
- 本代码适用于2025年9月最新版本的API接口
- 程序设置了10秒超时,可以根据需要调整
- 支持用户交互式输入要检测的小程序AppID
- 封禁原因可能包含多种情况,程序会完整显示API返回的封禁信息
- 在生产环境中使用时,建议添加更多的错误处理逻辑
- 如需批量检测多个小程序,可以修改程序为循环检测模式