美文网首页Python小哥哥
爬虫界的一股清流——用安卓做一个朋友圈屏蔽检测器

爬虫界的一股清流——用安卓做一个朋友圈屏蔽检测器

作者: 我爱学python | 来源:发表于2019-04-14 16:22 被阅读37次

    前言

    前段时间,新版微信加入了一个朋友圈只给看三天的新功能。于是就有了一个经典梗:朋友圈陌生人可以看十张照片,熟人只能看三天,只能友尽了!

    有了上面的段子之后,本人忽然意识到一个问题,那就是现在微信好友越来有越多,有的可能都只是为了加一下转个账什么的,连名字都不知道。这么多好友,有许多可能是半生不熟的人,本人是没闲工夫去一个一个屏蔽朋友圈的,但是这并不能确保别人不屏蔽自己吧。现如今,屏蔽朋友圈,朋友都没得做。

    环境

    Java

    IDE:Android Studio

    效果

    别人屏蔽怎么办?作为一个理工男,本人的方法很简单,写一个app,把他们揪出来,让尴尬来得更猛烈些吧!屏蔽朋友圈还不想被发现?不存在的!于是本人就花了一天的时间把这个app(命名为朋友圈屏蔽检测器)初步搞出来了。不多BB,直接看看本人用测试号测试出来的结果吧,原理后面再讲:

    嗯还好这是个测试号,要是自己的微信看到这结果,内心也是崩溃的。为了方便,我把疑似屏蔽(可看朋友圈少于2条)的和那些设置了查看天数且没怎么发朋友圈的给揪出来了,当然这个结果还是自己人工验证一波比较好!

    技术原理

    如果对实现具体不感兴趣的同学可以跳过这个part,直接跳到最后获取app下载方式顺便点个赞即可。下面开始相关技术的说明,因为篇幅的关系,不会讲全部的代码,只说明原理和讲解重要部分:

    AccessibilityService

    这个服务是这个app最重要的内容啦,一般在手机的辅助功能(或无障碍)中的服务可找到,它的作用是检测用户的操作和检索窗口的内容。

    看到它的作用,是不是有点似曾相识?没错,它其实就像是一个手机的爬虫,可以提取页面的元素,可以操作跳转等等。这个时候有同学可能会担心APP会不会偷偷上传自己的数据,这个本人可以保证,这个APP根本没有申请联网权限,所以不会上传数据,而且已经开源,欢迎大家监督。

    我们说到AccessibilityService可以检测操作,于是就有了下面这个函数,检测的是我们打开微信的操作。因为服务是一直在后台开着的,所以当我们打开服务后,再打开微信,就会自动检测并跳入到if中,这样就能开始我们的朋友圈屏蔽检测啦!至于那个className是怎么找的,大概就是在调试的时候不断的输出className,然后你自己试着打开微信,就自然输出了if条件语句中的内容:

    进入微信之后,我们就要在微信里面进行浏览和点击操作啦,爬虫部分真正开始。这里以检测某个id的视图并点击它为例写一个函数,先上代码再讲解:

    这个函数也不复杂,传入一个页面根节点rootNodeInfo和一个需要查找和点击的节点id,其实页面的组织形式很像浏览器的DOM树,所以可以一级一级查找,当根节点不空且能调用系统函数找到一个View列表时,我们就直接取列表中的第一个View元素,然后调用系统函数点击它。是不是很简单?听不懂?翻译成网页爬虫,首先我们获得一个页面的根节点,然后我们通过beautifulsoup去提取一个符合条件的html元素列表(相当于安卓的NodeId),然后,选出列表中第一个元素,跳转(相当于urlopen),整个操作结束。

    这不就是爬虫吗!!

    函数调用也很简单,调用一个系统函数获得当前页面根节点,然后根据需要点按的id传进去给函数:

    AccessibilityNodeInfo rootNodeInfo = getRootInActiveWindow();

    clickNodeByID(rootNodeInfo,"com.tencent.mm:id/h3");

    看到代码,大家会问,这个id怎么获得的,这个又是一个复杂的工程[哭]. 需要把手机连接到电脑上,然后打开Android Studio中的Dump View Hierarchy for UI Automator,然后点击相应控件就能看到id了

    爬取流程

    好了,上面我们介绍过了怎么像爬虫一般地在安卓手机上获取页面元素,检索元素并模拟点击,接下来,我们只要依样画葫芦,把整个爬取流程设计好,不就很容易了嘛:

    尾巴

    至此,这个App大致的原理已经讲解完毕了,验明正身,基本就是个爬虫!

    效果嘛,最上面展示啦,这个App还算是功能比较完整哒

    相关文章

      网友评论

        本文标题:爬虫界的一股清流——用安卓做一个朋友圈屏蔽检测器

        本文链接:https://www.haomeiwen.com/subject/felswqtx.html