tshark,收集所有数据包流量后重新创建发布请求

问题描述

我使用tshark捕获了amazon.com和firefox webbrowser之间的互动。
这是我的浏览器发送的帖子请求的描述。我从tshark记录了所有流量,然后打印出了特定的帧号。

POST / HTTP/1.1
Host: ...
User-Agent: Mozilla/5.0 ...
Accept: */*
Accept-Language: en-CA,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Content-Type: application/ocsp-request
Content-Length: 83
Connection: keep-alive

我想知道如何使用命令行重新创建此请求。到目前为止,这是我的尝试:

curl -X POST \
-F "Host=..." \
-F "User-Agent=Mozilla/5.0" \
-F "Accept=*/*" \
-F "Accept-Language=en-CA,en-US" \
-F "Accept-Encoding=gzip,deflate" \
-F "Content-Type=application/ocsp-request" \
-F "Content-Length=83" \
-F "Connection=keep-alive" \
https://www.amazon.com

但是,当我运行该发帖请求时,我返回了一个错误。我认为我必须将发帖请求的格式设置错误

解决方法

虽然可以捕获与tshark / wireshark的交互并从中创建卷曲,但使用浏览器的devtool为您生成卷曲更简单。如果无法使用浏览器重新创建请求,则需要使用@ofirule的link above中的一种工具。

作为一个例子,假设我们要捕获对获取stackoverflow.com的HTML文档的请求。

  1. 要打开devtools,请右键单击浏览器中页面上的任意位置,然后选择“检查”

right-click anywhere

  1. 打开“网络”标签,然后重新加载页面

network tab

  1. 找到感兴趣的请求后,右键单击该请求即可将其复制为卷发

enter image description here

  1. 粘贴卷发。看起来像这样
curl 'https://stackoverflow.com/' \
  -H 'authority: stackoverflow.com' \
  -H 'pragma: no-cache' \
  -H 'cache-control: no-cache' \
  -H 'dnt: 1' \
  -H 'upgrade-insecure-requests: 1' \
  -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/86.0.4240.183 Safari/537.36' \
  -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  -H 'sec-fetch-site: none' \
  -H 'sec-fetch-mode: navigate' \
  -H 'sec-fetch-user: ?1' \
  -H 'sec-fetch-dest: document' \
  -H 'accept-language: en-US,en;q=0.9' \
  -H 'cookie: prov=bbcb7958-a656-3553-ecbc-b9ca84066339; _ga=GA1.2.460830356.1605569295; _gid=GA1.2.1542484921.1605569065; __qca=P0-1761616573-1605569091640; __gads=ID=4135cbf8a377f6b8-2238d1c4efc40140:T=1605562116:S=ALNI_MYMpJxjVdzYlZtHA_3Q99ludQAnMJ; _gat=1' \
  --compressed