如何通过请求头检测第三方WordPress网站的插件名称与版本?
能否通过请求头检测第三方WordPress网站的插件?
核心结论
- 仅靠请求头几乎无法检测到第三方WordPress网站的已安装插件及版本信息。WordPress默认不会在响应头中暴露插件相关数据,只有极少数插件可能自定义添加头信息,但这属于特例,不具备普遍性。
查询远程WordPress网站插件及版本的可行方法
若要获取远程WordPress站点的插件信息,通常需从页面内容或特定插件路径入手,以下是具体实现思路:
1. 分析页面HTML源码
多数插件会在页面<head>标签中插入版本信息(比如<meta>标签、脚本/样式文件URL),或在页面底部留下版权标识。你可以用提供的getHeader函数获取页面内容后,对$body部分做正则匹配:
// 示例:从页面body中提取插件版本 function extractPluginVersions($body) { // 匹配常见的插件版本格式,可根据需求调整正则 $pattern = '/(?:plugin|addon|extension)[\s-]+(?:v|version)?([\d.]+)/i'; preg_match_all($pattern, $body, $matches); return $matches[1] ?? []; } // 使用示例 list($header, $body) = getHeader('https://example.com'); $versions = extractPluginVersions($body);
2. 检测插件专属路径
WordPress插件默认安装在wp-content/plugins/目录下,可尝试请求插件的标志性文件(如主PHP文件、readme.txt),若请求返回200状态码则说明插件存在,且readme.txt通常包含版本信息:
function checkPluginExists($domain, $pluginSlug) { $pluginUrl = rtrim($domain, '/') . '/wp-content/plugins/' . $pluginSlug . '/readme.txt'; $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => $pluginUrl, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => true, ]); $content = curl_exec($curl); $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if ($statusCode === 200) { preg_match('/Stable tag: ([\d.]+)/', $content, $versionMatch); return [ 'exists' => true, 'version' => $versionMatch[1] ?? 'Unknown' ]; } return ['exists' => false]; } // 使用示例:检测Yoast SEO插件 $result = checkPluginExists('https://example.com', 'wordpress-seo');
3. 注意事项
- 很多站点会通过安全插件(如Wordfence)或服务器配置屏蔽
wp-content/plugins/目录的直接访问,此时该方法失效。 - 频繁探测远程站点可能触发反爬机制或被封禁IP,需控制请求频率。
对你提供的getHeader函数的说明
该函数可正常获取目标站点的响应头和页面内容,但仅靠$header部分无法提取插件信息,核心处理对象应为$body内容。
内容的提问来源于stack exchange,提问作者L. Vadim
相关产品推荐
相关产品推荐

