短视频最新版通用quic协议解决方案

# 短视频最新版通用quic协议解决方案
由于最新版的两款短视频都使用了quic协议,这就导致爬虫小伙伴在抓包的过程遇到不能抓包的问题,这里提供他们quic协议所有版本的通用解决方案,使他们不使用quic协议,直接通过Charles抓包。
由于不能透露app名字,那就按活跃度说吧。

quic协议是什么

QUIC(Quick UDP Internet Connection)是谷歌制定的一种互联网传输层协议,它基于UDP传输层协议,同时兼具TCP、TLS、HTTP/2等协议的可靠性与安全性,可以有效减少连接与传输延迟,更好地应对当前传输层与应用层的挑战。

最火的短视频app

对于该app禁止quic相关的so加载即可,记得没错的话该so是libsscronet.so,通过ida也可以看到相关函数名。
file
该部分的xposed代码如下(完整代码放在了公众号):

            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                Util.xposedLog("CronetClient disable Cronet");
                param.setResult(null);
            }
        });

这样就可以继续抓包奔放了。

排名第二的短视频app

该app使用quic协议比较早,之前由于不同版本混淆,导致hook代码要更新,后来通过看了一部分Cronet网络库的资料,找到该通用型的解决方案,该app的加载的so是libconnectionbase.so,记得没错的话。
file
该部分的xposed代码如下(完整代码放在了公众号):

    XposedHelpers.findAndHookMethod("com.**.**.**", lpparam.classLoader, "**", String.class, String.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
param.args[0] = "{\"enable_quic\": false, \"preconnect_num_streams\": 2, \"quic_idle_timeout_sec\": 180, \"quic_use_bbr\": true, \"altsvc_broken_time_max\": 600, \"altsvc_broken_time_base\": 60, \"proxy_host_blacklist\": []}";
            }
        });

看雪上的另外一种

使用iptables 禁止掉udp的53端口,因为quic使用的udp发包,53端口又主要用于域名解析,所以禁止掉后,无法正常通讯,就会自动降级到http。

小结

现在的quic协议抓包基本是通过quic无法正常使用,迫使app使用http进行抓包,希望能通过分析cronet相关源码进行突破,直接抓取quic的相关数据包。
完整代码放在了公众号。
file
file

参考文章

https://segmentfault.com/a/1190000039827785

本文系作者 @ 原创发布在 我的编程学习之路。未经许可,禁止转载。

喜欢()
热门搜索
22 文章
0 评论
241 喜欢
Top