抓包工具wireshark和fiddler

1.wireshark说明

过滤规则说明

过滤地址
ip.addr==192.168.10.10  或  ip.addr eq 192.168.10.10  #过滤地址
ip.src==192.168.10.10     #过滤源地址
ip.dst==192.168.10.10     #过滤目的地址
 
过滤协议,直接输入协议名
icmp 
http
 
过滤协议和端口
tcp.port==80
tcp.srcport==80
tcp.dstport==80
 
过滤http协议的请求方式
http.request.method=="GET"
http.request.method=="POST"
http.request.uri contains admin   #url中包含admin的
http.request.code==404    #http请求状态码的
 
连接符
&&  
||
and
or
 
通过连接符可以把上面的命令连接在一起,比如:
ip.src==192.168.10.10 and http.request.method=="POST"
封包详细信息 (Packet Details Pane)

这个面板是我们最重要的,用来查看协议中的每一个字段。

各行信息分别为:

Frame: 物理层的数据帧概况

Ethernet II: 数据链路层以太网帧头部信息

Internet Protocol Version 4: 互联网层IP包头部信息

Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP

Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

fiddler抓取包

1.设置过滤

勾选左上角的Use Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host

Host 指定显示某个域名下的会话

如果框框为黄色(如图),表示修改未生效,点击红圈里的change not文字即可

2.抓取https

依次点击Tools –> Options –> HTTPS 勾选Decrypt HTTPS Traffic 会提示你安装证书,安装即可

常见的请求

分为请求和响应的两部分,请求是指发送给服务器的内容,响应指服务器返回的内容

请求 包含: 请求的方法(例如:get post)+ url + host+ 协议版本+ 请求头 (例如:User-Agent Accept 等等) + 消息体(get请求是没有消息体的,消息体只有post请求有)

响应包含:协议版本+状态码+响应头+响应内容

get请求如果需要传递参数,它是以url参数的形式传递

例如https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=马保国

url参数是wd=“马保国” 这样的形式传递的。

注意:如果url参数有多个,中间使用&隔开 ,url参数跟在?后面

post 请求一般用于新增内容或者登陆,post请求传递数据是放在消息体中

  • GET 查,一般情况用于打开一个网页,查询使用
  • *注意 get 请求需要参数,需要写在url ?后面,?后面的称之为url参数
GET http://192.168.23.148:8080/WoniuBoss4.0/employee HTTP/1.1
Host: 192.168.23.148:8080
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.51
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.23.148:8080/WoniuBoss4.0/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: rememberMe=oufHy8MNGYGyz9yCIVit6WXFg2T8MbA2oT6c/dnsNSNFnP1dnxrRsoXqUkjLJm5q/HA6neSc2LHC2njglLQcPJ/myQn2fOS5xoGhIhb/uWKMOHIaK+mnHmxKh3U3VpzlxXpGkkuZKksns20DmtZsJed4YmuSVpAksH5TqR07HDv7ruW1fBgd3BGaw3wrXcozG9aOEv8SMr97ybF8OyfwCvKF3Jw/ySZT8w9fBMNkOP4yhGbfwnm6D/YPcxdZeazzZQMPC9zwlaE+BbJr8d1OqzC+DngxU8XZDKzOfa8gZpTOz8CYRN1m75OrvGrGyeVww0JiSj964Iwx2y5Ef0FBlYE9B2Sbu1CcZANUmFZjiQT0ifnF/iavj9VNTU6dZgrtmwl9tpyjnp646tsGrDqH3LCJEgj4KcZ6K4ROQgS0Pu5bWCjABhxeYf3DNkiftEill2O+VSo7m2XjW0PdLuYLv1en6jKZ/M7fFckifzFGcdQ3ZE6JDnCpI+PABg2ajH4Z; JSESSIONID=b619a47f-bc1f-4f48-b366-52274fcb5b9c

请求的方式:get

请求的URL:WoniuBoss4.0/employee

HOST:请求的服务器ip 192.168.23.148:8080

User-Agent:发送请求的设备

Accept:指明了 响应 的消息体的内容格式 text/htm

  • POST 增,我要增加点东西,如向数据库增加记录
POST http://192.168.23.148:8080/WoniuBoss4.0/login/userLogin HTTP/1.1
Host: 192.168.23.148:8080
Connection: keep-alive
Content-Length: 60
Accept: */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.51
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://192.168.23.148:8080
Referer: http://192.168.23.148:8080/WoniuBoss4.0/login/logout
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: _jfinal_captcha=250d8e3081f248c49aedacc7003d6c13

userName=WNCD000&userPass=woniu123&checkcode=0000&remember=Y

post请求的数据都是在消息体中进行传输的Content-Type规定了消息体数据的格式

post 请求的消息体格式常见的有一下几种:

1.application/x-www-form-urlencoded ***

例如:userName=WNCD000&userPass=woniu123&checkcode=0000&remember=Y

2.multipart/form-data

BASHPOST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA

------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"

title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png

PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

3.application/json

这是最常见的json格式如下
Content-Type:application/json 
{“input1”:“xxx”,“input2”:“ooo”,“remember”:false}

4.text/xml

POST http://www.example.com HTTP/1.1 
Content-Type: text/xml

<?xml version="1.0"?>
<methodCall>
    <methodName>examples.getStateName</methodName>
    <params>
        <param>
            <value><i4>41</i4></value>
        </param>
    </params>
</methodCall>