随着微信小程序的快速发展和使用,微信对外部域名的封禁和管理变得尤为重要。对于开发者而言,监控和检查域名的封禁状态是一项非常重要的任务。本文介绍了一个 PHP 脚本,利用第三方 API 批量检查多个域名是否被微信封禁。
该脚本通过发送 HTTP 请求查询指定域名的封禁状态,并根据接口返回的结果,判断该域名是否可以正常访问或是否存在封禁风险。
代码实现
以下是完整的 PHP 脚本代码,支持批量检测多个域名的封禁状态。
1. PHP 脚本源码
<?php
// 配置项:待检测的域名列表
$domainList = [
'example.com', // 请替换为实际的域名
'anotherdomain.com', // 请替换为实际的域名
// 添加更多需要检查的域名
];
// 配置 API 请求的 URL
$apiUrlTemplate = "https://down.ychengsnsm.com/wx/?url=%s";
// 初始化 cURL 请求配置
function sendRequest($url) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
CURLOPT_SSL_VERIFYPEER => false, // 仅用于测试环境,生产环境需要关闭
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return ['response' => $response, 'httpCode' => $httpCode];
}
// 检查单个域名的封禁状态
function checkDomainStatus($domain) {
global $apiUrlTemplate;
// 构建 API 请求 URL
$apiUrl = sprintf($apiUrlTemplate, urlencode($domain));
// 发送请求并获取响应
$result = sendRequest($apiUrl);
// 判断请求是否成功,并解析响应
if ($result['httpCode'] == 200 && strpos($result['response'], '域名被封') === false) {
return "域名 {$domain} 状态正常";
} else {
return "域名 {$domain} 可能已被封禁";
}
}
// 批量检测域名状态
function checkMultipleDomains($domains) {
foreach ($domains as $domain) {
$status = checkDomainStatus($domain);
echo $status . "<br/>";
}
}
// 执行检测
checkMultipleDomains($domainList);
?>
代码说明
1.域名列表配置:
在 $domainList 数组中,您可以添加任意需要检查的域名。每个域名都是一个字符串,使用英文逗号分隔。例如:
$domainList = ['example.com', 'anotherdomain.com'];
2.API URL 模板:
脚本中的 $apiUrlTemplate 是接口请求的模板,它接收域名并返回该域名的封禁状态。接口的格式如下:
https://down.ychengsnsm.com/wx/?url=<domain>
其中 <domain> 是需要检查的域名,通过 sprintf 函数动态填充。
3.sendRequest 函数:
该函数负责发起 cURL 请求,访问提供的 API URL。它配置了必要的 cURL 选项,例如请求超时、SSL 验证等。请求返回的数据会被捕获并返回给调用者。
4.checkDomainStatus 函数:
该函数接受一个域名,构造请求 URL 并调用 sendRequest 函数发送请求。然后,它通过检查返回的 HTTP 状态码和响应内容来判断该域名是否被封禁。如果接口返回的响应中包含 "域名被封",则认为该域名可能被封禁。
5.checkMultipleDomains 函数:
这个函数用于批量检查多个域名的封禁状态。它遍历 $domainList 中的每个域名,调用 checkDomainStatus 函数,并输出每个域名的检测结果。
6.输出结果:
如果脚本检测到某个域名被封禁,会输出类似:
域名 example.com 可能已被封禁
如果域名状态正常,会输出:
域名 anotherdomain.com 状态正常
使用说明
1. 修改域名列表
在 $domainList 数组中,您可以添加您需要检测的域名。例如:
$domainList = ['example.com', 'yourdomain.com', 'somedomain.com'];
只需将实际的域名替换掉示例域名即可。
2. 上传并运行脚本
将该 PHP 脚本上传到您的 Web 服务器,并确保您的服务器支持 PHP。您可以通过以下方式运行脚本:
7.通过浏览器访问:
将 PHP 文件上传到 Web 服务器后,您可以通过访问 URL 来运行脚本,例如 http://yourdomain.com/check_domain_status.php。
8.通过命令行运行:
如果您不使用 Web 服务器,也可以在命令行中运行该 PHP 文件,命令如下:
php check_domain_status.php
3. 查看结果
脚本运行后,它会输出每个域名的封禁状态。如果您在浏览器中运行,结果会以 HTML 格式展示。如果通过命令行运行,则会以纯文本格式输出。
例如,输出结果可能是:
域名 example.com 状态正常
域名 anotherdomain.com 可能已被封禁
4. 常见问题和解决方案
9.SSL 验证问题:在生产环境中,建议将 CURLOPT_SSL_VERIFYPEER 设置为 true,以确保 SSL 证书的有效性。当前脚本仅在测试环境中关闭了 SSL 验证。
10.请求失败:如果接口请求失败或返回异常,可以检查 API URL 是否正确,或者检查是否存在网络问题。对于 API 响应异常,您可能需要查看接口的最新文档。
11.请求超时:如果脚本频繁遇到超时错误,您可以尝试增加 CURLOPT_TIMEOUT 的值,或者检查网络连接和 API 服务器的稳定性。