03 基础篇-协议头

摘要:本文介绍GET请求与POST请求的协议头

一、GET请求协议头

通过对https://www.discuz.net/member.php?mod=logging&action=login进行抓包,得到以下协议头

 GET https://www.discuz.net/member.php?mod=logging&action=login HTTP/1.1
Host: www.discuz.net
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/78.0.3904.108 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: t7asq_4ad6_saltkey=ij9yIq2l; t7asq_4ad6_lastvisit=1576495060; _ga=GA1.2.1256802490.1576498661; _gid=GA1.2.1480736390.1576498661; t7asq_4ad6_lastact=1576498668%09member.php%09logging

现在我来一 一介绍这些协议头所要表达的含义

  • Connection: keep-alive
    这个是保持连接或者是持久连接。
    当出现Connection: close,表示这是一个一次性连接。
  • Upgrade-Insecure-Requests: 1
    这东西对于我们抓包没啥用,只是申明浏览器支持从 http 请求自动升级为 https 请求,并且在以后发送请求的时候都使用 https
  • User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
    用户代理,用于证明自己是浏览器还是手机访问,这个在post上很重要。
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3
    告诉WEB服务器自己接受什么介质类型,/ 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type。
  • Sec-Fetch-Site: none 与 Sec-Fetch-Mode: navigate
    这是Chrome 意欲在76版本 实现 Fetch Metadata 请求头提案 ,提案的请求头包括请求目标 Sec-Fetch-Dest(类似 Initiator)、请求模式 Sec-Fetch-Mode(跨域规则与浏览上下文)、是否跨域的 Sec-Fetch-Site是否用户触发的 Sec-Fetch-User
  • Accept-Encoding: gzip, deflate, br
    向服务器申明客户端(浏览器)可以接收的编码方法,通常为压缩方法,在post的时候尽量不要提交这个协议头。
  • Accept-Language: zh-CN,zh;q=0.9
    浏览器申明自己接收的语言
  • Cookie
    Cookie本文不说,留到后面单独讲

二、POST请求协议头

很多上面介绍过了,这边介绍上没没有出现的,
以下是抓取到的一个登陆包:

```POST https://www.discuz.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LF1II&inajax=1 HTTP/1.1```
Host: www.discuz.net
Connection: keep-alive
```Content-Length: 226```
```Cache-Control: max-age=0```
```Origin: https://www.discuz.net```
Upgrade-Insecure-Requests: 1
```Content-Type: application/x-www-form-urlencoded```
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: nested-navigate
```Referer: https://www.discuz.net/member.php?mod=logging&action=login```
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: t7asq_4ad6_saltkey=ij9yIq2l; t7asq_4ad6_lastvisit=1576495060; _ga=GA1.2.1256802490.1576498661; _gid=GA1.2.1480736390.1576498661; t7asq_4ad6_sendmail=1; t7asq_4ad6_seccode=3181024.8f03f04ecbe2722ed1; _gat_gtag_UA_150716312_1=1; t7asq_4ad6_lastact=1576566255%09misc.php%09seccode

```formhash=86da67b7&referer=https%3A%2F%2Fwww.discuz.net%2F.%2F&loginfield=username&username=%C3%C6%C9%A7%B5%C4%C7%E0%B4%BA&password=a123456&questionid=0&answer=&seccodehash=cS&seccodemodid=member%3A%3Alogging&seccodeverify=eq3g```

标红的是这次要介绍的,现在介绍第一个的含义

  • Content-Length: 226
    用于描述HTTP消息实体的传输长度,也就是你提交的参数里有多少字节,在自己手动post提交时,别在附加协议头上带上这段,不然容易出错。
  • Cache-Control: max-age=0
    在http中,Cache-Control是控制缓存开关的字段中的一个,常见的有两个值,一个是max-age=0,另一个是no-cache,前者max-age>0 时 直接从游览器缓存中 提取,max-age<=0 时 向server 发送http 请求确认 ,该资源是否有修改,有的话 返回200 ,无的话 返回304.;后者是强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验,严格要求使用最新数据。
  • Referer: https://www.discuz.net/member.php?mod=logging&action=login
    Origin: https://www.discuz.net
    Referer:告知服务器请求的原始资源的URI,其用于所有类型的请求,并且包括:协议+域名+查询参数
    Originr: 用来说明请求从哪里发起的,包括,且仅仅包括协议域名
    PS:Referer在基本在get和post都会有 必须附加上,Originr一般只出现在post时才有,附加时带上不会出错,不带上可能会出错。
  • Content-Type: application/x-www-form-urlencoded
    这是提交的数据类型,有多种类型,这个不用去管它,抓包抓到啥,提交的时候就提交啥。这个也很重要,有些网站往往会检测这个,附加时也附加上。

这里我将post附加的协议头必须要有的给整理一下:

Host: www.discuz.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Origin: https://www.discuz.net
Referer: https://www.discuz.net/member.php?mod=logging&action=login

再次点一下,附加是,不要把Accept-Encoding: gzip, deflate, br附加上


忘记说了,这个是post要提交的参数,这边先不讲,后面讲

formhash=86da67b7&referer=https%3A%2F%2Fwww.discuz.net%2F.%2F&loginfield=username&username=%C3%C6%C9%A7%B5%C4%C7%E0%B4%BA&password=a123456&questionid=0&answer=&seccodehash=cS&seccodemodid=member%3A%3Alogging&seccodeverify=eq3g
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。