溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

發(fā)布時(shí)間:2021-12-27 17:29:29 來(lái)源:億速云 閱讀:157 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

這幾天小編在工作中遇到了一個(gè)靈異事件,客戶(hù)端使用的是安卓原生系統(tǒng),服務(wù)端使用的是java。需求就是客戶(hù)端在照相的時(shí)候可以實(shí)時(shí)上傳照片。后臺(tái)接收并保存,并且可以在平臺(tái)上顯示??此坪?jiǎn)單的功能,確有個(gè)很大的坑。有2個(gè)平臺(tái),192.168.31.87平臺(tái)是測(cè)試環(huán)境,192.168.31.239是演示環(huán)境,測(cè)試環(huán)境,演示環(huán)境,還有安卓客戶(hù)端代碼都是一樣的,連mq,redis,nginx,數(shù)據(jù)庫(kù)都是一樣的。但是安卓端上傳測(cè)試環(huán)境一直報(bào)java.net.SocketException,在演示環(huán)境上是正常的。檢查服務(wù)端代碼。我首先用了postman進(jìn)行測(cè)試.

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

由于已經(jīng)上傳過(guò)一張一樣的照片,所以這里返回failed,但是請(qǐng)求是200.說(shuō)明是調(diào)用正常。然后我在微服務(wù)上寫(xiě)了個(gè)測(cè)試類(lèi),用httpclient調(diào)用結(jié)果也是正常。

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png


在安卓客戶(hù)端上傳的時(shí)候,正常和不正常的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}}

安卓客戶(hù)端部分代碼

/**
     * 同步基于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());        //第一個(gè)參數(shù)要與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);

    }

服務(wù)端

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

然后客戶(hù)端調(diào)用服務(wù)端連這個(gè)接口都沒(méi)進(jìn)來(lái),首先我判斷配置文件是否有對(duì)文件大小進(jìn)行過(guò)濾,然后看了filter也沒(méi)什么。百思不得奇解。于是做了很多操作。雖然最后問(wèn)題還是沒(méi)=解決,但是到get到了很多新技能。
非常重要的一個(gè)技能:抓包。
···
大致步驟為:
1.首先在linux服務(wù)器上執(zhí)行指令
2.調(diào)用接口,然后執(zhí)行指令把linux文件下載到本地
3.使用Wireshark查看日志
需要使用的linux命令
netstat -tupln | grep 5088
tcpdump -i any -p -s 0 -w /tmp/cap.pcap
sz /tmp/cap.pcap
···

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

然后到開(kāi)始菜單換中打開(kāi)

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

Wireshark這軟件,小伙伴百度下載即可
地址欄中可以輸入過(guò)濾條件:
ip.addr == 192.168.31.182 and http

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

選中其中你想看的包,右鍵追溯流--->TCP流或者h(yuǎn)ttp流

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

這里大致解釋一下:
Content-Type:是上傳文件格式multipart/form-data是指圖片。
boundary=XXXX,這是前端傳的時(shí)候使用的一種形式addBoundary
Content-Length是內(nèi)容大小
Host:是服務(wù)器主機(jī)地址
Connection是鏈接狀態(tài)
Accept-Encoding是接收的編碼格式
User-Agent:是用戶(hù)上傳的形式,這里安卓使用的是okhttp/3.6.0
content-Desposition是上下文的描述
content-Type:內(nèi)容類(lèi)型
很開(kāi)心,又get到了一個(gè)新技能,但是我的問(wèn)題還是沒(méi)有解決。目前的解決辦法就是自己在寫(xiě)個(gè)安卓端,單獨(dú)用做個(gè)按鈕,然后用okhttp上傳文件到平臺(tái)。
另外在操作安卓的時(shí)候遇到了adb.exe已停止工作,然后開(kāi)啟不了虛擬機(jī)的問(wèn)題。

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

出錯(cuò)畫(huà)面:

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

一般出現(xiàn)這個(gè)錯(cuò)誤的原因都是由于adb的默認(rèn)端都5037,被其他程序占用了。小編我就碰到過(guò)被酷我音樂(lè),魯大師和被360mobile的exe程式占用了,后來(lái)這些程式全部被我刪了!
  首先我們應(yīng)該在電腦中查看5037的端口情況,輸入 netstat -aon|findstr "5037":
  

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

我們可以看到PID為4476的程式使用了關(guān)端口,然我我們打開(kāi)任務(wù)管理器。

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

我們可以看到進(jìn)程為“360MobileLoader.exe *32”的進(jìn)程占用了5037端口。理論上來(lái)說(shuō)我們結(jié)束這個(gè)進(jìn)程應(yīng)該就行了。但是問(wèn)題來(lái)了!

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

居然不讓我刪除!?。。。。。?!PS:我自己的電腦,刪不刪除還需要你的同意?

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

選擇打“”開(kāi)文件位置“”,找到對(duì)應(yīng)的exe程式,我這兒使用的是360強(qiáng)制刪除,PS:普通刪除的方同樣不允許我刪除。
  我刪除了之后,電腦重新注銷(xiāo)了一下,adb.exe正常啟動(dòng)起來(lái)了。

Genymotion又開(kāi)啟了。小姐姐又回來(lái)了哈哈。

大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析

image.png

在附送一個(gè)知識(shí):無(wú)界鼠標(biāo).就是一個(gè)鼠標(biāo)鍵盤(pán)控制N臺(tái)電腦(可以是不同操作系統(tǒng))

關(guān)于大數(shù)據(jù)開(kāi)發(fā)過(guò)程中如何快速抓包并解析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI