
开篇寄语
伯衡君之前介绍的一个网站就是利用该项目来搭建的,看起来高大上,其实操作很简单,简单到令人发指,站长亲自测试,真实有效,so easy!于是有了今天这篇文章。
项目介绍
github项目地址:https://github.com/Siujoeng-Lau/WorkersProxy
作者搭建的事例:https://cdn.reverse-proxy.live
WorkersProxy是一个轻量级的Javascript应用程序,可从其他服务器作为客户端检索资源。
在Cloudflare Workers(这是用于构建无服务器应用程序的有影响力的平台)上进行部署时,您可以构建自定义的反向代理,而无需购买计算引擎和配置Nginx等Web服务器。
此外,由于您的应用程序将通过Cloudflare遍布90多个国家/地区的全球数据中心网络进行分发,因此将优化关键性能,例如延迟和可用性。
通过配置地理位置和IP地址过滤器,您可以根据其特定规定在特定国家或地区直接暂停反向代理服务。利用移动重定向器,您可以根据用户的设备分发各种网页。
实现方法
- 打开:https://workers.cloudflare.com,有账号登陆,没有账号的注册后再登陆;

- 注册,登陆,Start building,取一个子域名,Create a Worker。

- 清空左侧默认代码区,复制下方代码到左侧代码框,save and display。如果正常,右侧就会显示页面了,代码如下,按照效果图稍微修改代码。
// List of domains bind to your WorkersProxy.
const domain_list = ['https://cdn.reverse-proxy.live/', 'https://google.xasiimov.workers.dev/']
// Website you intended to retrieve for users.
const upstream = 'https://www.google.com/'
// Website you intended to retrieve for users using mobile devices.
const upstream_mobile = 'https://www.google.com/'
// Countries and regions where you wish to suspend your service.
const blocked_region = ['CN', 'KP', 'SY', 'PK', 'CU']
// IP addresses which you wish to block from using your service.
const blocked_ip_address = ['0.0.0.0', '127.0.0.1']
addEventListener('fetch', event => {
event.respondWith(fetchAndApply(event.request));
})
async function fetchAndApply(request) {
const region = request.headers.get('cf-ipcountry').toUpperCase();
const ip_address = request.headers.get('cf-connecting-ip');
const user_agent = request.headers.get('user-agent');
let response = null;
let url = request.url;
if (await device_status(user_agent)){
upstream_domain = upstream
} else {
upstream_domain = upstream_mobile
}
for(let domain of domain_list) {
url = url.replace(domain, upstream_domain)
};
if (blocked_region.includes(region)) {
response = new Response('Access denied: WorkersProxy is not available in your region yet.', {
status: 403
});
} else if(blocked_ip_address.includes(ip_address)){
response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', {
status: 403
});
} else{
let method = request.method;
let request_headers = request.headers;
let new_request_headers = new Headers(request_headers)
new_request_headers.set('origin', upstream_domain)
new_request_headers.set('referer', upstream_domain)
origin_response = await fetch(url, {
method: method,
headers: new_request_headers
})
let response_body = origin_response.body
let response_headers = origin_response.headers
let new_response_headers = new Headers(response_headers)
let status = origin_response.status
new_response_headers.set('access-control-allow-origin', '*')
new_response_headers.set('access-control-allow-credentials', true)
new_response_headers.delete('content-security-policy')
new_response_headers.delete('content-security-policy-report-only')
new_response_headers.delete('clear-site-data')
response = new Response(response_body, {
status,
headers: response_headers
})
response = origin_response
}
return response;
}
async function device_status (userAgentInfo) {
var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
}
- 左上角修改一下名称,修改一下代理网站,把大佬源码里的,“CN”删除。在const upstream = 'https://www.google.com/',可以添加多个代理地址,比如维基百科的等等。
- 之后把右侧的网址复制浏览器,收藏下来,以后就可以使用了。免费版每天有10万个调用限制,如果自己用怎么着都够用了。
- 我的微信
- 微信扫一扫加好友
-
- 我的微信公众号
- 扫描关注公众号
-






2019-10-11 下午4:57 沙发
提示"Error 523",图示显示 Host Error,是不是被墙了?
2019-10-11 下午5:01 1层
@Leo 尝试更换一下网络,我测试了一下,应该没有问题的。