kghost / bilibili-area-limit

Bilibili 港澳台, 解除区域限制
https://greasyfork.org/en/scripts/375881-bilibili-%E6%B8%AF%E6%BE%B3%E5%8F%B0
Apache License 2.0
417 stars 37 forks source link

代理服务器能否添加`pgc/player/api/playurl`接口的支持? #16

Closed yujincheng08 closed 4 years ago

yujincheng08 commented 4 years ago

你好。在之前的issue中#15 我提到把你的服务器作为我的移动端插件的服务器,但最近b站服务器修改了一下,原来PC的接口pgc/player/web/playurl返回的播放地址在移动端上会403 forbidden。所以请问能否支持移动端接口pgc/player/api/playurl的反代?

非常感谢!

kghost commented 4 years ago

最近比较忙,没有时间看,你能具体点,哪个请求不行么?

最好发一个curl命令行,chrome的dev-tools可以直接复制出来

yujincheng08 commented 4 years ago

@kghost 感谢回复,这是一个实例:

curl 'https://api.bilibili.com/pgc/player/api/playurl?appkey=07da50c9a0bf829f&build=5380700&buvid=XY418E94B89774E201E22C5B709861B7712DD&cid=173044324&device=android&ep_id=317412&fnval=16&fnver=0&force_host=0&fourk=1&mobi_app=android_b&platform=android_b&qn=16&track_path=0&ts=1591338856&sign=6a37a51dc0fcb432e9014a100c339ab2'

这个接口没有跟pgc/player/web/playurl几乎一样,不过需要app_key=07da50c9a0bf829f&device=android&platform=android_b这几个params(概念版提取的。其他app_key如下)。

Plarform: android
Description: 普通版
AppKey: 1d8b6e7d45233436
SecretKey: 560c52ccd288fed045859ed18bffd973

Plarform: android_i
Description: 国际版
AppKey: bb3101000e232e27
SecretKey: 36efcfed79309338ced0380abd824ac1

Plarform: android_b
Description: 概念版
AppKey: 07da50c9a0bf829f
SecretKey: 25bdede4e1581c836cab73a48790ca6e

Plarform: android_tv
Description: 电视版
AppKey: 4409e2ce8ffd12b8
SecretKey: 59b43e04ad6965f34319062b478f83dd

Plarform: biliLink
Description: 直播
AppKey: 37207f2beaebf8d7
SecretKey: e988e794d4d4b6dd43bc0e89d6e90c43
yujincheng08 commented 4 years ago

@kghost

我这边用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站服务器
    }

    # 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;
}

这个可以用来修复 #24 (issue里面提到的油猴脚本的临时解决方案就是我提交的,不过不完善 ipcjs/bilibili-helper#670)

kghost commented 4 years ago

我这个是全站代理,没有限制代理的uri,你可以直接试试能不能用

yujincheng08 commented 4 years ago

@kghost 哇!可以的,非常感谢!