mod: 缓解投稿视频接口风控

This commit is contained in:
orz12
2024-01-24 20:15:16 +08:00
parent 15fa430384
commit 8e6eba4139
3 changed files with 25 additions and 4 deletions

View File

@@ -1,3 +1,6 @@
import 'dart:convert';
import 'dart:math';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:hive/hive.dart';
import '../common/constants.dart';
@@ -79,6 +82,8 @@ class MemberHttp {
String order = 'pubdate',
bool orderAvoided = true,
}) async {
String dmImgStr = Utils.base64EncodeRandomString(16, 64);
String dmCoverImgStr = Utils.base64EncodeRandomString(32, 128);
Map params = await WbiSign().makSign({
'mid': mid,
'ps': ps,
@@ -88,12 +93,15 @@ class MemberHttp {
'order': order,
'platform': 'web',
'web_location': 1550101,
'order_avoided': orderAvoided
'order_avoided': orderAvoided,
'dm_img_list': '[]',
'dm_img_str': dmImgStr.substring(0, dmImgStr.length - 2),
'dm_cover_img_str': dmCoverImgStr.substring(0, dmCoverImgStr.length - 2),
});
var res = await Request().get(
Api.memberArchive,
data: params,
extra: {'ua': 'pc'},
extra: {'ua': 'Mozilla/5.0'},
);
if (res.data['code'] == 0) {
return {

View File

@@ -338,4 +338,17 @@ class Utils {
return md5String;
}
static String generateRandomString(int minLength, int maxLength) {
const String printable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#\$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ ';
var random = Random();
int length = minLength + random.nextInt(maxLength - minLength + 1);
return List<String>.generate(length, (index) => printable[random.nextInt(printable.length)]).join();
}
static String base64EncodeRandomString(int minLength, int maxLength) {
String randomString = generateRandomString(minLength, maxLength);
return base64.encode(utf8.encode(randomString));
}
}

View File

@@ -80,7 +80,7 @@ class WbiSign {
String getMixinKey(String orig) {
String temp = '';
for (int i = 0; i < mixinKeyEncTab.length; i++) {
temp += orig.split('')[mixinKeyEncTab[i]];
temp += orig[mixinKeyEncTab[i]];
}
return temp.substring(0, 32);
}
@@ -104,7 +104,7 @@ class WbiSign {
final String queryStr = query.join('&');
final String wbiSign =
md5.convert(utf8.encode(queryStr + mixinKey)).toString(); // 计算 w_rid
return {'wts': currTime.toString(), 'w_rid': wbiSign};
return {'w_rid': wbiSign,'wts': currTime.toString()};
}
// 获取最新的 img_key 和 sub_key 可以从缓存中获取