最低允许漫游版本

1. 设置最低允许漫游版本,详情看哔哩漫游仓库 versionCode
pull/27/head
david082321 3 years ago
parent 9fee461290
commit b0d3be773e

@ -14,6 +14,7 @@ define('WEB_ON', 0); // 是否开启web接口 0 否, 1 是 目前Web接口不受
define('LOCK_AREA', 0); // 服务器锁区,须设置$SERVER_AREA。0 否, 1 是 define('LOCK_AREA', 0); // 服务器锁区,须设置$SERVER_AREA。0 否, 1 是
$BLACKLIST = array('1', '2', '3'); // 本地黑名单,填写 uid可自行添加、删除注意使用英文,和' $BLACKLIST = array('1', '2', '3'); // 本地黑名单,填写 uid可自行添加、删除注意使用英文,和'
$WHITELIST = array('1', '2', '3'); // 本地白名单,填写 uid可自行添加、删除注意使用英文,和' $WHITELIST = array('1', '2', '3'); // 本地白名单,填写 uid可自行添加、删除注意使用英文,和'
define('ROAMING_MIN_VER', 0); // 设置最低允许漫游版本,详情看哔哩漫游仓库 versionCode
// 封锁指定epid视频 // 封锁指定epid视频
define('BAN_EP', 0); // 是否开启ban特定视频 define('BAN_EP', 0); // 是否开启ban特定视频

@ -34,16 +34,14 @@ if (ACCESS_KEY != "" && SAVE_CACHE == 1) {
} }
// key已过期 或 服务器不允许未登录用户 // key已过期 或 服务器不允许未登录用户
if ($uid == "0" && (NEED_LOGIN == 1 || $expired == "1")) { if ($uid == "0" && (NEED_LOGIN == 1 || $expired == "1")) {
$baned = 20; block(20, "访问密钥已过期或不存在(脚本设置左下角重新授权)");
block($baned);
} }
} elseif (ACCESS_KEY != "") { } elseif (ACCESS_KEY != "") {
$out = get_userinfo(); $out = get_userinfo();
$uid = $out[0]; $uid = $out[0];
$due = $out[1]; $due = $out[1];
if ($uid == "0" && NEED_LOGIN == 1) { if ($uid == "0" && NEED_LOGIN == 1) {
$baned = 20; block(20, "访问密钥已过期或不存在(脚本设置左下角重新授权)");
block($baned);
} }
} }
@ -68,24 +66,28 @@ if (ACCESS_KEY != "") { // access_key 存在
if ($is_blacklist) { if ($is_blacklist) {
$is_baned = true; $is_baned = true;
$baned = 21; $baned = 21;
$reason = "uid黑名单";
} }
break; break;
case "whitelist": // 在线白名单 case "whitelist": // 在线白名单
if (!$is_whitelist) { if (!$is_whitelist) {
$is_baned = true; $is_baned = true;
$baned = 22; $baned = 22;
$reason = "uid不在白名单";
} }
break; break;
case "local_blacklist": // 本地黑名单 case "local_blacklist": // 本地黑名单
if (in_array($uid, $BLACKLIST)) { if (in_array($uid, $BLACKLIST)) {
$is_baned = true; $is_baned = true;
$baned = 21; $baned = 21;
$reason = "uid黑名单";
} }
break; break;
case "local_whitelist": // 本地白名单 case "local_whitelist": // 本地白名单
if (!in_array($uid, $WHITELIST)) { if (!in_array($uid, $WHITELIST)) {
$is_baned = true; $is_baned = true;
$baned = 22; $baned = 22;
$reason = "uid不在白名单";
} }
break; break;
default: default:
@ -98,15 +100,14 @@ if (ACCESS_KEY != "") { // access_key 存在
include (ROOT_PATH."utils/replace_playurl.php"); include (ROOT_PATH."utils/replace_playurl.php");
replace_playurl(); replace_playurl();
} else { } else {
block($baned); block($baned, $reason);
} }
} }
} else { // access_key 不存在 } else { // access_key 不存在
if (CID == "13073143" || CID == "120453316") { // 漫游测速 if (CID == "13073143" || CID == "120453316") { // 漫游测速
//pass //pass
} else if (BLOCK_TYPE == "whitelist" || BLOCK_TYPE == "local_whitelist" || NEED_LOGIN == 1) { // 白名单模式 或 黑名单模式+需要登录 } else if (BLOCK_TYPE == "whitelist" || BLOCK_TYPE == "local_whitelist" || NEED_LOGIN == 1) { // 白名单模式 或 黑名单模式+需要登录
$baned = 23; block(23, "未提供访问密钥(漫游需要登录、脚本需要授权)");
block($baned);
} }
} }
?> ?>

@ -5,19 +5,16 @@ if(!defined('SYSTEM')) {exit();}
// 锁区、web接口、X-From-Biliroaming // 锁区、web接口、X-From-Biliroaming
if ($cache_type == "app"){ if ($cache_type == "app"){
if ($type == 1 && LOCK_AREA == 1 && !empty($SERVER_AREA) && !in_array(AREA, $SERVER_AREA)) { if ($type == 1 && LOCK_AREA == 1 && !empty($SERVER_AREA) && !in_array(AREA, $SERVER_AREA)) {
$baned = 30; block(30, "area黑名单");
block($baned); // 判断服务器锁区
} }
if (BILIROAMING_VERSION == "" && BILIROAMING == 1) { if (BILIROAMING_VERSION == "" && BILIROAMING == 1) {
if (WEB_ON == 1 && $path == "/intl/gateway/v2/ogv/view/app/season"){ if (WEB_ON == 1 && $path == "/intl/gateway/v2/ogv/view/app/season"){
// web接口会用到东南亚season特殊放行 // web接口会用到东南亚season特殊放行
} else { } else {
$baned = 31; block(31, "此API仅限漫游用户若误封请到这里提出 github.com/david082321/BiliRoaming-PHP-Server/issues");
block($baned); // 没带上 X-From-Biliroaming 的请求头
} }
} }
} elseif ($cache_type == "web" && WEB_ON == 0) { } elseif ($cache_type == "web" && WEB_ON == 0) {
$baned = 32; block(32, "服务器未开放web接口");
block($baned); // 服务器不开web接口
} }
?> ?>

@ -12,31 +12,39 @@ define('EP_ID', @$_GET['ep_id']);
define('SS_ID', @$_GET['season_id']); define('SS_ID', @$_GET['season_id']);
define('QN', @$_GET['qn']); define('QN', @$_GET['qn']);
define('BILIROAMING_VERSION', @$_SERVER['HTTP_X_FROM_BILIROAMING']); define('BILIROAMING_VERSION', @$_SERVER['HTTP_X_FROM_BILIROAMING']);
define('BILIROAMING_VERSION_CODE', @$_SERVER['HTTP_BUILD']);
$baned = 0; $baned = 0;
$th_paths = array("/intl/gateway/v2/app/search/type","/intl/gateway/v2/app/search/v2","/intl/gateway/v2/app/subtitle","/intl/gateway/web/v2/subtitle","/intl/gateway/v2/ogv/view/app/season","/intl/gateway/v2/ogv/view/app/season2","/intl/gateway/v2/ogv/playurl"); $th_paths = array("/intl/gateway/v2/app/search/type","/intl/gateway/v2/app/search/v2","/intl/gateway/v2/app/subtitle","/intl/gateway/web/v2/subtitle","/intl/gateway/v2/ogv/view/app/season","/intl/gateway/v2/ogv/view/app/season2","/intl/gateway/v2/ogv/playurl");
if (BILIROAMING_VERSION == '') { $get_area = @$_GET['area'];
if (BILIROAMING_VERSION == '' && BILIROAMING_VERSION_CODE == '') {
if (BILIROAMING == 1 && WEB_ON == 0) { //仅限漫游用户且未开放web脚本 if (BILIROAMING == 1 && WEB_ON == 0) { //仅限漫游用户且未开放web脚本
$baned = 10; block(10, "服务器限漫游使用");
block($baned);
} }
if (@$_GET['area'] == '' || @$_GET['area'] == 'false') { //web脚本,兼容泰区无area情况 if ($get_area == '' || $get_area == 'false') { //web脚本,兼容泰区无area情况
if (in_array($path, $th_paths)) { if (in_array($path, $th_paths)) {
define('AREA', 'th'); define('AREA', 'th');
} else { } else {
define('AREA', 'noarea'); define('AREA', 'noarea');
} }
} else { } else {
define('AREA', @$_GET['area']); define('AREA', $get_area);
} }
} else if (@$_GET['area'] == '') { //适配老漫游版本兼容泰区无area情况 } else if (BILIROAMING_VERSION != '' && BILIROAMING_VERSION_CODE != '') {
if ((int)BILIROAMING_VERSION_CODE < ROAMING_MIN_VER) {
if (in_array($path, $th_paths)) { block(14, "哔哩漫游模块版本过低");
define('AREA', 'th'); }
//适配老漫游版本兼容泰区无area情况
if ($get_area == '') {
if (in_array($path, $th_paths)) {
define('AREA', 'th');
} else {
define('AREA', 'oldversion');
}
} else { } else {
define('AREA', 'oldversion'); define('AREA', $get_area);
} }
} else { } else {
define('AREA', @$_GET['area']); block(15, "错误请求头");
} }
if (@$_GET['ts'] == '') { if (@$_GET['ts'] == '') {
define('TS', time()); define('TS', time());
@ -44,55 +52,17 @@ if (@$_GET['ts'] == '') {
define('TS', @$_GET['ts']); define('TS', @$_GET['ts']);
} }
if (in_array(EP_ID, $epid_list) && BAN_EP == 1) { if (in_array(EP_ID, $epid_list) && BAN_EP == 1) {
$baned = 11; block(11, "ep_id黑名单");
block($baned);
} }
if (in_array(CID, $cid_list) && BAN_CID == 1) { if (in_array(CID, $cid_list) && BAN_CID == 1) {
$baned = 12; block(12, "cid黑名单");
block($baned);
} }
if (in_array(AREA, $BAN_SERVER_AREA)) { if (in_array(AREA, $BAN_SERVER_AREA)) {
$baned = 13; block(13, "area黑名单");
block($baned);
} }
function block($baned){ function block($code, $reason){
switch ($baned) { http_response_code(200); // B站就是都返回200
case 10: exit('{"code":-'.$code.',"message":"'.$reason.'"}');
$reason = "服务器限漫游使用";
break;
case 11:
$reason = "ep_id黑名单";
break;
case 12:
$reason = "cid黑名单";
break;
case 13:
case 30:
$reason = "area黑名单";
break;
case 20:
$reason = "访问密钥已过期或不存在(脚本设置左下角重新授权)";
break;
case 21:
$reason = "uid黑名单";
break;
case 22:
$reason = "uid不在白名单";
break;
case 23:
$reason = "未提供访问密钥(漫游需要登录、脚本需要授权)";
break;
case 31:
$reason = "此API仅限漫游用户若误封请到这里提出 github.com/david082321/BiliRoaming-PHP-Server/issues";
break;
case 32:
$reason = "服务器未开放web接口";
break;
default:
$reason = "未知错误";
}
http_response_code(404);
exit('{"code":-418,"message":"'.$reason.'"}');
} }
?> ?>

Loading…
Cancel
Save