您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

开发过程中快速抓包并解析

时间:2019-08-08 10:53:36  来源:  作者:

这几天小编在工作中遇到了一个灵异事件,客户端使用的是Android/ target=_blank class=infotextkey>安卓原生系统,服务端使用的是JAVA。需求就是客户端在照相的时候可以实时上传照片。后台接收并保存,并且可以在平台上显示。看似简单的功能,确有个很大的坑。有2个平台,192.168.31.87平台是测试环境,192.168.31.239是演示环境,测试环境,演示环境,还有安卓客户端代码都是一样的,连mq,redisNginx,数据库都是一样的。但是安卓端上传测试环境一直报java.net.SocketException,在演示环境上是正常的。检查服务端代码。我首先用了postman进行测试.

开发过程中快速抓包并解析

 

由于已经上传过一张一样的照片,所以这里返回failed,但是请求是200.说明是调用正常。然后我在微服务上写了个测试类,用httpclient调用结果也是正常。

开发过程中快速抓包并解析

 

在安卓客户端上传的时候,正常和不正常的log分别是

正常:
response-->Response{protocol=http/1.1, code=200, message=OK, url=http://192.168.31.239:8081/api/collDataUpload?para={%22fileName%22:%2220180822_185110_523.jpg%22,%22pno%22:%2220180821%22,%22dkey%22:%2215948c07-c718-4f32-a0af-4b7841fa95a0%22,%22stime%22:%221534935070523%22,%22etime%22:%221534935071000%22}}不正常:
response-->Response{protocol=http/1.1, code=400, message=, url=http://192.168.31.87:8081/api/collDataUpload?para={%22fileName%22:%2220180822_184559_902.jpg%22,%22pno%22:%228230%22,%22dkey%22:%22d351aa68-bace-438f-8d08-89ff598d4e04%22,%22stime%22:%221534934759902%22,%22etime%22:%221534934760000%22}}

安卓客户端部分代码

/**
 * 同步基于post的图片上传
 *
 * @param url
 * @param file
 * @return
 */
 public Response uploadPic(String url, File file, String fileName) throws IOException {
 MultipartBody.Builder builder = new MultipartBody.Builder();
 builder.setType(MultipartBody.FORM);
 Log.i("huang", "files[0].getName()==" + files[0].getName()); //第一个参数要与Servlet中的一致
 builder.addFormDataPart("file", fileName, RequestBody.create(MediaType.parse(guessMimeType(fileName)),
 file));
 MultipartBody multipartBody = builder.build();
 Request request = new Request.Builder().url(url).post(new ProgressRequestBody(multipartBody, listener)).build();
 okHttpClient.newCall(request).enqueue(callback);
 }

服务端

开发过程中快速抓包并解析

 

然后客户端调用服务端连这个接口都没进来,首先我判断配置文件是否有对文件大小进行过滤,然后看了filter也没什么。百思不得奇解。于是做了很多操作。虽然最后问题还是没=解决,但是到get到了很多新技能。

非常重要的一个技能:抓包。

···

大致步骤为:

1.首先在linux服务器上执行指令

2.调用接口,然后执行指令把linux文件下载到本地

3.使用Wireshark查看日志

需要使用的linux命令

netstat -tupln | grep 5088

tcpdump -i any -p -s 0 -w /tmp/cap.pcap

sz /tmp/cap.pcap

···

开发过程中快速抓包并解析

 

开发过程中快速抓包并解析

 

开发过程中快速抓包并解析

然后到开始菜单换中打开

开发过程中快速抓包并解析

Wireshark这软件,小伙伴百度下载即可

地址栏中可以输入过滤条件:

ip.addr == 192.168.31.182 and http

开发过程中快速抓包并解析

 

选中其中你想看的包,右键追溯流--->TCP流或者http流

开发过程中快速抓包并解析

这里大致解释一下:

Content-Type:是上传文件格式multipart/form-data是指图片。

boundary=XXXX,这是前端传的时候使用的一种形式addBoundary

Content-Length是内容大小

Host:是服务器主机地址

Connection是链接状态

Accept-Encoding是接收的编码格式

User-Agent:是用户上传的形式,这里安卓使用的是okhttp/3.6.0

content-Desposition是上下文的描述

content-Type:内容类型

很开心,又get到了一个新技能,但是我的问题还是没有解决。目前的解决办法就是自己在写个安卓端,单独用做个按钮,然后用okhttp上传文件到平台。

另外在操作安卓的时候遇到了adb.exe已停止工作,然后开启不了虚拟机的问题。

开发过程中快速抓包并解析

出错画面:

开发过程中快速抓包并解析

一般出现这个错误的原因都是由于adb的默认端都5037,被其他程序占用了。小编我就碰到过被酷我音乐,鲁大师和被360mobile的exe程式占用了,后来这些程式全部被我删了!

首先我们应该在电脑中查看5037的端口情况,输入 netstat -aon|findstr "5037":

开发过程中快速抓包并解析

我们可以看到PID为4476的程式使用了关端口,然我我们打开任务管理器。

开发过程中快速抓包并解析

我们可以看到进程为“360MobileLoader.exe *32”的进程占用了5037端口。理论上来说我们结束这个进程应该就行了。但是问题来了!

开发过程中快速抓包并解析

开发过程中快速抓包并解析

居然不让我删除!!!!!!!!PS:我自己的电脑,删不删除还需要你的同意?

开发过程中快速抓包并解析

选择打“”开文件位置“”,找到对应的exe程式,我这儿使用的是360强制删除,PS:普通删除的方同样不允许我删除。

我删除了之后,电脑重新注销了一下,adb.exe正常启动起来了。

Genymotion又开启了。小姐姐又回来了哈哈。

开发过程中快速抓包并解析

觉得还不错的话,记得关注小编哟~!



Tags:抓包   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
由于https 使用了 TLS/SSL 加密条件,我们无法直接在wireshark的中读取到数据内容,我们先看一下正常的http包的内容。可以直接读取到http的header 和body。 但如果是https 则不...【详细内容】
2021-12-01  Tags: 抓包  点击:(31)  评论:(0)  加入收藏
当我们通过kubectl来查看、修改Kubernetes资源时,有没有想过后面的接口到底是怎样的?有没有办法探查这些交互数据呢?Kuberenetes客户端和服务端交互的接口,是基于http协议的。所...【详细内容】
2021-11-23  Tags: 抓包  点击:(29)  评论:(0)  加入收藏
一、准备环境Burpsuite、夜神模拟器二、步骤运行burpsuite,打开代理后,访问 http://burp/ 下载CA证书点击右上角位置下载CA证书将下载的CA证书导入到浏览器中,打开浏览器选择设...【详细内容】
2021-10-08  Tags: 抓包  点击:(67)  评论:(0)  加入收藏
01概述无论是开发还是测试,在工作中经常会遇到需要抓包的时候。本篇文章主要介绍如何在各个平台下,高效的抓包。目前的抓包软件总体可以分为两类: 一种是设置代理抓取http包,比...【详细内容】
2021-09-28  Tags: 抓包  点击:(103)  评论:(0)  加入收藏
Fiddler 简介Fiddler 是位于客户端和服务器端的 HTTP 代理 目前最常用的 http 抓包工具之一 功能非常强大,是 Web 调试的利器关注+转发+私信【软件测试】领取Fiddler安装包和...【详细内容】
2021-09-28  Tags: 抓包  点击:(63)  评论:(0)  加入收藏
前言Charles 是移动端和PC端常用的网络抓包工具,测试人员和开发人员能够查看客服端和服务器之间的所有HTTP/ HTTPS/SSL网络请求,从而实现对网络抓包的截取和分析。 01下载官网...【详细内容】
2021-07-13  Tags: 抓包  点击:(73)  评论:(0)  加入收藏
在使用gRpc的过程中,有一个想法:gRpc客户端、服务端是怎么交互的呢?从这个想法萌生出一个验证方法,通过抓包来分析其交互过程与底层数据,一起来看看吧。1. gRpc是什么gRpc是什么?g...【详细内容】
2021-07-12  Tags: 抓包  点击:(136)  评论:(0)  加入收藏
发送请求在fiddler中也支持发送HTTP请求。就是通过Composer这个功能来进行发送请求功能入口 功能介绍 Parsed:解析后的报文.它是已经格式化后的,在这里你只需要按照区域展示...【详细内容】
2021-06-10  Tags: 抓包  点击:(156)  评论:(0)  加入收藏
分享大纲:1.测试概述 2.HTTP讲解 3.Fiddler抓包工具使用 4.Jmeter使用响应断言 HTTP基础HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广...【详细内容】
2021-06-04  Tags: 抓包  点击:(109)  评论:(0)  加入收藏
故事不长,始于脸红,终于眼红,爱而不得,皆是遗憾。。。 ---- 网易云热评 一、用户设置 1、选项卡字体及风格设置User options--》Display 2、设置数据包的字体及风格样式 3、设...【详细内容】
2021-06-04  Tags: 抓包  点击:(387)  评论:(0)  加入收藏
▌简易百科推荐
面向对象的特征之一封装 面向对象的特征之二继承 方法重写(override/overWrite) 方法的重载(overload)和重写(override)的区别: 面向对象特征之三:多态 Instanceof关键字...【详细内容】
2021-12-28  顶顶架构师    Tags:面向对象   点击:(2)  评论:(0)  加入收藏
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(12)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(13)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(11)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(11)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(17)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(19)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(22)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条