• 用Wireshark抓包分析请求


    前言

    有些封装好的API把错误都屏蔽掉,直接返回某一个不明确的具体错误,让人感到困惑。

    //code in SDK read-only
    public static Data requestHandler(result) throws ApiException{
            try{
                resultEntity = JSONObject.parseObject(result);
            }catch (Exception e){
                throw new ApiException(SysEnums.SYS_ERR);
            }
            if(resultEntity == null || resultEntity .get("data") == null){
                throw new ApiException(SysEnums.SYS_ERR);
            }
    }
    public static Data someAPI(methodName,params) ApiException{
        return requestHandler(getURLPATH(methodName),params);
    }
    
    //Implements
    try{
            result = someAPI(apiName,params);
        }catch(ApiException e){
            //You will get no detailed error message but only the error code SysEnums.SYS_ERR
        }

    闲的没事抓个包看看什么原因

    parseObject 如果传递的参数不是JSON字符串,那么很有可能该接口返回了一个XML/HTML

    就要看看这个究竟是什么。

    好处:
    1. 分析是调用方的错误,还是API提供方的错误
    2. 错误具体原因如果是API提供方的,可以把返回信息反馈给API提供方,并且放心地进行重试。
    3. 错误具体原因如果是API调用方的,可以帮助诊断程序错误。

    抓包方法

    下载Wireshark并安装

    如图1-1所示:
    wireshark过滤器
    图 1-1 使用过滤器

    点击过滤器表达式右侧的 + 然后就可以将过滤器表达式保存下来。
    还可以点击左侧 过滤器表达式首选项 可以添加多个过滤器。

    例如可以抓目标主机为 blog.csdn.net

    http.host contains "blog.csdn.net"

    抓到的包如下图1-2所示:
    wireshark抓包分析
    图 1-2 抓包分析

    这样选择任意一个HTTP请求,追踪流->HTTP流,然后就可以看该HTTP请求下的每次TCP的请求过程。可以清楚的看到返回的数据,如图1-3所示。

    追踪HTTP流
    图 1-3 追踪HTTP流

    wireshark实用的过滤器表达式

    #抓HTTP的请求
    tcp.port == 80 || udp.port == 80
    #抓某出站请求路径
    http.host == "domain.com" and http.request.uri contains "/url/path"
    #只抓请求返回
    ip.src_host contains "realdomain.com" and http

    第一个表达式抓到的HTTP请求非常多,没什么用处
    第二个表达式可以抓到本地发送的HTTP请求,并且只关注某个path
    第三个表达式可以抓到某API返回的给本机的信息,并且是HTTP层的

    注: “realdomain.com”是第二个表达式追踪流查到的目标主机真实的域名

    以上。

  • 相关阅读:
    Linux下的目录结构
    VM
    代码命名规范
    java环境及配置
    Code::Blocks 使用Cygwin编译加调试
    vscode使用体会
    openwrt编译笔记
    ubuntu20 使用root登录
    程序员如何更好的表达自己的想法- Graphviz:关系图脚本绘制工具-转
    编译codelite心得
  • 原文地址:https://www.cnblogs.com/slankka/p/9158506.html
Copyright © 2020-2023  润新知