monkeyrunner截图限时免费阅读#1

来源:互联网 发布:linux识别不到hba卡 编辑:程序博客网 时间:2024/04/19 08:12

最近有个读书的app搞限时免费阅读, 有几本书我想看, 但是又没有时间, 以前想过更改系统时间来延长阅读时间, 大概是同样有人这么干, 所以现在的限时阅读都是要联网验证一次才能看, 其实这种东西让懂前端的人写几个js就能把人家一整本书的文字全部抠下来永久免费看.

如果说是Android端, 比较好的思路是反编译代码再移除一些判断逻辑, 不过既然我能想到, 别人估计也防御了. 一个笨方法就是一页一页的截图, 不过我要是有这时间, 早就把书看完了.

刚好最近跑了几次monkey, 于是就想让那些自动化测试的工具帮我干这事.

其实说来也简单, 就是模拟我们的操作, 翻一页, 截图, 再翻一页, 截图.

Android SDK自带一个搞黑盒测试的工具–monkeyrunner, 这个和平时说的monkey不大一样, 那个monkey是做压力测试的, 这个则是功能更强大的工具.

流程如下

Created with Raphaël 2.1.0Start截A图翻页等待1秒截B图图A和图B是否相同End保存A图将图B赋给A图yesno

比较是为了能区分是否到最后一页了, 等待1秒是为了让app能翻到下一页, 不至于截图的时候还是截的上一页的图.

代码如下:

#Mac OS X, freeder.pyfrom com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImageimport sys, os, timeif (__name__ == '__main__'):    PNG = "png"    PF_PNG = ".png"    PN_WIDTH = "display.width"    PN_HEIGHT = "display.height"    DOWN_AND_UP = "down_and_up"    TARGET_PATH = os.getcwd() + '/freeder' + str(int(round(time.time()*1000))) + '/'    os.mkdir(TARGET_PATH)    print 'create dir: ' + TARGET_PATH    device = MonkeyRunner.waitForConnection()    print 'device connected'    touch_x = int(device.getProperty(PN_WIDTH)) - 10    touch_y = int(device.getProperty(PN_HEIGHT)) / 2    page = 1    if (len(sys.argv) == 2):        page = int(sys.argv[1])    old_img = device.takeSnapshot()    while (True):        device.touch(touch_x, touch_y, DOWN_AND_UP)        time.sleep(1)        new_img = device.takeSnapshot()        if (new_img.sameAs(old_img)):            print 'snapshot is same, exit'            break        else:            old_img.writeToFile(TARGET_PATH + str(page) + PF_PNG, PNG)            print 'write image to file, nameing ' + str(page) + '.png'            old_img = new_img            page += 1    print 'done exit'

将手机连上电脑, 开USB调试, 打开读书app, 打开那本书, 终端执行

$ monkeyrunner freeder.py 1

就会开始截图, 文件名从1开始(Windows用户务必将脚本的路径写全, 且生成的图片文件夹在sdk的tools目录下)

这个东西运行起来其实挺费时间的, 我能想到, 大家早就想到了, 所以根本没有藏着掖着的必要, 写个博客给愿意折腾的人去截书玩. 其实看得懂那段代码的人, 能力都不在我之下, 只会比我做的更好, 分享一下纯属兴趣.

不过总有一天, 我们会懒得折腾, 觉得花钱解决问题是最简单的方式.

后续优化monkeyrunner截图限时免费阅读#2:多线程保存

0 0