侧边栏壁纸
  • 累计撰写 66 篇文章
  • 累计创建 47 个标签
  • 累计收到 111 条评论

目 录CONTENT

文章目录

利用cloudflare works解锁Bilibili(B站)港澳台番剧

草莓牛奶
2023-01-18 / 4 评论 / 0 点赞 / 1,691 阅读 / 837 字 / 正在检测是否收录...
温馨提示:
「博客文章out of date 会及时更新,无特殊说明仍然有效,欢迎指正内容中的错误」

前置任务:

1.在Cloudflare拥有一个域名

2.安装解除B站区域限制脚本

考虑到安全性,建议自建代理服务器!

此方法可与利用Gcore解锁Bilibili(B站)港澳台番剧利用Cloudfront解锁Bilibili(B站)港澳台番剧共存,即一个域名可同时配置三家CDN的IP

教程中的IP受时效影响并不保证一定可用

若看不懂教程,或懒癌晚期,欢迎使用自建解析服务器https://bilibili.suysker.xyz

一、设置cloudflare works

1.创建一个works,服务名称自定义即可

image-20230118162753096

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在中国大陆无法访问,因此需要添加路由,将其绑定至自己的域名

image-20230118165007160

二、自选cloudflare的CDN的IP

由于B站限制仅能从港澳台的IP访问,因此需要自定义CDN的IP地址

162.158.243.0/24该IP段均是中国台湾的回源IP段,可以通过http://[IP地址]/cdn-cgi/trace访问查看可用性

image-20230118164214973

以下仅提供一些自选IP的方法

①在线自选IP:http://ip.suysker.top 或者 Enhanced-CDN-IP-Testing-Suite

XIU2/CloudflareSpeedTest: 🌩「自选优选 IP」测试 Cloudflare CDN 延迟和速度,获取最快 IP (IPv4 / IPv6)!另外也支持其他 CDN / 网站 IP

ip-scanner/cloudflare

TulvL/cloudflare-ip-tester: Cloudflare IP Batch Test Tool including HTTP respond time, region detection and download speed test

Cloudflare大部分IP都是Anycast哦!

image-20230118164156274

三、配置脚本

进入配置入口,输入自定义服务器的域名(建议设置upos服务器,因为akamai的CDN在国内访问缓慢,可通过国内主流CDN的镜像服务器解决)

image-20230120171337363

参考内容:

使用 cloudflare service worker 作为解析服务器

使用G-Core免费CDN服务反代B站API观看港澳台限定番剧 - 天雨的博客 - Masterain

巧用 cloudflare workers 代理B站视频

0

评论区