目前产线的H5,插入到不同的APP里;
遇到一个场景,产线有问题,但是自测验证测试环境没问题,想排查下后端问题或者JS是否有异常,需要vconsole或者eruda
理解要纠正:APP对抓包限制,不是限制所有域名,特别是外部的H5链接的域名,他们不会去限制。
他们一般限制的是自己域内的域名,针对其他域名,人家也不会care
这种情况,如何正确使用charles呢?
如果这样设置,只有m-uatcom的域名会被抓包,其他的都放过,也就不存在无法抓包的情况。
Tools -> Rewrite ->Enable Rewrite
点击 Add ,进入一个子窗体 -> Name : 你随便写一个,可以用域名区分
Replace里value的填入(你自己也也可以换成eruda,或者其他版本的vconsole):
这个标签做正则匹配
保存即可,具体参考下图
=====
本质提示就是替换HTML里面的内容,加上 一个远程的文件,其他的场景也可以这么做
我们也可以通过 Tools ==> Map Remote add添加链接替换,直接把产线链接换为测试或者uat链接。Fiddler是一款非常流行并且实用的>1 通过fiddler抓包真机
好处是安卓手机不用root,简单设置代理,并可以在电脑端检测抓包数据。只能抓获wifi,不同抓包3g/2g运营商的数据
2 通过tcpudmp工具抓包
可以检测真机,也可以模拟器。可以wifi,也可以3g/2g
必须root,可以安装在手机内,然后电脑端开启检测或者停止检测,抓到的数据包cab再拷贝到电脑,通过用Wireshark分析数据包。Charles是目前强大、流行的>两种方式,各有优劣且互补,一般第一种即可,对于不走代理的 App 选择第二种方式
第一种 Fiddler:
利用 Fiddler 抓包,适合大多数走代理的应用,优点 (1) 无需 root (2) 对 Android 和 Iphone 同样适用 (3) *** 作更简单方便(第一次安装配置,第二次只需设置代理即可) (4) 数据包的查看更清晰易懂,Fiddler 的 UI 更简单明了 。
Mac 下可以使用 Charles ,破解版的 Licence Key
第二种 Tcpdump:
对于不走代理的 App 可以利用 tcpdump 抓取 andorid 手机上网络数据请求,利用 Wireshark 查看,可见:如何利用Tcpdump抓取andorid网络数据请求,Wireshark查看通过这张图可以看出在未使用VpnService的情况下,App会走系统网络来进行各种网络通信。而在使用VpnService的情况下,IP层网络通信传输的包将经由本地的虚拟通道交由VpnService来处理,这样一来我们便可以捕获这些数据从而达到抓包的目的。
至今还没有完全理解这个API的意义。按照google的文档来说就是:
看起来像是添加一个虚拟IP地址的意思,然而按照教程中的描述则为:
参数变成了子网掩码,但是按照实际的使用来看更偏向于第一种。
添加路由来过滤发送特定IP地址的流量,如果不进行任何过滤则需要设置为0000/0或::/0
添加DNS服务器的地址,如果不添加的话将使用手机默认的DNS服务器。
添加白名单,白名单中的app的流量将不会经过虚拟通道而直接走系统网络。
设置是否为阻塞模式,默认为非阻塞。个人感觉很重要的API,github上的很多项目没有设置为阻塞导致具体实现的时候用的都是线程轮询的方式,这一样一来大大提升了系统的开销。设置为阻塞模式后将大大减少进程上下文的切换。
设置虚拟通道的最大传输字节数,需要根据具体情况具体分析。在抓包的场景下最好尽可能得设置大一些。
简单来说是否允许一些app在使用一些非主流的方式访问网络的情况下不走虚拟通道。个人觉得最好允许。
VpnService启动后创建Builder进行各种初始化,结束后调用establish()获得本地虚拟通道的文件描述符(mFD)。通过输入流读取需要发送IP数据包后解析包的解析(网上有各种第三方的库可供选择)。首先判断是版本是IPV4还是IPV6,之后根据不同的版本来判断使用的是什么协议。
实际抓包的时候可以看到很多协议种类,当然主要的还是UDP与TCP。
可以创建一个稀疏数组,key为源端口,value为Datagram通道,通过Datagram通道向外发送UDP数据,从而减少系统开销。最终通过Datagram通道拿到UDP响应数据后写入mFD的输出流。
TCP的情况比较麻烦,涉及到三次握手以及四次分手,在github上看到个人感觉比较好的做法是,本地建立一个代理服务器来模拟这个过程。这个还需要深入研究。
套接字在发送之前一定要调用protect来防止循环链接,否则发出去的包又回回到mFD的输入流造成死循环。
另外mFD如果不关闭的话是没办法停止VpnService的。
安卓70+>
欢迎分享,转载请注明来源:内存溢出
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)