当前位置:首页 » 操作系统 » 仿朋友圈源码

仿朋友圈源码

发布时间: 2025-03-06 15:53:34

❶ 如何完美实现微信自动发朋友圈&自动添加好友&等等

要实现微信自动化,大致有这么几种办法

这些方法各有利弊,综合看来,第一种实现总会有一天微信说要关闭web服务,那岂不是很惨,第二种风险在于被封号,只有第三种目前看来最合适,想要自动发送朋友圈,AccessibilityService是最完美的实现。知其然知其所以然,我们要想用好AccessibilityService,就要明白其原理,这样能更好的理解每一步操作的含义,少走弯路,避免考虑不周导致成功率不足。

在做的过程中,也遇到很多问题,例如经常拿不到
AccessibilityNodeInfo实例,如果拿不到就无法操作当前界面的元素,等于是无法再执行下去了,这里有几个关键点需要注意的,只要注意这几个就可以完美拿到。卖个关子,下面会提到,请往下看。

先大致了解下原理,对你的使用更是事半功倍。
类图源于 here

该类又继承了 IAccessibilityServiceClient.Stub ,并实现了 HandlerCaller.Callback 接口。看到这分析出,这是一个跨进程通信Service,在构造函数中看到 Callbacks 回调接口

看到这里再回头看看onBind函数的具体实现如图

而这个函数又是谁调的呢,这里就到了进程间通信的逻辑,看一下外部逻辑,上面是倒推逻辑,下面正推一下。

AccessibilityService跟一个监控一样,界面的所有的事件都可以收到,那它的源头肯定在View上,肯定在View的事件处理上,跟着这个逻辑去找一下

在performClick函数中发现有一个AccessibilityEvent事件传递,再往里面跟踪发现了这个有用的信息

这里面可以清晰的看到,你收到的AccessibilityEvent事件所有的字段赋值逻辑就在这里。那它是如何发出去交给AccessibilityService呢,肯定是通过AIDL,进一步查找源码

发现在函数中,调用了
getParent().requestSendAccessibilityEvent(this, event),接着看看这个getParent()干了什么,找了一圈找到具体实现在哪,最终在ViewRootImpl中找到这个方法实现

可以看到是mAccessibilityManager.sendAccessibilityEvent 发出了事件,再看下这个函数的实现逻辑

IAccessibilityManager 是个aidl接口,最终通过他发送给了服务

看到这是不是明白了其中的原理。在AccessibilityService你还可以拿到Activity的一些信息,同样的道理,你在源码中肯定能找到那个实现,你可以试着自己去搜一下。

上面卖的关子,现在可以圆满了,在使用中遇到过很多种情况拿不到RootInActiveWindow 也就是AccessibilityNodeInfo(表示窗口内容的节点),当窗口能拿到这个节点时,你才能通过他去findView,所以你知道它的重要性了,但为什么很多时候拿不到呢

如果在TYPE_WINDOWS_CHANGED中就会拿不到

当你不在当前页面(com.tencent.mm.ui.LauncherUI是微信的主页)时同样也有可能获取不到,有可能是在其他页面。

读到这是不是想看如何实现呢,这里直接提供项目源码,并没有写如何使用的教程,推荐给你们几个写的特别详细的教程,希望对你有帮助,使用起来相对很简单的,看完这些文章基本够用
Android自动化模拟操作开源库源码解析
你真的理解AccessibilityService吗
AccessibilityService分析与防御
A complete guide to Accessibility Service Part 1 — Android
A Complete Guide to Accessibility Service Part 2 — Android

本项目源码完善中,功能上会加入

❷ 付费进群源码微信封吗

封。
付费进群属于一种欺诈手段,群聊是根据大众意见所开创的娱乐活动如果有付费进群需要源码的,都属于犯罪,轻者罚款处罚解散群聊,重者将依司法程序进行2到3年有期徒刑。
微信是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,由张小龙所带领的腾讯广州研发中心产品团队打造,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费(需消耗少量网络流量)语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件摇一摇、朋友圈、公众平台、语音记事本等服务插件。

python怎么爬取某个人的微信朋友圈的信息

主要思路
从UI获取文本信息是最为简单的方法,于是应该优先逆向UI代码部分。
逆向微信apk
首先解包微信apk,用dex2jar反编译classes.dex,然后用JD-GUI查看jar源码。当然,能看到的源码都是经过高度混淆的。但是,继承自安卓重要组件(如Activity、Service等)的类名无法被混淆,于是还是能从中看到点东西。
首先定位到微信APP package。我们知道这个是 com.tencent.mm。
在 com.tencent.mm
中,我们找到一个 ui
包,有点意思。
展开 com.tencent.mm.ui
,发现多个未被混淆的类,其中发现 MMBaseActivity直接继承自 Activity
, MMFragmentActivity
继承自 ActionBarActivity
, MMActivity
继承自 MMFragmentActivity
,并且 MMActivity
是微信中大多数Activity的父类:
public class MMFragmentActivity
extends ActionBarActivity
implements SwipeBackLayout.a, b.a {
...
}
public abstract class MMActivity
extends MMFragmentActivity {
...
}
public class MMBaseActivity
extends Activity {
...
}
现在需要找出朋友圈的Activity,为此要用Xposed hook MMActivity。
创建一个Xposed模块
参考 [TUTORIAL]Xposed mole devlopment,创建一个Xposed项目。
简单Xposed模块的基本思想是:hook某个APP中的某个方法,从而达到读写数据的目的。
小编尝试hook com.tencent.mm.ui.MMActivity.setContentView这个方法,并打印出这个Activity下的全部TextView内容。那么首先需要遍历这个Activity下的所有TextView,遍历ViewGroup的方法参考了SO的以下代码:
private void getAllTextViews(final View v) {if (v instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i++) {View child = vg.getChildAt(i);
getAllTextViews(child);
}
} else if (v instanceof TextView ) {
dealWithTextView((TextView)v); //dealWithTextView(TextView tv)方法:打印TextView中的显示文本}
}
Hook MMActivity.setContentView
的关键代码如下:
findAndHookMethod("com.tencent.mm.ui.MMActivity", lpparam.classLoader, "setContentView", View.class, new XC_MethodHook() {...
});
在findAndHookMethod方法中,第一个参数为完整类名,第三个参数为需要hook的方法名,其后若干个参数分别对应该方法的各形参类型。在这里, Activity.setContentView(View view)方法只有一个类型为 View
的形参,因此传入一个 View.class

现在,期望的结果是运行时可以从Log中读取到每个Activity中的所有的TextView的显示内容。
但是,因为View中的数据并不一定在 setContentView()时就加载完毕,因此小编的实验结果是,log中啥都没有。
意外的收获
当切换到朋友圈页面时,Xposed模块报了一个异常,异常源从 com.tencent.mm.plugin.sns.ui.SnsTimeLineUI这个类捕捉到。从类名上看,这个很有可能是朋友圈首页的UI类。展开这个类,发现更多有趣的东西:
这个类下有个子类 a
(被混淆过的类名),该子类下有个名为 gyO的 ListView
类的实例。我们知道, ListView
是显示列表类的UI组件,有可能就是用来展示朋友圈的列表。
顺藤摸瓜
那么,我们先要获得一个 SnsTimeLineUI.a.gyO的实例。但是在这之前,要先获得一个 com.tencent.mm.plugin.sns.ui.SnsTimeLineUI.a的实例。继续搜索,发现 com.tencent.mm.plugin.sns.ui.SnsTimeLineUI有一个名为 gLZ
的 SnsTimeLineUI.a
实例,那么我们先取得这个实例。
经过测试, com.tencent.mm.plugin.sns.ui.SnsTimeLineUI.a(boolean, boolean, String, boolean)这个方法在每次初始化微信界面的时候都会被调用。因此我们将hook这个方法,并从中取得 gLZ。
findAndHookMethod("com.tencent.mm.plugin.sns.ui.SnsTimeLineUI", lpparam.classLoader, "a", boolean.class, boolean.class, String.class, boolean.class, new XC_MethodHook() {@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {XposedBridge.log("Hooked. ");
Object currentObject = param.thisObject;
for (Field field : currentObject.getClass().getDeclaredFields()) { //遍历类成员field.setAccessible(true);
Object value = field.get(currentObject);
if (field.getName().equals("gLZ")) {
XposedBridge.log("Child A found.");
childA = value;
//这里获得了gLZ
...
}
}
}
});
现在取得了 SnsTimeLineUI.a
的一个实例 gLZ
,需要取得这个类下的 ListView
类型的 gyO
属性。
private void dealWithA() throws Throwable{if (childA == null) {
return;
}
for (Field field : childA.getClass().getDeclaredFields()) { //遍历属性field.setAccessible(true);
Object value = field.get(childA);
if (field.getName().equals("gyO")) { //取得了gyOViewGroup vg = (ListView)value;
for (int i = 0; i < vg.getChildCount(); i++) { //遍历这个ListView的每一个子View...
View child = vg.getChildAt(i);
getAllTextViews(child); //这里调用上文的getAllTextViews()方法,每一个子View里的所有TextView的文本...
}
}
}
}
现在已经可以将朋友圈页面中的全部文字信息打印出来了。我们需要根据TextView的子类名判断这些文字是朋友圈内容、好友昵称、点赞或评论等。
private void dealWithTextView(TextView v) {String className = v.getClass().getName();String text = ((TextView)v).getText().toString().trim().replaceAll("\n", " ");if (!v.isShown())
return;
if (text.equals(""))
return;
if (className.equals("com.tencent.mm.plugin.sns.ui.AsyncTextView")) {//好友昵称
...
}
else if (className.equals("com.tencent.mm.plugin.sns.ui.SnsTextView")) {//朋友圈文字内容
...
}
else if (className.equals("com.tencent.mm.plugin.sns.ui.MaskTextView")) {if (!text.contains(":")) {
//点赞
...
} else {
//评论
...
}
}
}
自此,我们已经从微信APP里取得了朋友圈数据。当然,这部分抓取代码需要定时执行。因为从 ListView中抓到的数据只有当前显示在屏幕上的可见部分,为此需要每隔很短一段时间再次执行,让用户在下滑加载的过程中抓取更多数据。
剩下的就是数据分类处理和格式化输出到文件,受本文篇幅所限不再赘述,详细实现可参考作者GitHub上的源码。

❹ 如何实现类似微信朋友圈的点赞和评论功能

我想你是在说微信朋友圈的评论。微信的朋友圈一般来讲,如果是你的好友评论你的照片或者文字,你可以看到,你的好友如果和那个给你评论的好友是好友的话,也能看到。如果没有共同好友,就看不到。假如你回复别人的评论,同理可得,前提是你要点你要回复评论人的名字,然后回复别人,否则没有共同好友的人可以看到你在讲什么,而且看起来会觉得你一个人在莫名其妙自言自语的感觉。如果你不想让某人看到你的照片文字以及照片文字下的评论,可以在设置里面的功能里点朋友圈,然后点朋友圈黑名单,设置黑名单。也可以在那里设置不想看到的人的朋友圈新鲜事。在设置里面有一项{隐私}的选项。点击隐私,然后也可以进入朋友圈权限。这里面还可以设置是否允许陌生人查看十张你的照片。如果你不启用那个功能,陌生人就无法看到你的朋友圈照片。而如果启用那个功能,陌生人只能看到你最近的十张照片(包括文字),但是看不到评论以及点“赞”。也无法评论和点“赞”。(朋友圈发文字只要点击发照片的那个照相机按钮,长按数秒。)

热点内容
lay源码 发布:2025-03-06 20:25:29 浏览:748
专家系统原理与编程 发布:2025-03-06 20:21:05 浏览:638
脚本召唤暴龙 发布:2025-03-06 20:19:29 浏览:78
访问学者邀请函英文 发布:2025-03-06 20:18:06 浏览:378
安卓对方已振铃是什么意思 发布:2025-03-06 20:14:59 浏览:393
迅雷怎么设置存储卡 发布:2025-03-06 20:14:47 浏览:292
怎么查看一个软件编译代码 发布:2025-03-06 20:14:47 浏览:233
php不四舍五入 发布:2025-03-06 20:13:25 浏览:435
韩干源码图 发布:2025-03-06 20:07:01 浏览:277
关闭线程java 发布:2025-03-06 20:01:36 浏览:794