抓包android,抓包工具wireshark

如何在 Android 手机上实现抓包

你好,

创新互联公司主营鸡冠网站建设的网络公司,主营网站建设方案,成都APP应用开发,鸡冠h5小程序定制开发搭建,鸡冠网站营销推广欢迎鸡冠等地区企业咨询

先给手机刷root权限,执行命令:

adb root

adb remount

ok后:把tcpdump放到c盘根目录下:C:\

2. 执行命令:

adb push c:/tcpdump /data/local/tcpdump

(这个命令是把tcpdump拷到手机中去 )

3. adb shell chmod 6755 /data/local/tcpdump

是给tcp分配权限

4. adb shell

/data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap

输入 这个命令就等于启动了抓包工具

5. 要停止抓包就Ctrl+C

6. sdcard的capture.pcap复制出来到电脑上用wireshark打开即可

以后每次抓包只要重复第4、5、6步就ok了。

Android 配置Fiddler抓包

将浏览器的代理设置成Fiddler能够实现Fiddler抓取浏览器的请求。同理,Android手机配置Fiddler作为代理服务器,从而让Fiddler能够截获Android的流量来实现抓包。

可以通过ipconfig命令等查看,最简单的就是将鼠标移到Fiddler窗口右上角的online字样上面,会自动提示当前电脑IP地址。

比如,我当前PC IP地址为172.20.224.63

打开Fiddler上Tools--Options,选择Connections选项卡,可以查看到代理端口地址。默认为8888。你可以自行配置成其他端口号。

还有,请勾选“Allow remote computers to connect”(这是允许Android手机通过代理进行网络访问)。

手机连接和PC位于同一局域网的wifi,连接成功后,进入到高级选项中。(不同手机有不同的进入方法,早期手机是长按已经连接上的wifi,现在有些手机直接提供了进入配置的箭头按钮。)

将代理服务器主机名修改为第一步获取的IP地址,端口号为第一步获取的端口号。然后保存。

以上配置OK,打开手机进行网络访问吧,看看Fiddler上有没有HTTP请求包。

实际测试,如果发现没有数据包,你需要检查Fiddler是否打开,是否允许远程电脑访问,以及端口号和IP地址是否配置正确,然后重启试试看(重启Fidder、手机重连Wifi,重新配置等)。

以上配置的仅仅是抓取HTTP请求,对于HTTPS请求,你还是看不到。下面介绍下,HTTPS抓包配置。

HTTPS也是需要通过Fiddler代理来抓取的,所以呢,前面的配置代理的过程不变。下面介绍其他涉及到证书安装方面的。

打开Tools-Options,选择HTTPS选项卡,按照下图进行勾选。

PC上安装好了根证书之后,还需要在手机上安装根证书,才能保证Fiddller能够正确解析出HTTPS包。(原理是,手机通过Fiddler做了代理后,HTTPS请求进行握手时候获取的证书就是Fiddler自己生成的证书,这个证书在手机上默认不受信任,这样会导致手机端认为服务端非法从而断开HTTPS握手,导致请求失败。所以,我们需要让手机信任Fiddler的根证书。)

手机在配置好HTTP代理后,打开浏览器,输入: 。实际上 ipv4.fiddler 会引导到Fiddler所在PC的IP地址上。所以,你输入;pc ip:port也是可以的。(题外话, ipv4.fiddler 这个域名不是外网通用域名,你知道为啥会正确解析不?猜想是Fiddler自己提供了本地DNS解析服务)

OK,以上是所有的配置。

配置成功后,观察Fiddler,手机进行一些操作,看看HTTPS的请求能解析不。如果你遇到下面的异常:

很大可能是由于手机上没有安装Fiddler的根证书。当然,还有例外,如果手机Android系统为7.0以上,即便安装了Fiddler的根证书,也会出现这个异常。原因请参考

android中如何防止被抓包

在建立socket连接之前,OkHttp会获取系统的代理信息,如果设置代理,那么通过DNS解析其IP然后使用代理IP来建立socket连接。如果没有设置代理,那么会使用请求中的url的IP地址,来建立连接。

如果要防抓包,那只需要绕过代理就可以了。

OkHttp使用ProxySelector来获取代理信息,在构造OkHttpClient时是可以设置的,其默认值是ProxySelector.getDefault(),该默认值会反应出系统的代理信息。 那么我们就可以提供自己的ProxySelector实现来达到绕过系统代理的能力。

OkHttpClient client = new OkHttpClient.Builder()

                        .proxySelector(new ProxySelector() {

                            @Override

                            public ListProxy select(URI uri) {

                                return Collections.singletonList(Proxy.NO_PROXY);

                            }

                            @Override

                            public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {

                            }

                        }).build();

varmOkHttpClientBuilder = OkHttpClient.Builder().proxy(Proxy.NO_PROXY)

注释:文章转账来源

参考文章:

反安卓防抓包--no_proxy

反安卓防抓包--no_proxy由于使用了Proxy.No_Proxy导致Fiddler 或 Charles 抓不到包解决方案是使用drony 就行。


文章标题:抓包android,抓包工具wireshark
网址分享:http://scyanting.com/article/hoopho.html