diff --git a/lib/http/member.dart b/lib/http/member.dart index bf84b6eb..0031ab6d 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -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 { diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index bb4aaa93..27aae06b 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -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.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)); + } } diff --git a/lib/utils/wbi_sign.dart b/lib/utils/wbi_sign.dart index 4f831f16..5da75da1 100644 --- a/lib/utils/wbi_sign.dart +++ b/lib/utils/wbi_sign.dart @@ -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 可以从缓存中获取