monkeyrunner截图限时免费阅读#1
来源:互联网 发布:linux识别不到hba卡 编辑:程序博客网 时间:2024/04/19 08:12
最近有个读书的app搞限时免费阅读, 有几本书我想看, 但是又没有时间, 以前想过更改系统时间来延长阅读时间, 大概是同样有人这么干, 所以现在的限时阅读都是要联网验证一次才能看, 其实这种东西让懂前端的人写几个js就能把人家一整本书的文字全部抠下来永久免费看.
如果说是Android端, 比较好的思路是反编译代码再移除一些判断逻辑, 不过既然我能想到, 别人估计也防御了. 一个笨方法就是一页一页的截图, 不过我要是有这时间, 早就把书看完了.
刚好最近跑了几次monkey, 于是就想让那些自动化测试的工具帮我干这事.
其实说来也简单, 就是模拟我们的操作, 翻一页, 截图, 再翻一页, 截图.
Android SDK自带一个搞黑盒测试的工具–monkeyrunner, 这个和平时说的monkey不大一样, 那个monkey是做压力测试的, 这个则是功能更强大的工具.
流程如下
比较是为了能区分是否到最后一页了, 等待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:多线程保存
- monkeyrunner截图限时免费阅读#1
- monkeyrunner截图限时免费阅读#2:多线程保存
- monkeyrunner之截图和截图对比方法
- 限时免费不可不知的秘密
- 限时免费不可不知的秘密
- 博学谷资料限时免费领取
- MonkeyRunner之手机屏幕截图的比对
- 美国推出可不限时免费拨打本地的电话
- 2012年第19周限时免费应用点评
- 2012年第19周限时免费游戏点评
- 2012年第21周限时免费游戏应用点评
- 2012年第22周限时免费游戏应用点评
- 2012年第23周限时免费游戏应用点评
- 2012年第24周限时免费游戏应用点评
- 【8月限时免费】5000句微博句法树库
- 【10月限时免费】中文事件标注数据
- 【11月限时免费】2000张人脸关键点数据
- 【12月限时免费】上海方言手机语音数据库
- 简单的几个OC知识点
- Chromium多线程模型设计和实现分析
- 报时助手
- Remove Specified Characters
- 工厂设计模式
- monkeyrunner截图限时免费阅读#1
- [NOI2014]魔法森林(动态加边+SPFA)
- 排序
- 解决Get和Post请求中中文乱码问题 (2013-01-26 23:59:39)转载▼ 标签: javaee it分类: JavaEE 对于Post请求,只需在Servlet或者jsp中写入如下
- android studio的安装和配置全过程
- 深入理解Android异步线程
- Linux下Git和GitHub使用方法总结
- 计蒜之道 测试赛 (BCD)
- SCU 4438 Censor KMP/哈希