Giter Site home page Giter Site logo

bili-vd-bak / biliroaming-ts-server-vercel Goto Github PK

View Code? Open in Web Editor NEW
42.0 1.0 59.0 928 KB

为BiliRoaming、哔哩UWP 等提供支持。包括支持基本功能、搜索替换、黑白名单的哔哩漫游服务端。部署在Vercel HK1或CFP(调试中)。

License: GNU General Public License v3.0

TypeScript 89.57% HTML 0.64% JavaScript 2.76% CSS 7.03%
biliroaming vercel nextjs

biliroaming-ts-server-vercel's Introduction

biliroaming-serve-ts-vercel

本服务部署在Vercel香港节点上,同时支持Next.js本地部署。
配置修改在 src/_config.ts 中,可以直接改里面的配置文本,也可在Vercel里添加对应名称变量。
使用环境变量更安全。

请旧版用户立即更新

新版会修复一些多余请求、API失效问题。

Features

  • 支持软件:BiliRoaming、油猴脚本、哔哩(Bili.uwp)、BBDown(请包含以下cookies:access_key(手机客户端accesskey,可使用WEB端漫游脚本获取)以解决未登录报错)
  • 支持仅Cookies生成Access_key
  • 尝试解除下载速度限制(方法见BiliRoaming)
  • 代理HK地区番剧(目前Vercel仅提供hkg1节点)
  • 搜索替换(配置中fs开头配置)
  • 自部署黑/白名单(使用NOTION/PostgreSQL作数据库)

部署方法

请看完整篇README文档再动手。
请务必开启黑名单功能,建议同步公共黑名单!!!
请配置Postgresql数据库以减少B站API请求,防止Vercel IP过多请求被禁。
查看Wiki:
配置文档填写说明
:每个服务只可代理一个地区,若需代理多个地区,请再部署一个相同的服务修改配置。
查寻本地缓存和日志请访问https://{yourDomain}/api/admin/log?s=${配置填写的secret}
清理本地缓存和日志请访问https://{yourDomain}/api/admin/clean?s=${配置填写的secret}
: 本地缓存和日志在Vercel Serverless环境里无法长期存储,你可以查看Vercel自带的函数日志。

Vercel

先Fork到自己的仓库,再修改自己仓库里src/_config.ts
修改vercel.jsonregions:若需代理hk香港地区,则填写hkg1(默认)。
注册Vercel,导入本项目,在设置中配置 域名和环境变量。
若需使用Vercel Storage的Postgresql数据库,请连接至此项目;或使用其它pg数据库。重部署后访问https://{yourDomain}/api/admin/init?s=${配置填写的secret},并检查数据库是否已有blacklist cache log三个表。 Tips: 环境变量设置后需下一次部署才可启用,故推荐导入时提前设置。

本地

登录想要代理区域的服务器后台。
找到一个合适的文件夹,clone本仓库并进入。

git clone https://github.com/bili-vd-bak/biliroaming-ts-server-vercel.git --depth 1
cd biliroaming-ts-server-vercel

安装依赖(使用你想要的包管理器,推荐pnpm)。

pnpm i

修改src/_config.ts
(可以在package.json中修改"start": "next start -p $PORT"以设置端口)
执行pnpm run start
使用nginx等反向代理此接口,配置SSL。

其它

参考Vercel的部署,你可以将此项目部署至任何支持Next.js的Serverless服务商。
由于细节差异,不保证在其它平台上的可用性,请自行调整,也欢迎PR。

已知问题

  • Vercel无法本地缓存,故自带缓存功能仅在本地部署时有效。
  • 使用pnpm dev开发时,所有搜索API内req.url会错误获取next.config.mjsrewrites后的函数路径,导致错误。(pnpm build产物正常)(错误由nextjs框架导致)
  • 暂未查明cookies(DedeUserID bili_jct buvid3 buvid4)的作用,故目前强制要求以防止风控

更新方法

Vercel

进入你Fork的仓库,点击代码区域上面的提示Sync fork,点击下面的Update branch,即可自动升级。
若只有Discard n commit(s),则需重新部署,或创建新合并,手动修改。
当升级大版本号时,由于破坏性更改,尽量重新部署,根据Releases说明操作

TODO

  • Vercel Storage 的 Redis KV支持
  • pg管理数据库(管理黑白名单、查看日志)接口
  • [Done]修复番剧屏蔽(理论有效)
  • [alpha]grpc-api请求(见grpc分支)
  • [BETA]Vercel支持新加坡节点,可以为东南亚地区解锁。(然后就被风控用不了了)
  • [BETA]Edge函数版(见cfp分支)
  • [BETA]CloudFlare支持(见cfp分支)

Dev:API测试

  • IP信息:/api/server_info
  • 查询黑名单:/api/users/1
  • 搜索:/x/web-interface/search/type?search_type=media_bangumi&keyword=86
  • 搜索(无法测试):/x/v2/search/type
  • 番剧详情:/pgc/view/web/season?season_id=3375
  • 番剧详情(无法测试):/pgc/view/v2/app/season
  • 获取playurl:/pgc/player/web/playurl?cid=3629601
  • 获取playurl(无法测试):/pgc/player/api/playurl
  • 所有intlAPI(暂未启用)

开源信息

  • Next.js
  • @neondatabase/serverless
  • ts-md5
  • qs
  • @beetcb/sstore
  • pino

biliroaming-ts-server-vercel's People

Contributors

xrz-cloud 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

Watchers

 avatar

biliroaming-ts-server-vercel's Issues

web版搜索api限制

使用web搜索api会返回-412
原因:可能是未接受cookies并未转发至biliAPI
搜索API

解决方法:
转发客户端cookie
或 服务端识别searchType并用手机端API请求,并合成为web格式response

关于log接口对log进行查看

在用这个项目的时候(部署在vercel),发现有需要查log的需求,在api文件夹找到了log的api接口为/api/admin/log?s=secret,但是实际上这样去进行访问后,网页只返回了一个{},并没有任何实质性的内容。所以就是想问问这个api的正确用法是怎么样的,目标是看到运行的log,谢谢

初始化数据库显示密码错误

按步骤在Vercel项目Storage里连接数据,并将 db_bitio_enabled 设为1后,初始化数据库显示秘钥错误,秘钥填的星号里的
image
image

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.