前言
本文是针对某Discord群中的w开头的老哥开发的名为“GameResDownloader2”的基于Python的下载工具的安装和使用教程。
此下载工具主要用途是抓包+解密部分手机游戏的原始数据包(抓包+解密),而非经过处理的手机版本的数据包。
为了规避版权问题,Discord群组内会定期删除下载工具使用的脚本,因此本文也不会对脚本进行介绍,如果真的有兴趣,请您在加入DC群后向作者提问。
另外我感觉w老哥大概率也是个国人或者中文圈子的人,因为此下载工具支持的语言只有“中英”,所以本文也会尽量采取低调的方式对工具使用方法进行介绍。实际上就是写一个简单的笔记啦。
注:除了UI界面机翻以外,游戏名称是从qooapp抓的,所以软件开发者大概也并不会中文吧……
准备
首先既然是基于Python的工具,环境配置方面你肯定是要安装Python。
您这边请:https://www.python.org/downloads/release/python-3131/
Python安装教程就不额外介绍了……基本上就是一路按按按,记得把Python加到环境变量的那个勾点上就行。
Python里面是自带pip的,后面要用上。
第二个就是要安装Visual Studio,因为某些模块的造轮子过程好像需要调用VSC++。
点击链接:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
下载以后点开安装程序,然后请安装左上角的使用C++的桌面开发(只需要这个):
需要调整安装位置的话可以在安装位置选项卡调整,装完以后关了就行。
环境配置
下载好DC服务器中w氏上传的最新压缩包以后解压,然后进入相关文件夹。
右键,“在终端中打开”
然后视情况看看你是否需要代理:$env:HTTP_PROXY="http://127.0.0.1:7890";$env:HTTPS_PROXY="http://127.0.0.1:7890"
或者调整pip的安装镜像为清华源:
python -m pip install --upgrade pip
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
接下来,请运行pip install -r requirements.txt --no-cache-dir
安装和造轮子。
安装完成后不会有报错则没有问题。
使用
请将下载好的脚本放置在GameResDownloader2\CodeModules\GameCode
目录下。(部分游戏的文件目录可能加密,请参考前后聊天记录的说明或其他附件文件进行调整修改)
本例以12月17日关服的手游八月的棒球甜心为例:
在上一步完成指令行中输入:python GameResDownloader2.py
,会弹出一个窗口。
这一步在指令行窗口显示的报错可以完全无视。
默认情况下为英语,你可以在右下角将其修改为中文(zh-Hans):
默认的下载模式为自动模式,八月的棒球甜心为手动模式,请在右下角将自动
修改手动
。
下载前如为海外游戏,如本例,请使用某些软件的“系统代理”功能加速。
下载的内容是带有全部数据包文件地址的json
文件。会存储在GameResDownloader2\GameResDownloader2
目录下,格式为json
,且会依据数据包版本区分为游戏名_系统_新旧补
的若干种文件名形式,如八月的棒球甜心_Android_new.json
。
接下来,请通过运行下面的下载脚本将完整数据包下载到本地(脚本由kimi编写):
import json
import os
import requests
# 请修改为json的完整路径
json_file_path = 'D:\Downloads\GameResDownloader2\GameResDownloader2\八月的棒球甜心_Android_new.json'
# 读取JSON文件
with open(json_file_path, 'r') as file:
data = json.load(file)
# 创建一个目录来存储下载的文件,请自定义
download_dir = 'D:\Downloads\GameResDownloader2\GameResDownloader2\八月的棒球甜心'
if not os.path.exists(download_dir):
os.makedirs(download_dir)
# 遍历JSON数据中的每个条目
for key, value in data.items():
# 获取文件的URL和名称
file_url = value['url'].replace('"', '') # 移除URL中的HTML实体
file_name = value['name']
file_path = os.path.join(download_dir, file_name) # 完整的文件路径
# 确保文件路径中的所有目录都存在
os.makedirs(os.path.dirname(file_path), exist_ok=True)
# 检查文件是否已经存在且大小匹配
if os.path.exists(file_path) and os.path.getsize(file_path) == value['size']:
print(f'文件 {file_name} 已存在,跳过下载。')
continue
# 下载文件
try:
response = requests.get(file_url, stream=True)
response.raise_for_status() # 确保请求成功
with open(file_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f'文件 {file_name} 下载成功,保存在 {file_path}。')
except requests.RequestException as e:
print(f'下载文件 {file_name} 时出错:{e}')
print('所有文件下载完成。')
如有疑问欢迎提出。