Files
PiliPlus/lib/utils/accounts/grpc_headers.dart
bggRGjQaUbCoE 952d168022 fix grpc contentType
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
2025-12-19 11:22:26 +08:00

87 lines
2.6 KiB
Dart

import 'dart:convert';
import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/grpc/bilibili/metadata.pb.dart';
import 'package:PiliPlus/grpc/bilibili/metadata/device.pb.dart';
import 'package:PiliPlus/grpc/bilibili/metadata/fawkes.pb.dart';
import 'package:PiliPlus/grpc/bilibili/metadata/locale.pb.dart';
import 'package:PiliPlus/grpc/bilibili/metadata/network.pb.dart' as network;
import 'package:PiliPlus/utils/login_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
abstract final class GrpcHeaders {
static const _build = 2001100;
static const _versionName = '2.0.1';
static const _biliChannel = 'master';
static const _mobiApp = 'android_hd';
static const _device = 'android';
static String get _buvid => LoginUtils.buvid;
static String get _traceId => Constants.traceId;
static String get _sessionId => Utils.generateRandomString(8);
static final Map<String, String> _base = {
'grpc-encoding': 'gzip',
'gzip-accept-encoding': 'gzip,identity',
'user-agent': Constants.userAgent,
'x-bili-gaia-vtoken': '',
'x-bili-aurora-zone': '',
'x-bili-trace-id': _traceId,
'buvid': _buvid,
'bili-http-engine': 'cronet',
// 'te': 'trailers', // dio not supported
'x-bili-device-bin': base64Encode(
Device(
appId: 5,
build: _build,
buvid: _buvid,
mobiApp: _mobiApp,
platform: _device,
channel: _biliChannel,
brand: _device,
model: _device,
osver: '15',
versionName: _versionName,
).writeToBuffer(),
),
'x-bili-network-bin': base64Encode(
network.Network(type: network.NetworkType.WIFI).writeToBuffer(),
),
'x-bili-locale-bin': base64Encode(
Locale(
cLocale: LocaleIds(language: 'zh', region: 'CN', script: 'Hans'),
sLocale: LocaleIds(language: 'zh', region: 'CN', script: 'Hans'),
timezone: 'Asia/Shanghai',
).writeToBuffer(),
),
'x-bili-exps-bin': '',
};
static String get fawkes => base64Encode(
FawkesReq(
appkey: _mobiApp,
env: 'prod',
sessionId: _sessionId,
).writeToBuffer(),
);
static Map<String, String> newHeaders([String? accessKey]) {
return {
..._base,
if (accessKey != null) 'authorization': 'identify_v1 $accessKey',
'x-bili-fawkes-req-bin': fawkes,
'x-bili-metadata-bin': base64Encode(
Metadata(
accessKey: accessKey,
mobiApp: _mobiApp,
device: _device,
build: _build,
channel: _biliChannel,
buvid: _buvid,
platform: _device,
).writeToBuffer(),
),
};
}
}