-
Notifications
You must be signed in to change notification settings - Fork 543
自建解析服务器
LoveSy edited this page Jan 3, 2021
·
10 revisions
由于biliplus停止解析,哔哩漫游插件需要自定义解析服务器才可正常工作。解析服务器仅用于请求播放地址,因而无需高流量高带宽服务器。
- 对于港澳台、中国大陆番剧,会从
/pgc/player/api/playurl
获取播放地址,反代上有应为api.bilibili.com
- 对于泰国、东南亚番剧,会从
/intl/gateway/v2/ogv/playurl
获取播放地址,反代域名应为api.global.bilibili.com
;从/intl/gateway/v2/app/subtitle
获取字幕,反代上游应为app.global.bilibili.com
(注意跟播放地址的上游不一样);从/intl/gateway/v2/app/search/type
获取搜索结果 - 解析服务器必须有域名(可以自己获取免费二级域名),并且必须使用https(可以使用acme.sh+80端口免费申请),以防止中间人攻击
- 不同区域可以用不同三级或以上域名区分,也可以检查URI中
area
参数,目前有的参数为:cn
中国大陆;hk
香港tw
台湾th
泰国、东南亚 - 如果你的ip使用量大,b站会暂时封禁该ip,这时候应该加入解析结果缓存、限制单个用户(检查access_key)请求次数等
- 漫游带有
http_x_from_biliroaming
的头,头内容会带上漫游版本,可以检查该头防止滥用,未来还能用于版本检查以解决可能会有的兼容问题
用nginx反代实现,参考配置如下:
server
{
server_name bili.example.com; # 设置域名为bili.example
listen 443 ssl http2; # 务必使用https,如有需要也可以同时监听ipv6
client_max_body_size 128M;
location /pgc/player/api/playurl { # 只反向代理该路径的请求
proxy_pass https://api.bilibili.com; # 转发到b站服务器
if ($http_x_from_biliroaming ~ "^$") { # 模块请求都会带上X-From-Biliroaming的请求头,为了防止被盗用,可以加上请求头判断
return 403;
}
}
# RSA certificate
ssl_certificate /etc/nginx/ssl/example.com/full.pem; # 证书路径
ssl_certificate_key /etc/nginx/ssl/example.com/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
}
用nginx反代实现,参考配置如下(注意反代字幕接口不然没有字幕):
server
{
server_name bili.example.com; # 设置域名为bili.example
listen 443 ssl http2; # 务必使用https,如有需要也可以同时监听ipv6
client_max_body_size 128M;
location /intl/gateway/v2/ogv/playurl { # 只反向代理该路径的请求
proxy_pass https://api.global.bilibili.com; # 转发到b站服务器
if ($http_x_from_biliroaming ~ "^$") { # 模块请求都会带上X-From-Biliroaming的请求头,为了防止被盗用,可以加上请求头判断
return 403;
}
}
location /intl/gateway/v2/app/subtitle { # 还有字幕请求
proxy_pass https://app.global.bilibili.com; # 转发到b站服务器,注意跟播放地址上游不一样
if ($http_x_from_biliroaming ~ "^$") { # 模块请求都会带上X-From-Biliroaming的请求头,为了防止被盗用,可以加上请求头判断
return 403;
}
}
location /intl/gateway/v2/app/search/type { # 还有搜索请求
proxy_pass https://app.global.bilibili.com; # 转发到b站服务器,注意跟播放地址上游不一样
if ($http_x_from_biliroaming ~ "^$") { # 模块请求都会带上X-From-Biliroaming的请求头,为了防止被盗用,可以加上请求头判断
return 403;
}
}
# RSA certificate
ssl_certificate /etc/nginx/ssl/example.com/full.pem; # 证书路径
ssl_certificate_key /etc/nginx/ssl/example.com/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
}