前置任务:
1.在Cloudflare拥有一个域名
2.安装解除B站区域限制脚本
考虑到安全性,建议自建代理服务器!
此方法可与利用Gcore解锁Bilibili(B站)港澳台番剧、利用Cloudfront解锁Bilibili(B站)港澳台番剧共存,即一个域名可同时配置三家CDN的IP
教程中的IP受时效影响并不保证一定可用
若看不懂教程,或懒癌晚期,欢迎使用自建解析服务器https://bilibili.suysker.xyz
一、设置cloudflare works
1.创建一个works,服务名称自定义即可
2.编辑该works内容,注意修改不屏蔽国家和地区设置
以下代码作用是使用cdn反代api.bilibili.com
// 你要镜像的网站.
const upstream = 'api.bilibili.com'
// 不屏蔽国家和地区.
const unblocked_region = ['CN']
// 屏蔽 IP 地址.
const blocked_ip_address = ['0.0.0.0', '127.0.0.1']
// 镜像站是否开启 HTTPS.
const https = true
// 以下保持默认,不要动
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');
let response = null;
let url = new URL(request.url);
if (https == true) {
url.protocol = 'https:';
} else {
url.protocol = 'http:';
}
url.host = upstream;
if (!unblocked_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('Host', url.hostname);
new_request_headers.set('Referer', url.hostname);
let original_response = await fetch(url.href, {
method: method,
headers: new_request_headers
})
let original_response_clone = original_response.clone();
let original_text = null;
let response_headers = original_response.headers;
let new_response_headers = new Headers(response_headers);
let status = original_response.status;
new_response_headers.set('access-control-allow-origin', 'https://www.bilibili.com');
original_text = original_response_clone.body
response = new Response(original_text, {
status,
headers: new_response_headers
})
}
return response;
}
3.将域名绑定至该Workers服务上
由于workers.dev
在中国大陆无法访问,因此需要添加路由,将其绑定至自己的域名
二、自选cloudflare的CDN的IP
由于B站限制仅能从港澳台的IP访问,因此需要自定义CDN的IP地址
162.158.243.0/24
该IP段均是中国台湾的回源IP段,可以通过http://[IP地址]/cdn-cgi/trace
访问查看可用性
以下仅提供一些自选IP的方法
①在线自选IP:http://ip.suysker.top 或者 Enhanced-CDN-IP-Testing-Suite
Cloudflare大部分IP都是Anycast哦!
三、配置脚本
进入配置入口,输入自定义服务器的域名(建议设置upos服务器,因为akamai的CDN在国内访问缓慢,可通过国内主流CDN的镜像服务器解决)
参考内容:
使用 cloudflare service worker 作为解析服务器
评论区