From 89524db09252aee3f13b5aca1d987a0872f2e1f2 Mon Sep 17 00:00:00 2001 From: Lkeme <19500576+lkeme@users.noreply.github.com> Date: Tue, 18 Nov 2025 14:32:28 +0800 Subject: [PATCH] fix(MainSite): addcoin risk --- docs/DOC.md | 7 ++++++ plugin/MainSite/MainSite.php | 3 ++- plugin/VipPoint/Traits/PointInfo.php | 1 + profile/example/device/device.yaml | 6 +++--- src/Api/Video/ApiCoin.php | 32 +++++++++++++++++++++++----- 5 files changed, 40 insertions(+), 9 deletions(-) diff --git a/docs/DOC.md b/docs/DOC.md index cf64d52..7608e79 100644 --- a/docs/DOC.md +++ b/docs/DOC.md @@ -229,6 +229,13 @@ $ docker run -itd --rm -e USER_NAME=你的B站登录账号 -e USER_PASSWORD=你 $ docker run -itd --rm -v /path/to/your/confFilePath:/app/profile/user lkeme/bilihelper-personal ``` +- 通过配置文件进行传入且使用验证码(示例命令) + +```shell +$ docker run -itd -e MIRRORS=2 -e CAPTCHA=1 -e CAPTCHA_HOST=0.0.0.0 -e CAPTCHA_PORT=50001 -p 50001:50001 -v + /your/path/bh/profile/user:/app/profile/user lkeme/bilihelper-personal +``` + - 版本兼容 ```shell diff --git a/plugin/MainSite/MainSite.php b/plugin/MainSite/MainSite.php index 5a33ebe..0d9205a 100644 --- a/plugin/MainSite/MainSite.php +++ b/plugin/MainSite/MainSite.php @@ -175,7 +175,7 @@ class MainSite extends BasePlugin */ protected function reward(string $aid): void { - $response = ApiCoin::coin($aid); + $response = ApiCoin::appCoin($aid); // switch ($response['code']) { case -101: @@ -184,6 +184,7 @@ class MainSite extends BasePlugin Log::notice("主站任务: $aid 投币成功"); break; default: + // Log::info(json_encode($response, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)); Log::warning("主站任务: $aid 投币失败 {$response['code']} -> {$response['message']}"); } } diff --git a/plugin/VipPoint/Traits/PointInfo.php b/plugin/VipPoint/Traits/PointInfo.php index 489d491..5379d89 100644 --- a/plugin/VipPoint/Traits/PointInfo.php +++ b/plugin/VipPoint/Traits/PointInfo.php @@ -26,6 +26,7 @@ trait PointInfo */ public function pointInfo(array $data, string $name): bool { + // 0:成功 、-101:账号未登录 、-401:非法访问 、-403:访问权限不足 、-111:csrf 校验失败 、-400:请求错误 、69800:网络繁忙 请稍后再试 、69801:你已领取过该权益 $ts = date('Y-m-d H:i:s', $data['data']['current_ts']); $point = $data['data']['point_info']['point']; Log::notice("大会员积分@$name: 截至 $ts 您当前拥有 $point 个积分"); diff --git a/profile/example/device/device.yaml b/profile/example/device/device.yaml index f3bfb6b..7723aca 100644 --- a/profile/example/device/device.yaml +++ b/profile/example/device/device.yaml @@ -3,8 +3,8 @@ device_version: 0.0.1 app: bili_a: # Android package: "tv.danmaku.bili" - version: "8.61.0" - build: "8610300" + version: "8.70.0" + build: "8700300" channel: "bili" device: "phone" mobi_app: "android" @@ -15,7 +15,7 @@ app: secret_key: "NTYwYzUyY2NkMjg4ZmVkMDQ1ODU5ZWQxOGJmZmQ5NzM" app_key_n: "NzgzYmJiNzI2NDQ1MWQ4Mg==" secret_key_n: "MjY1MzU4M2M4ODczZGVhMjY4YWI5Mzg2OTE4YjFkNjU=" - statistics: '{"appId":1,"platform":3,"version":"8.61.0","abtest":""}' + statistics: '{"appId":1,"platform":3,"version":"8.70.0","abtest":""}' bili_i: # IOS app_key: "MjdlYjUzZmM5MDU4ZjhjMw==" secret_key: "YzJlZDUzYTc0ZWVlZmUzY2Y5OWZiZDAxZDhjOWMzNzU=" diff --git a/src/Api/Video/ApiCoin.php b/src/Api/Video/ApiCoin.php index cc53a23..fe8e64b 100644 --- a/src/Api/Video/ApiCoin.php +++ b/src/Api/Video/ApiCoin.php @@ -18,20 +18,20 @@ namespace Bhp\Api\Video; use Bhp\Request\Request; +use Bhp\Sign\Sign; use Bhp\User\User; class ApiCoin { /** - * 投币 + * 投币Web * @param string $aid * @param int $multiply * @param int $select_like * @return array */ - public static function coin(string $aid, int $multiply = 1, int $select_like = 0): array + public static function webCoin(string $aid, int $multiply = 1, int $select_like = 0): array { - // $user = User::parseCookie(); // $url = 'https://api.bilibili.com/x/web-interface/coin/add'; @@ -51,9 +51,33 @@ class ApiCoin // {"code":0,"message":"0","ttl":1,"data":{"like":false}} // CODE -> 137001 MSG -> 账号封禁中,无法完成操作 // CODE -> -650 MSG -> 用户等级太低 + // {"code":-401,"message":"非法访问","ttl":1,"data":{"ga_data":{"decisions":["verify_captcha_level3"],"risk_level":1,"grisk_id":"********","decision_ctx":{"buvid":"********infoc","decision_type":"4","hrid":"53903","ip":"********","mid":"********","origin_scene":"video_coin","referer":"https://www.bilibili.com/video/********","scene":"video_coin","ua":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0","v_voucher":"voucher_e********b"}}}} return Request::postJson(true, 'pc', $url, $payload, $headers); } + + /** + * 投币App + * @param string $aid + * @param int $multiply + * @param int $select_like + * @return array + */ + public static function appCoin(string $aid, int $multiply = 1, int $select_like = 0): array + { + $url = 'https://app.bilibili.com/x/v2/view/coin/add'; + // + $payload = [ + 'access_key' => getU('access_token'), + 'aid' => $aid, + 'multiply' => $multiply, // 投币*1 + 'select_like' => $select_like,// 默认不点赞 + ]; + // {"code":0,"message":"0","ttl":1,"data":{"prompt":true,"like":false,"guide":{"type":"share","title":"喜欢就分享给朋友吧"}}} [] [] + return Request::postJson(true, 'app', $url, Sign::common($payload)); + } + + /** * 获取硬币 * @return array @@ -79,6 +103,4 @@ class ApiCoin $payload = []; return Request::getJson(true, 'pc', $url, $payload); } - - }