Giter Site home page Giter Site logo

biliroaming-php-server's Introduction

写在开头


BiliRoaming-PHP-Server

哔哩漫游 PHP 解析服务器

自建解析服务器参考配置

下载:

用法:

  • 直接放到网站根目录,例如 wwwroot 或 public_html 或 private_html 或 网站域名的文件夹(宝塔)

  • 默认为「在线黑名单」模式。

示例:

示例

(完成)


(非必要步骤) 修改黑白名单模式、修改其他设置

  • 默认为「在线黑名单」模式,若您想使用「本地黑名单」或是「黑名单-替换国产动画」或是「在线白名单」或是「本地白名单」或是「无任何限制」等其他模式,请手动修改 config.php

  • config.php 每个修改项目,后面都有注释提供参考

(非必要步骤) 防止重复的 301 转址

若要开启网页版油猴脚本的支持,务必设置这个

Apache

Nginx

  • 在配置文件中加入以下代码
server {
    #...(中间略过,请加在配置文件最底下)...
    rewrite "^/intl/gateway/v2/app/search/type?(.*)$" /intl/gateway/v2/app/search/type/index.php?$1 last;
    rewrite "^/intl/gateway/v2/app/search/v2?(.*)$" /intl/gateway/v2/app/search/v2/index.php?$1 last;
    rewrite "^/intl/gateway/v2/app/subtitle?(.*)$" /intl/gateway/v2/app/subtitle/index.php?$1 last;
    rewrite "^/intl/gateway/v2/ogv/playurl?(.*)$" /intl/gateway/v2/ogv/playurl/index.php?$1 last;
    rewrite "^/intl/gateway/v2/ogv/view/app/season?(.*)$" /intl/gateway/v2/ogv/view/app/season/index.php?$1 last;
    rewrite "^/intl/gateway/v2/ogv/view/app/season2?(.*)$" /intl/gateway/v2/ogv/view/app/season2/index.php?$1 last;
    rewrite "^/intl/gateway/v2/ogv/view/app/episode?(.*)$" /intl/gateway/v2/ogv/view/app/episode/index.php?$1 last;
    rewrite "^/pgc/player/api/playurl?(.*)$" /pgc/player/api/playurl/index.php?$1 last;
    rewrite "^/pgc/player/web/playurl?(.*)$" /pgc/player/web/playurl/index.php?$1 last;
    rewrite "^/pgc/view/web/season?(.*)$" /pgc/view/web/season/index.php?$1 last;
    rewrite "^/x/intl/passport-login/oauth2/refresh_token?(.*)$" /x/intl/passport-login/oauth2/refresh_token/index.php?$1 last;
    rewrite "^/x/v2/search/type?(.*)$" /x/v2/search/type/index.php?$1 last;
    rewrite "^/x/web-interface/search/type?(.*)$" /x/web-interface/search/type/index.php?$1 last;
}

Nginx,但是是宝塔用户

  • 打开网站设置的「伪静态」,然后直接复制下面代码,然后保存
rewrite "^/intl/gateway/v2/app/search/type?(.*)$" /intl/gateway/v2/app/search/type/index.php?$1 last;
rewrite "^/intl/gateway/v2/app/search/v2?(.*)$" /intl/gateway/v2/app/search/v2/index.php?$1 last;
rewrite "^/intl/gateway/v2/app/subtitle?(.*)$" /intl/gateway/v2/app/subtitle/index.php?$1 last;
rewrite "^/intl/gateway/v2/ogv/playurl?(.*)$" /intl/gateway/v2/ogv/playurl/index.php?$1 last;
rewrite "^/intl/gateway/v2/ogv/view/app/season?(.*)$" /intl/gateway/v2/ogv/view/app/season/index.php?$1 last;
rewrite "^/intl/gateway/v2/ogv/view/app/season2?(.*)$" /intl/gateway/v2/ogv/view/app/season2/index.php?$1 last;
rewrite "^/intl/gateway/v2/ogv/view/app/episode?(.*)$" /intl/gateway/v2/ogv/view/app/episode/index.php?$1 last;
rewrite "^/pgc/player/api/playurl?(.*)$" /pgc/player/api/playurl/index.php?$1 last;
rewrite "^/pgc/player/web/playurl?(.*)$" /pgc/player/web/playurl/index.php?$1 last;
rewrite "^/pgc/view/web/season?(.*)$" /pgc/view/web/season/index.php?$1 last;
rewrite "^/x/intl/passport-login/oauth2/refresh_token?(.*)$" /x/intl/passport-login/oauth2/refresh_token/index.php?$1 last;
rewrite "^/x/v2/search/type?(.*)$" /x/v2/search/type/index.php?$1 last;
rewrite "^/x/web-interface/search/type?(.*)$" /x/web-interface/search/type/index.php?$1 last;

(非必要步骤) 缓存

多人使用时建议开启

  • 安装 MySQL

  • 修改 config.php 的 SAVE_CACHE 设置

  • 导入 cache.sql

  • 配置 config.php 的“MySQL数据库”

  • 可选项:开启 Redis 可以加快服务器反应速度

    • 安装 Redis

    • 配置 config.php 的“redis数据库”

(非必要步骤,实验性) 支持网页版油猴脚本

  • 油猴脚本地址

  • 修改 config.php 的 WEB_ON 设置

  • 配置上面的禁用 301 转址

  • 脚本的 代理服务器->自定义 输入以下内容 (example.com 请改成你的服务器地址)

  • 注意:不配置上面的 「禁用 301 转址」,将无法正常加载。(哔哩漫游无影响)

  • 题外话:如果不会配置,可以改用这个脚本


文件功能介绍

├─intl/gateway/v2
│ ├─app
│ │ └─search
│ │  ├─type/index.php (东南亚APP 搜索)
│ │  └─v2/index.php (东南亚APP 搜索)
│ └─subtitle/index.php (东南亚APP 字幕)
│ └─ogv
│   ├─playurl/index.php (东南亚APP 播放地址)
│   ├─view/app/episode/index.php (东南亚APP episode)
│   ├─view/app/season/index.php (东南亚APP season)
│   └─view/app/season2/index.php (东南亚APP season)
├─pgc
│ ├─player
│ │ ├─api/playurl/index.php (APP 播放地址)
│ │ └─web/playurl/index.php (WEB 播放地址)
│ └─view
│   └─web/season/index.php (WEB season)
├─x/
│ ├─intl/passport-login/oauth2/refresh_token/index.php (东南亚APP refresh_token)
│ ├─v2/search/type/index.php (APP 搜索)
│ └─web-interface/search/type/index.php (WEB 搜索)
├─utils/
│ ├─auth.php (鉴权)
│ ├─fuck_search.php (在搜索中添加提示)
│ ├─fuck_sub.php (添加东南亚番剧字幕)
│ ├─functions.php (功能函数合集)
│ ├─functions_cache.php (功能函数合集)[仅缓存使用]
│ ├─functions_cache_key.php (功能函数合集)[仅缓存使用]
│ ├─lock_area.php (锁区、web接口判断)
│ ├─process.php (处理用户传入参数)
│ ├─refresh_token.php (自动刷新访问密钥)
│ ├─refresh_token_th.php (自动刷新访问密钥)
│ ├─replace.php (修改返回内容)
│ ├─replace_playurl.php (替换视频)
│ ├─resign.php (替换访问密钥)
│ └─version.php (版本信息、Header)
├─.htaccess (防止重复的 301 转址)
├─add_key.php (添加访问密钥)[仅缓存使用]
├─cache.sql (导入 MySQL 用的)[仅缓存使用]
├─config.php (设置本程序各种参数) <──参数设置在这里
├─hello.php (默认欢迎页面)
└─index.php (WEB 播放地址、显示欢迎页)

biliroaming-php-server's People

Contributors

aisukayuki avatar david082321 avatar girlkiller512 avatar kevinzonda avatar m1saka10010 avatar pchpub avatar qi-mooo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

biliroaming-php-server's Issues

考虑适配在阿里云云函数/腾讯云云函数/华为云函数工作流等云函数上运行吗

如题. 这样服务器可靠性大大提高, 而且成本也比购买服务器低. 自建难度也大大降低.
我不会php, 所以问一下. 或者等暑假有空了我自己写一个python或者nodejs版本的.
不过已知数据库的问题有点难解决, 云函数不允许写数据到本地, 数据存储的问题我在移植FODI项目的时候是通过API连接到Cloudflare Worker KV曲线解决的

最近出现的大会员限制问题

Web 端问题,App 端正常
油猴脚本版本 8.4.3
测试两个账号都拥有大会员
在观看需要大会员的番剧时,会提示 {"code":-10403,"message":"大会员专享限制"}
但是在观看非会员的番剧时,能够正常选择大会员的清晰度

自建服务器
Ubuntu 22.04.2
Nginx 1.24.0
MySQL 5.7.42
PHP 8.2.8
服务器为白名单模式
e98ded45d41913a9cd1e88d28d09e4a5

在出现问题的当天测试 哔哩.plus 服务器(Go)也有相同问题,当天晚上就能拉取了,问该服务器作者说并不清楚 php 端的缓存

关于新版的随机调用

// 自定义API,避免集中请求,降低风控几率
$hk_api = array('host1','host2','host3'); // 随机调用HK,可以自定义其他反代api,例如云函数、CFW,请自行修改 host13 的內容,启用要注释上方默认api
$tw_api = array('host1','host2','host3'); // 随机调用TW,可以自定义其他反代api,例如云函数、CFW,请自行修改 host1
3 的內容,启用要注释上方默认api
if (CUSTOM_HOST_HK == "CUSTOM_HOST_HK") {
define('CUSTOM_HOST_HK', $hk_api[array_rand($hk_api)]); // 随机调用HK
}
if (CUSTOM_HOST_TW == "CUSTOM_HOST_TW") {
define('CUSTOM_HOST_TW', $tw_api[array_rand($tw_api)]); // 随机调用TW
}

如果注释掉上方的默认API则下面的if判断会丢失掉赋值
所以要怎么搞?

服务器不可用

腾讯云的香港服务器,centos7.9版本,宝塔,网站搭建成功,采用本地白名单模式,但是哔哩漫游仍然提示服务器不可用
Screenshot_20231019_065651_com huawei browser_edit_26887793258397
Screenshot_20231019_065742_tv danmaku bili_edit_26930826502661

sql 访问失败

当启用缓存时会因无法访问数据库而解析失败

以下是由 nginx 托管的报错信息

2024/04/20 18:58:46 [error] 105474#105474: *2240 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to a member function query() on string in /opt/BiliRoaming-PHP-Server/utils/functio
ns_cache.php:67
Stack trace:
#0 /opt/BiliRoaming-PHP-Server/utils/auth.php(8): get_userinfo_fromsql()
#1 /opt/BiliRoaming-PHP-Server/intl/gateway/v2/ogv/playurl/index.php(21): include('/opt/BiliRoamin...')
#2 {main}

9721b8f 版本一直返回 -20 ERROR

直接 Git clone 之后,目前版本 会一直返回 -20 ERROR 访问密钥缺失。
当我回退到 该版本 时,正常使用没有问题。
中间版本因时间关系未能逐一验证,望作者能抽空修复。如果作者无法复现或需要日志,可以留下邮箱,我提供目前正在使用的机器供您操作。

能否支持使用season_id自动获取epidlist自动封禁旗下相关视频

可采用https://api.bilibili.com/pgc/web/season/section?season_id=

例如
season_id:45838 为天宫赐福第二季
可直接找到相关的正片和PV等

https://www.bilibili.com/bangumi/media/md20340706/中的作品详情中的正片和PV花絮
为了避免格式问题,找到间谍过家家为例
https://www.bilibili.com/bangumi/media/md28237178
进行比对,可见依旧完结的番剧中格式也没有明显变化,即为固定格式
如何查找season_id?
可在https://www.bilibili.com/bangumi/media/md28237178中使用F12中的网络项
查询https://api.bilibili.com/pgc/web/season即可找到
https://api.bilibili.com/pgc/web/season?season_id=xxxxxx

function getEpidList($url) {
    // 获取JSON数据
    $jsonData = file_get_contents($url);
    // 将JSON数据解码为关联数组
    $data = json_decode($jsonData, true);
    // 如果 json中的code为-404 则返回null
    if ($data['code'] == -404) {
        return null;
    }
    if ($data !== null) {
        $epids = array();
        // 处理主要节目即正片(main_section)的剧集
        foreach ($data['result']['main_section']['episodes'] as $episode) {
            $share_url = $episode['share_url'];
            // 使用正则表达式从分享链接中提取EPID
            if (preg_match('/ep(\d+)/', $share_url, $matches)) {
                $epid = $matches[1];
                $epids[] = $epid;
            }
        }
        // 处理其他节目部分即PV或者其他
        foreach ($data['result']['section'] as $section) {
            foreach ($section['episodes'] as $episode) {
                $share_url = $episode['share_url'];
                // 使用正则表达式从分享链接中提取EPID
                if (preg_match('/ep(\d+)/', $share_url, $matches)) {
                    $epid = $matches[1];
                    $epids[] = $epid;
                }
            }
        }
        return $epids;
    } else {
        return null;
    }
}
$url = 'https://api.bilibili.com/pgc/web/season/section?season_id=' . $season_id;
$epid_list = getEpidList($url);

An error in afea6b9 version

拉取了最新的版本 (afea6b9) 部署在服务器的宝塔面板上,已配置防重复 301 转址
Web 端油猴脚本和 App 端哔哩漫游都填好了服务器的域名
App 端打开番剧一切正常,Web 端首次打开番剧会弹出一大串东西,必须多刷新一次才能看
不确定是油猴脚本的问题还是程序的问题
image
如果去掉防重复 301 转址后直接不能看了
image
服务器环境:
Ubuntu 20.04.5
Nginx 1.23.2
MySQL 5.7.40
PHP 8.2.0
程序配置:
(和拉取的 config.php 不同的地方)
BLOCK_TYPE = local_whitelist
NEED_LOGIN = 1
BILIROAMING = 0
WEB_ON = 1
SAVE_CACHE = 1
SAVE_LOG = 1

关于如何正确食用软件简易教程

Linux (debian 11)如何通过docker部署漫游
无脑直接复制粘贴

curl -fsSL https://get.docker.com | bash -s docker

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker run -d --name web -p 8080:80 -v /root/php:/var/www/html php:7.2-apache

cd /root/php

unzip Server_v4.5.3.zip

至此你应该可以用。 ip:8080。 ip加端口的方式访问

给你的ip解析一个域名。比如xxx.xxx.com

继续
通过这个链接里的教程
https://blog.xiaoz.org/archives/18963
开启代理 以及申请ssl证书。自此应该就没问题

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.