Charles抓包

本文详细介绍借助Charles实现https抓包的步骤。

所需软件或工具

  • Charles: 提供Windows、macOS以及Linux版,官方正版试用版存在单次使用30分钟的限制且时不时跳出来一个提示,与本例中足矣
  • 全局http代理软件:
  • Android only:
    • Android版本需小于等于6,现在手机基本见不到旧版本的安卓了,模拟器使用Android 6较多,可在设置-关于中查看Android版本
    • BetterFGO客户端: 获取方式见下方,仅用于日服和美服

配置Charles

Charles UI

Charles界面

Charles Configuration

Charles配置

https://zhile.io/2017/07/07/charles-proxy-usage-and-license.html在新窗口打开

  1. 确保手机与电脑处于同一局域网,或模拟器与Charles在同一电脑,关闭电脑上其他一切ⅤΡΝ等代理软件
  2. Help-Local IP Address, 记录显示的本机IPv4地址,例如192.168.0.5
  3. Proxy-Proxy Settings, 记录或修改端口,默认8888
  4. Help-SSL Proxying-Install Charles Root Certificate on a Mobile device or Remote Browser, 无操作,提示设置手机代理(192.168.0.5:8888)以及证书下载地址chls.pro/ssl,详见下一步
  5. Proxy-SSL Proxying Settings,在左侧include中点击添加Add,分别在host和port中输入*,代表解密所有https流量
  6. 点击OK,Charles设置完毕,确保Charles最右下角显示Recording小字
  7. 在iOS/Android完成设置代理,第一次连接上Charles时,会提示有个远程连接Connection from 1.2.3.4,确保此处的IP是你手机/模拟器的IP,选择接受Allow,否则可能为网络中其他木马爬虫,点击拒绝Deny

配置iOS

iOS Configuration

iOS配置

截图仅用于指示设置项所在位置,若与下面文字步骤不一致,以文字步骤为准。

iOS手机证书

以iOS14为例,不同iOS版本设置可能显示在不同地方,仔细找找。

  1. 连接wifi,确保与电脑处于同一个局域网(如同一路由器或连接电脑的热点等)
  2. 设置-WiFi-已连接WiFi右侧的按钮-配置代理-手动,填入配置Charles中第3步显示的代理主机host192.168.0.5和端口port8888(举例),储存
  3. 打开Safari!Safari!一定要是Safari,不能使用其他浏览器。打开网址chls.pro/ssl,提示下载配置描述文件,选择允许
  4. 打开设置,顶部应该显示已下载描述文件,若没有,可在通用-描述文件-已下载描述文件中寻找,一路安装Charles Proxy CA ****
  5. 打开设置-通用-关于本机-证书信任设置,打开Charles的证书信任开关(iOS 10.2及以下没有这一步)
  6. 打开浏览器,进入https://baidu.com,检查Charles列表大部分https开头网址前面是蓝色的图标或闪电图标,如为白色的锁图标,说明未解密,请删除上述描述文件再重试
  7. 证书安装完毕可关闭WiFi代理,后续使用全局代理即可

iOS设置全局http代理

  1. 外区账号下载安装Potatso Lite
  2. 点击右上角新建-手动输入: 类型-HTTP(注意不是https), 服务器和端口填写同上一步。
  3. 确保设置中的智能路由/Smart Routing为关闭状态。其他代理软件可能需要设置为代理模式(shadowrocket)或全局模式。不能是PAC,否则国内流量都将不走代理。
  4. 选中刚新建的代理,点击按钮连接,第一次使用会申请创建ⅤΡΝ的权限。在Charles中会弹出提示,并允许接收来自此设备的请求。

配置Android

Android Configuration

Android配置

截图仅用于指示设置项所在位置,若与下面文字步骤不一致,以文字步骤为准。

Android手机证书

以MuMu模拟器(Android 6.0.1)为例,不同模拟器/手机的设置布局可能存在差别

  1. 使用Android 6及以下的手机或模拟器
  2. 如使用手机则确保和电脑处于同一局域网(如同一路由器或连接电脑的热点等)
  3. 打开设置-WiFi-长按或其他方式查看已连接WiFi详情-修改网络,代理选择手动,填入配置Charles中第3步显示的代理主机host192.168.0.5和端口port8888(举例),储存
  4. 浏览器打开chls.pro/ssl,下载pem/crt证书文件,安装证书有两种方法
    • 直接打开文件安装,有时可能会失败
    • 设置-安全-从SD卡安装证书,选择刚下载的证书文件,取个名,默认凭据用途为ⅤΡΝ和应用
  5. 你可以在设置-安全-信任的凭据-用户中找到Charles Proxy CA ****
  6. 打开浏览器,进入https://baidu.com,检查Charles列表大部分(并非所有)https开头网址前面是蓝色的图标或闪电图标,如均为白色的锁图标,说明未解密,请删除上述证书再重试
  7. 按理说证书安装成功后只需使用后续全局代理即可,可关闭WiFi代理设置

Android这一步系统代理下载证书理应也可以用下面的全局代理替代

Android设置全局http代理

  1. 下载安装Drony,只有英文和繁体,根据系统语言显示,参考上图
  2. 打开后显示日志页和设置页,左右滑动切换到设置页
  3. 网络-无线网络-选择连接的WiFi-网络细节设置
    • WiFi名: 代理类型/Proxy type手动/Manual
    • WiFi名-手动代理/Manual Proxy: 主机名端口同上一步,代理类型/Proxy type普通/Plain
    • WiFi名-过滤器/Filter: 过滤默认值选择本地代理链全部/Local Proxy Chain All
    • 返回
  4. 过滤器-默认值: 选择引导全部/Direct All
  5. 左滑回到日志页,点击底部开关,开启后在通知栏可以看到ⅤΡΝ连接提示,第一次使用会申请创建ⅤΡΝ的权限。在Charles中会弹出提示,并允许接收来自此设备的请求。

抓包与导入

Save Response

目标网址与保存内容

FGO抓包

2022.01.04国服更新2.36.0支持iOS/Android互登,目标域名更改为line3-s2-xxx-fate.bilibiligame.net,但仍有可能依旧为line1

  1. 重新启动并登陆FGO国服、台服、BetterFGO日服/美服,直到看到地球仪或公告栏为止
  2. 找到Charles的列表中以下url,如果找不到就关闭FGO重新打开多试几次
    • 国服: 其中line3-s2-ios-fate随账号所在服务器(iOS/b服/渠道服)以及所在地理位置等有所不同,最重要的是_key=toplogin
    https://line3-s2-ios-fate.bilibiligame.net/rongame_beta//rgfate/60_1001/ac.php?_userId=xxxx&_key=toplogin
    
    • 台服: 与国服类似,域名格式https://line3-s1-all.fate-go.com.tw,由于无台服账号,待确认
    • 日服:
    https://game.fate-go.jp/login/top?_userId=xxxx
    
    • 美服: 与日服类似,域名为https://game.fate-go.us,由于无美服账号,待确认
  3. 选中上述url右键Save Response,(注意是Response,不要和Request搞混了),另存为fgo.txt(名字随意)
  4. 检查: 任意文本编辑器打开保存的txt文件,对于国服和台服,内容为ey开头的一大串字母数字符号组成的base64编码;对于日服和美服,为{开头的可读性极高的json格式。默认应为utf8编码,打开后仅查看,请勿编辑保存导致编码格式改变。

导入到Chaldea

  1. 导入-HTTPS抓包中,点击右上角导入刚才保存的txt文件,将自动解析数据
  2. 所有数据被分为: 素材、从者、灵基保管室中的从者、礼装图鉴,根据自己需求勾选需要导入的部分
  3. 筛选
    • 锁定: 默认仅显示和导入锁定的从者
    • 允许2号机: 同一从者可以存在多张卡,默认只选择主动技能练度最高的一个,存在重复的从者会显示其获取日期作为提示
    • 点击单个从者可单独隐藏该从者,不导入
  4. 点击导入可更新当前账号信息
  5. 点击羁绊详情可查看并排序每个从者的羁绊等级、羁绊累计值、下一级所需羁绊值,方便挖矿

注意: 导入的信息属于抓包那一时刻的数据,并非登陆凭据也无法自动更新,因此下次需要更新数据需要重新抓包

结束及下一次抓包

清理工作:

  • 确保关闭全局代理,关闭WiFi设置中的手动代理。否则关闭Charles后无法联网
  • 删除或关闭证书信任: 如果删除,则下一次抓包前需重新安装证书;也可以保留,如iOS关闭信任设置即可无需删除描述文件

下一次抓包:

  • 打开Potatso/Drony的全局代理,其他设置不变,只需要打开代理软件的开关即可
    • Android: 如果更换了WiFi,则Drony中的设置需要重新设置一遍
  • 检查证书: 如果上次已删除或关闭信任证书,则重新安装或信任证书。
  • 打开Charles和FGO抓包

Xopsed

  • VitualXposed框架+JustTrustMe 绕过证书验证: (第一次接触xposed)个人测试失败了,有经验的欢迎尝试讨论。如果可行的话无需使用修改版客户端。

FAQ

  • 在抓包时FGO可能经常提示连接失败之类的提示,多点几次重试,仍然不行请确保运行WiFi代理与全局代理软件均打开
  • 韩服目前没法子
  • 测试ing,有任何问题(包括文档)及时反馈

解码小工具

对于国服与台服,原始数据经Base64编码+url编码,不可读,APP内可自动转化。若希望查看原始数据,可自行解码或使用本工具解码得到可读性较高的json格式。

操作流程:

  1. 点击加载文件/choose file选择上述保存的fgo.txt,或手动复制内容并粘贴至输入中,点击解码
  2. 此时输入里为原文本,输出里为解码后json文本。
  3. 点击结果另存为保存结果至fgo.json。可自行检查文件内容,其中只包含游戏相关信息,而无账号密码等隐私,可以放心使用。

此外,也可在输入框里自行输入内容测试解码(decode)和编码(encode)

解码: 输入 -> url解码 -> base64解码 -> 输出

编码: 输入 -> base64编码 -> 输出