如何查看整个原始 http 请求?
Posted
技术标签:
【中文标题】如何查看整个原始 http 请求?【英文标题】:How to view the whole raw http request? 【发布时间】:2014-10-07 02:26:13 【问题描述】:如何发送表单的 HTTP 请求?事情是这样的,我可以从“http://www.educationboardresults.gov.bd/lite/index.php”查看结果。
但我想知道浏览器以哪种格式发送请求,以便自动处理。我看到了这个问题“View HTTP headers in Google Chrome?”
但是在 chrome 中查看页面时,我只能看到标题,并没有说明表单的元素是如何提交的。
基本上我想编写一个程序,对于给定的一组卷号,例如 100000-110000,我会收集结果,并按照我的意愿操纵结果。为此,我需要知道浏览器发送信息请求的格式,即原始 http 请求。这样我也可以在 C 中发送它。
我知道一些 C 中的套接字编程。所以我将能够自己编写代码。我只需要知道我必须以哪种格式装饰要发送到服务器的字符串! POST "something something" ,这里会是什么而不是什么?
【问题讨论】:
如果你的环境是 Linux,你可以使用 ngrep 命令。在终端“sudo ngrep host www.educationboardresults.gov.bd -d any”中发出以下命令,然后提交请求 我看到的是POST请求。 在 Chrome 中 CTRL + SHIFT + C 启动 Chrome 控制台。从那里选择网络选项卡;在那里您可以看到 POST 请求详细信息和表单数据。 在 Chrome 中,开发者工具->网络->标题选项卡有一个“表单数据”部分,您可以在其中看到三种格式的表单数据:源、解析和 url 编码。 安装mitmproxy mitmproxy.org 【参考方案1】:在 Chrome DevTools 的 Network 部分下,右键单击您感兴趣的行并选择从上下文菜单中选择合适的副本:
剪贴板内容示例如下所示:
复制为 cURL
curl 'https://***.com/posts/25291052/editor-heartbeat/answer' \
-H 'authority: ***.com' \
-H 'pragma: no-cache' \
-H 'cache-control: no-cache' \
-H 'sec-ch-ua: "Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"' \
-H 'accept: application/json, text/javascript, */*; q=0.01' \
-H 'x-requested-with: XMLHttpRequest' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/89.0.4389.114 Safari/537.36' \
-H 'content-type: application/x-www-form-urlencoded; charset=UTF-8' \
-H 'origin: https://***.com' \
-H 'sec-fetch-site: same-origin' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-dest: empty' \
-H 'referer: https://***.com/questions/25291052/how-to-view-the-whole-raw-http-request' \
-H 'accept-language: en,pl;q=0.9,es;q=0.8' \
-H 'cookie: prov=8a6c8983-02cd-669c-367d-61ff657f111e; _ga=GA1.2.1494864357.1594965293; __qca=P0-618917173-1594965293194; __gads=ID=86eda01ab828f223:T=1594965534:R:S=ALNI_MZ6mV2_oJewkg2Z7wubZCCK_dFI0Q; gadsTest=test; sgt=id=9653ade3-9325-4178-a074-d2ff62012690; _gid=GA1.2.480664929.1621240994; acct=t=PYE1PDFUezJZN%2b7eJHz4uQtgdkSgmrsw&s=NfLIf8YH%2f3FPmxGoaPDa2w5sB%2bzihVsv' \
--data-raw 'fkey=39c9ef4d76e1af44087482fe5f9802ac518ce9725a5323015874a7e69a493dea&clientCount=4' \
--compressed
复制为抓取
fetch("https://***.com/posts/25291052/editor-heartbeat/answer",
"headers":
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-language": "en,pl;q=0.9,es;q=0.8",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"pragma": "no-cache",
"sec-ch-ua": "\"Google Chrome\";v=\"89\", \"Chromium\";v=\"89\", \";Not A Brand\";v=\"99\"",
"sec-ch-ua-mobile": "?0",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-requested-with": "XMLHttpRequest"
,
"referrer": "https://***.com/questions/25291052/how-to-view-the-whole-raw-http-request",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": "fkey=39c9ef4d76e1af44087482fe5f9802ac518ce9725a5323015874a7e69a493dea&clientCount=4",
"method": "POST",
"mode": "cors",
"credentials": "include"
);
我们还可以选择使用“全部复制为...”之一来检索特定的响应或列表中的所有请求 选项。
亲自尝试并选择最适合您的选项。
This 网站启发了我的回答。
【讨论】:
【参考方案2】:如果无法在 chrome 中查看这些本地信息,您总是可以退回使用 Web 调试代理(例如 fiddler)或 Web 渗透测试代理(例如 owasp ZAP)。
那么发送或接收的信息就不能被隐藏了。您可以以原始格式查看所有内容。对于 ZAP,您还可以将所有通信以原始格式记录为文本文件,并且您可以拦截请求和响应以进行调试。
【讨论】:
以上是关于如何查看整个原始 http 请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何查看 Postman 在发出 OAuth 请求时使用的原始签名?