仅作参考,不作任何保障也无任何解答
腾讯云CDN
由于最近还是有些看B站番剧的需求,但国内阉割,只能看港澳台和东南亚地区的了,故又开始鼓捣Biliroaming
这个项目以及低成本的稳定使用方式,探索出了一种玩法,仅作参考。
优点
成本较为低廉(开销仅在腾讯云CDN的请求费用+流量费用+你的域名费用);
部署一次之后就不需要太多维护(个人使用下来腾讯云的CDN IP没咋变过,并且这里是15年有效期的证书,基本上一次性部署能使用很久);
支持多地区(只要腾讯云支持就可以,理论来说你甚至可以回国反代);
缺点
- 需要腾讯云实名(我因为有个拿来续备案域名的轻量云,所以我无所谓,但可能有人在意?);
- 依赖于腾讯云的CDN,腾讯云本身在国内就是弱势的市场,不好说会不会跑(就算跑了用阿里云的应该也行吧);
前置要求
- 一个实名了的腾讯云CDN账号(如果有其他支持稳定的香港、台湾、东南亚IP的CDN厂商也可);
example.com
: 一个属于你且托管至Cloudflare
的域名;proxy1.example.com
: 用于反代api.bilibili.com
的域名(即反代B站港澳台视频流的域名);proxy2.example.com
: 用于反代app.bilibili.com
的域名(即反代B站港澳台搜索结果的域名);proxy3.example.com
: 用于反代app.biliintl.com
的域名(即反代B站东南亚搜索结果和视频流的域名);- (非必须)
main.example.com
:用于biliroaming-go
的后端主域名;
1. 申请目标域名的证书
由于Cloudflare
针对其平台上管理的域名提供15年的证书,为了方便我选择了Cloudflare
。
三个域名都需要申请证书(Cloudflare的免费证书不支持二级域名,建议创建证书时将三个域名都添加到主机名里,这样到时候腾讯云的证书就只需要上传这一个就行)。
保存生成证书和密钥,将其上传至腾讯云的证书处即可。
2. 创建腾讯云CDN的反代资源
访问腾讯云CDN页面,先添加你的三个反代域名,认证域名属于你之后再进行资源添加,具体如下
源站类型:自有源站
回源协议:HTTPS
源站地址:api.bilibili.com/app.bilibili.com/app.biliintl.com
回源HOST:api.bilibili.com/app.bilibili.com/app.biliintl.com
参考如下三图为三个域名的反代资源配置
创建服务之后去给每个服务开启HTTPS
,腾讯云部分的操作便已完成。
3. Cloudflare创建反代
寻找你需要地区的腾讯云CDN IP(此处不提供寻找方法,这种应该挺好找的),然后将你对应的域名指向该IP。
开启小云朵,这样才能正常使用Cloudflare
颁发的15年证书。图片示例为台湾IP和亚太新加坡IP+开启小云朵
4. 配置自己的客户端
我个人是用的biliroaming-go-server这个项目作为后端转发,理论来说你直接在漫游客户端在香港/台湾填proxy1.example.com
、泰国填proxy3.example.com
也可?(但这样的话搜索就不行了,我想了想还是自己搭个后端吧,反正白嫖了台华为云新加坡10年😋)
Cloudfront
CDN
在我经过多次测试之后,总算弄出来一个Cloudfront
能用的配置模板了。
优点
- 相较于腾讯云CDN是免费的(每月1T的出流量,漫游自用的话入流量很少,这部分费用就可以几乎等于0)
- 节点多。
Amazon
和Tencent
两家的网络部署孰优孰劣大火应该都有数。 - 自由度较高,可配置项多。
缺点
- 由于是
Anycast
的IP,所以自定义IP的时候需要稍微多花些精力筛下。https://api.live.bilibili.com/ip_service/v1/ip_service/get_ip_addr?ip=测试IP
的页面结果如果显示是目标地区(香港/台湾/新加坡)则理论来说就大概率可用,Cloudfront
的部分IP是会被哔哩哔哩的IP库丢进美国IP里的。 - 配置较为繁琐,我研究了半天才研究出来能用的一套规则。
前置要求
- 一个过了验证的
Amazon
账号(要验卡才有每个月1T的免费流量)。 - 一个属于自己的长期域名。
- 你自己有能力去筛选出
Cloudfront
众多IP中你需要目标地区的IP。
1. 在Cloudfront
上申请目标域名的证书
Cloudfront
不支持Cloudflare
自签的15年证书,所以个人建议是就直接把你的子域名丢给他做验证去生成证书,能够自动续期的(我那个是去年10月申请的,只要你不把那个验证的cname
改了,理论上Amazon
会自动续期的)
亚马逊的证书一步步生成就是了,这里不再赘述。
2. 创建分配Cloudfront
的资源
懒得打字了,就按我的图配置即可(api.bilibili.com
/app.bilibili.com
/app.biliintl.com
都是一样的,把图中的api.bilibili.com
改成你需要反代的域名即可)。核心就是缓存用CachingDisabled,源请求用AllViewerExceptHostHeader,这是我试出来能正常使用的搭配。
3. 域名指定IP
记得把你目标地区的自定义域名添加到目标地区对应Cloudfront
资源的备用域名中,然后比如hk.bili.example.com
指向你自己挑选出的香港IP即可。这是我的示例,参考即可。
我个人挑选IP流程一般是比如*.tpe52.r.cloudfront.net
是台北的cloudfront
节点关联域名,我就去搜这个泛域名的关联IP,然后关联IP先去用https://api.live.bilibili.com/ip_service/v1/ip_service/get_ip_addr?ip=关联IP
看看哔哩哔哩的IP库上是不是正常认为是台湾的,再丢解析里去测试,如果正常那就没问题。
4. 配置自己的客户端
我个人是用的biliroaming-go-server这个项目作为后端转发,理论来说你直接在漫游客户端在香港/台湾填hkcft.bili.example.com
/twcft.bili.example.com
、泰国填thcft.bili.example.com
也可?(但这样的话搜索就不行了,我想了想还是自己搭个后端吧,反正白嫖了台华为云新加坡10年😋)
效果展示
使用为他人修改的8.14.0
粉色国内版Bilibili
+1.23.3
自己编译去黑名单版的BiliroamingX
,港台泰解析服务器均为main.example.com
。