0x00 前言
无聊的游戏,但是我有收集控啊。
0.1 什么游戏
淘宝里面的AR游戏,《捉猫猫》CATCH YOO!
目前在安卓客户端内测,IOS要再等等。入口在淘宝→我的→顶部栏有个猫猫图标。
0x01 一些经验
1.1 关于扔盒子
普通的小猫,只要扔出盒子就行了,但具体的判断应该是,盒子应该打到猫猫,或者盒子向上升起,要可以将屏幕内的猫猫收进去。
具体意思是说,当遇到高星级的怪物时,比如灰烬和撒斯姆,它们左跳右跳跳太快了,如果当它们在屏幕内时扔出盒子,它们就会跳出屏幕,捕捉失败,应该在往左或右跳出屏幕时扔出盒子,刚好可以在它们跳回来时收住。虽然我至今见过3次撒斯姆,一次没抓住……
1.2 关于刷经验
当然是刷1星的啦,有的猫猫90%多的捕捉概率,而且还送一个普通魔盒,而且还有可能送经验药水,简直不能再好。
1.2.1 各等级经验值
1星 20
2星 30
3星 45
4星 45(娜亚)
1.2.2 推荐刷经验的猫猫
2星浅浅,唯一爆高级麻盒的2星猫猫,其他的都是4星才爆。还爆20级时装碎片。
1星花狸,爆中级魔盒,10级碎片。
1星呼噜噜,20级时装碎片。
1.3 关于时装
见表格,当然应该是都有可能爆,只不过列出的猫猫可能概率高一些。
10级时装只有花狸;
20级时装有1星呼噜噜、2星大飞哥、2星浅浅;
30级时装有2星独眼、2星轻音、3星火狼;
40级时装只有3星肥仔。
其中大飞哥和轻音是小boss,所以一般就刷1.2中推荐的3个。
0x02 猫猫的属性表
2.1 抓取猫猫介绍
截图完成之后,我想把猫猫的详细介绍也给抓出来。
2.2 抓包
失败,使用Fiddler2,先设置再打开,就提示SSl错误。
先打开游戏,再打开fiddler抓包,有请求,但是只有定位的请求,没有抓到别的数据。
2.3 OCR
既然有了图,我们应该可以使用OCR将文字识别出来。
使用了汉王,识别。
2.3.1 改文件扩展名
汉王支持jpg格式的图片,但是我的截图却是png的。一开始想下载一个批量命名软件,后来
def action1(self):
file_path=r'C:\Users\Admin\Desktop\ar\jpg'
for root,dirs,files in os.walk(file_path):
print(root)
for file in files:
old_path=root+'\\'+file
new_path=old_path.replace('.png','.jpg')
os.rename(old_path,new_path)
print(new_path)
pass
2.3.2 加深字体颜色
用汉王识别的时候,发现详细介绍的字体颜色偏浅,不能很好的识别,于是用ps进行加深,果然可以正常识别。
在ps中录制动作
注意如果要录制选区命令,要先去掉选中再重新选。
录制完之后,点文件→自动→批处理,成功。
设置前景色(b3b3b3)
→选择色彩范围(选择取样颜色,颜色容差50)
→设置背景色(000000)
→填充(使用背景色)
→填充(使用背景色)
→填充(使用背景色)
→存储
→关闭
然后打开全部文件,每个执行一遍动作,就自动处理、保存、关闭,继续下一个。
2.3.3 识别
在汉王中添加全部文件,点击选择全部文件,开始识别
2.3.4 导入识别结果
识别以后,虽然也可以用汉王的导出功能,但是因为有一些不重要的信息,所以还是自己来。
def action2(self):
folder_path = r'C:\Users\Admin\Desktop\ar\jpg2'
save_file_path = r'C:\Users\Admin\Desktop\ar\识别结果.txt'
for root, dirs, files in os.walk(folder_path):
for file in files:
old_path = root + '\\' + file
extension = os.path.splitext(old_path)[1]
if extension.lower() == '.txt':
self.read_and_write_info(old_path, save_file_path)
print(old_path)
pass
def read_and_write_info(self, file_path, save_file_path):
if file_path:
index = os.path.basename(file_path)[:3]
info = self.read_info_from_file(file_path, index)
file = open(save_file_path, mode='a')
write_info = info + '\n'
file.write(write_info)
print(write_info)
pass
def read_info_from_file(self, file_path, index):
if file_path:
file = open(file_path)
all_text = file.read()
# 第一行,名字
first_line_position = all_text.find('\n')
name = all_text[:first_line_position]
# 盒子名字
box_position = all_text.find('魔盒\n')
box = all_text[box_position - 2:box_position + 2]
# 介绍
start_position = all_text.find('推荐使用\n')
end_position = all_text.find('可能掉落\n')
intro = all_text[start_position + len('推荐使用\n'):end_position]
intro = intro.replace('\n', '').replace(' ', '')
# 掉落
drops = all_text[end_position + len("可能掉落\n"):]
drops = drops.replace('\n', ',').replace(' ', ',').replace(' ',',')
file.close()
return '|%s|星|%s|%s|%s|%s|' % (index, name, box, intro,drops)
return ''
pass