fiddler 的配置在此不啰嗦了,大家自行搜索其他帖子。
(9月21日)使用fiddler的最简单通关姿势
9.20以后,关卡的卡片数据地址变成了 https://cat-match-static.easygame2021.com/maps/xxxxxxxxxxxxxxxxx.txt
依旧是利用 fiddler 的修改响应的功能,也就是FiddlerScript功能中的onBeforeResponse函数。
此函数可以对响应数据进行修改,思路是,将第二关的卡片的类型全部改为一样的或者改为无图案的空卡。
直接上代码:
if (oSession.uriContains("https://cat-match-static.easygame2021.com/maps/")){ //匹配关卡数据
if (oSession.responseCode == 200) {
var responseJsonString=oSession.GetResponseBodyAsString(); //获取response中的JSON数据,以字符串的形式接收
var responseJSON=Fiddler.WebFormats.JSON.JsonDecode(responseJsonString); //转化为JSON数据
var levelKey = responseJSON.JSONObject["levelKey"]; //获取“levelKey”中的数据
//80001是第一关,很简单,不需要修改。
//如果不是第一关,则进行卡片数据的修改
if(levelKey!="80001"){
//将卡片类型数据改为错误的属性名,这样会导致所有卡片为空白卡
var blankData = responseJsonString.replace("blockTypeData", "xxxblockTypeData");
oSession.utilSetResponseBody(blankData); //替换ResponseBody中的JSON数据
}
}
}
edit response data
代码放到图中位置。点击 Save Script 生效,然后重新打开羊了个羊小程序进行闯关就行。
此时第二关所有卡片变为了空白卡,急速点击完卡片就闯关成功了,闯关成绩会正确提交至服务器。
一、通关姿势(9月16日)
我只说利用 fiddler 的修改响应的功能,也就是FiddlerScript功能中的onBeforeResponse函数。
此函数可以对响应数据进行修改,思路很明确,目的就是要把羊了个羊关卡改为超低难度。
直接上代码:
if (oSession.uriContains("https://cat-match.easygame2021.com/sheep/v1/game/map_info?map_id=")){ //匹配关卡地址
if (oSession.responseCode == 200) {
var responseJsonString=oSession.GetResponseBodyAsString(); //获取response中的JSON数据,以字符串的形式接收
var responseJSON=Fiddler.WebFormats.JSON.JsonDecode(responseJsonString); //转化为JSON数据
var data = responseJSON.JSONObject["data"]; //获取“data”中的数据
if(data.Contains("map_data")){ //如果data中的数据中,包含“map_data”字段
data["map_data"]="{\"widthNum\":8,\"heightNum\":10,\"levelKey\":80001,\"blockTypeData\":{\"1\":1},\"levelData\":{\"1\":[{\"id\":\"1-16-16\",\"type\":0,\"rolNum\":16,\"rowNum\":16,\"layerNum\":1,\"moldType\":1,\"blockNode\":null},{\"id\":\"1-28-16\",\"type\":0,\"rolNum\":28,\"rowNum\":16,\"layerNum\":1,\"moldType\":1,\"blockNode\":null},{\"id\":\"1-40-16\",\"type\":0,\"rolNum\":40,\"rowNum\":16,\"layerNum\":1,\"moldType\":1,\"blockNode\":null}]}}";
}
var myResponseJSON= Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject); //转换回字符串
oSession.utilSetResponseBody(myResponseJSON); //替换ResponseBody中的JSON数据
}
}
代码放到图中位置。点击 Save Script 生效,然后重新打开羊了个羊小程序进行闯关就行。
所有关卡都只有三个草丛卡片。
二、关卡数据分析(9月16日)
关卡代码:
(以下数据为仅三张草丛卡片,并不是原本数据,原本数据量较多较为啰嗦)
{
"err_code": 0,
"err_msg": "",
"data": {
"id": "62ccde7d3dd1931da84a84e2",
"created_at": "2022-07-12T02:37:49.515Z",
"updated_at": "2022-09-14T15:53:23.508Z",
"map_option": 2,
"map_data": "{\"widthNum\":8,\"heightNum\":10,\"levelKey\":80001,\"blockTypeData\":{\"1\":1},\"levelData\":{\"1\":[{\"id\":\"1-16-16\",\"type\":0,\"rolNum\":16,\"rowNum\":16,\"layerNum\":1,\"moldType\":1,\"blockNode\":null},{\"id\":\"1-28-16\",\"type\":0,\"rolNum\":28,\"rowNum\":16,\"layerNum\":1,\"moldType\":1,\"blockNode\":null},{\"id\":\"1-40-16\",\"type\":0,\"rolNum\":40,\"rowNum\":16,\"layerNum\":1,\"moldType\":1,\"blockNode\":null}]}}",
"map_id": 80001
}
}
其中关于卡片的代码为 map_data 的内容,将其去除转义后:
{
"widthNum": 8,
"heightNum": 10,
"levelKey": 80001,
"blockTypeData": {
"1": 1
},
"levelData": {
"1": [{
"id": "1-16-16",
"type": 0,
"rolNum": 16,
"rowNum": 16,
"layerNum": 1,
"moldType": 1,
"blockNode": null
}, {
"id": "1-28-16",
"type": 0,
"rolNum": 28,
"rowNum": 16,
"layerNum": 1,
"moldType": 1,
"blockNode": null
}, {
"id": "1-40-16",
"type": 0,
"rolNum": 40,
"rowNum": 16,
"layerNum": 1,
"moldType": 1,
"blockNode": null
}]
}
}
其他参数不再分析了,有疑问的回复。