
WordPress官方对国内访问做了限制,导致有时候无法更新WordPress版本、插件、主题等,更新的时候可能会遇到报错HTTP ERROR 524的情况。
本文通过自定义反代来解决问题,需要Cloudflare账号或国外服务器和域名。
使用Cloudflare Workers
需要有Cloudflare账号并且托管了域名。
1、登录Cloudflare后,在构建 – 计算 – Workers 和 Pages – 创建应用程序。

2、选择“从Hello World!开始”

3、部署成功后点进项目后选择“编辑代码”

4、左侧替换为下面代码后点击“部署”

const ALLOWED_HOSTS = new Set([
'api.wordpress.org',
'downloads.wordpress.org',
'wordpress.org',
]);
export default {
async fetch(request) {
const currentUrl = new URL(request.url);
const target = currentUrl.searchParams.get('url');
if (!target) {
return new Response('未指定 URL', { status: 400 });
}
let targetUrl;
try {
targetUrl = new URL(target);
} catch {
return new Response('URL 无效', { status: 400 });
}
if (
!['http:', 'https:'].includes(targetUrl.protocol) ||
!ALLOWED_HOSTS.has(targetUrl.hostname.toLowerCase())
) {
return new Response('仅允许代理 WordPress 官方域名', { status: 403 });
}
const headers = new Headers(request.headers);
headers.set('User-Agent', 'WordPress-Cloudflare-Worker-Proxy/1.0');
headers.delete('host');
headers.delete('cf-connecting-ip');
headers.delete('cf-ipcountry');
headers.delete('cf-ray');
headers.delete('cf-visitor');
headers.delete('x-forwarded-for');
headers.delete('x-forwarded-proto');
const init = {
method: request.method,
headers,
redirect: 'follow',
};
if (!['GET', 'HEAD'].includes(request.method)) {
init.body = request.body;
}
const response = await fetch(targetUrl.toString(), init);
const responseHeaders = new Headers(response.headers);
responseHeaders.delete('content-encoding');
responseHeaders.delete('content-length');
responseHeaders.delete('transfer-encoding');
responseHeaders.delete('connection');
return new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: responseHeaders,
});
},
};
5、因为Cloudflare Workers默认域名国内无法访问,还需要绑定自己已经托管在Cloudflare 的域名。

6、如果绑定域名后,你的国内服务器访问很慢,可以使用“CloudflareSpeedTest”项目指定hosts IP。
CloudflareSpeedTest:https://github.com/XIU2/CloudflareSpeedTest
按照官方教程操作,选出最优IP后修改服务器hosts即可。
使用自己的服务器
这个稍微简单一些,如果你正好有网站在使用国外服务器,直接使用这个方案。
在任意目录新建一个.PHP文件,代码如下:
<?php
/**
* WordPress 官方资源代理脚本
*/
$allowedHosts = [
'api.wordpress.org',
'downloads.wordpress.org',
'wordpress.org',
];
if (empty($_GET['url'])) {
http_response_code(400);
exit('未指定 URL');
}
$url = trim($_GET['url']);
$parts = parse_url($url);
if (
empty($parts['scheme']) ||
empty($parts['host']) ||
!in_array($parts['scheme'], ['http', 'https'], true) ||
!in_array(strtolower($parts['host']), $allowedHosts, true)
) {
http_response_code(403);
exit('仅允许代理 WordPress 官方域名');
}
$method = $_SERVER['REQUEST_METHOD'] === 'POST' ? 'POST' : 'GET';
$headers = [
'User-Agent: WordPress-Proxy/1.0',
];
$options = [
'http' => [
'method' => $method,
'timeout' => 30,
'ignore_errors' => true,
'header' => implode("\r\n", $headers),
],
];
if ($method === 'POST') {
$body = file_get_contents('php://input');
$options['http']['header'] .= "\r\nContent-Type: " . (
$_SERVER['CONTENT_TYPE'] ?? 'application/x-www-form-urlencoded'
);
$options['http']['content'] = $body;
}
$context = stream_context_create($options);
$result = @file_get_contents($url, false, $context);
if ($result === false) {
http_response_code(502);
exit('代理请求失败');
}
if (!empty($http_response_header)) {
foreach ($http_response_header as $header) {
if (stripos($header, 'Transfer-Encoding:') === 0) {
continue;
}
if (stripos($header, 'Connection:') === 0) {
continue;
}
header($header, false);
}
}
echo $result;
网站加速
两个方案都需要修改需要加速的WordPress的主题function.php文件,在文件最下面添加:
add_filter('pre_http_request', function ($pre, $parsed_args, $url) {
$host = parse_url($url, PHP_URL_HOST);
if (!in_array($host, ['api.wordpress.org', 'downloads.wordpress.org'], true)) {
return $pre;
}
$proxy_url = 'https://你的域名/';
return wp_remote_request($proxy_url . '?url=' . urlencode($url), $parsed_args);
}, 10, 3);
注意需要修改代码中的域名部分,如果是Cloudflare Workers版本直接填写域名,如果是php版本需要精确的到文件,如:https://www.wpzh.net/wp/wp-proxy.php
2、本站保证代码的完整性和可用性,兼容性可查看主题/插件官网说明。
3、某些插件/主题的个别功能需要验证订阅账户并连接官方服务器,所以破解版是不能使用这个功能的。
4、本站只提供相应的主题、插件代码下载,不包含任何安装或其他服务。(可选本站付费服务)
5、本站汉化主题、插件均为破解版,详细信息请看资源文章说明。
6、开通终身会员后可享受全站无限制下载。
7、本站所有资源均为虚拟资源,所以已经售出,概不退款,还请谅解。
