修改http请求中的header:要修改的主要字段

user-agent:

通常格式:

Mozilla/5.0 (平台) 引擎版本 浏览器版本号

第一部分:Mozilla/5.0

由于历史上的浏览器大战,当时想获得图文并茂的网页,就必须宣称自己是 Mozilla 浏览器。此事导致如今User-Agent里通常都带有Mozilla字样,出于对历史的尊重,大家都会默认填写该部分。

第二部分:平台这部分可由多个字符串组成,用英文半角分号分开

Windows NT 10.0是指我使用的操作系统的版本,比如我使用的win10对应的就是Windows NT 10.0,如果我使用win7对应的就是Windows NT 6.1。
Win64; x64是指我的操作系统是64位的

Windows系统下:

Windows NT 5.0 // 如 Windows 2000 
Windows NT 5.1 // 如 Windows XP
Windows NT 6.0 // 如 Windows Vista 
Windows NT 6.1 // 如 Windows 7
Windows NT 6.2 // 如 Windows 8
Windows NT 6.3 // 如 Windows 8.1
Windows NT 10.0 // 如 Windows 10
Win64; x64 // Win64 on x64
WOW64 // Win32 on x64

Linux系统下:

X11; Linux i686; // Linux 桌面,i686 版本
X11; Linux x86_64; // Linux 桌面,x86_64 版本
X11; Linux i686 on x86_64 // Linux 桌面,运行在 x86_64 的 i686 版本

macOS系统下:

Macintosh; Intel Mac OS X 10_9_0 // Intel x86 或者 x86_64
Macintosh; PPC Mac OS X 10_9_0 // PowerPC
Macintosh; Intel Mac OS X 10.12; // 不用下划线,用点

第三部分:引擎版本

AppleWebKit/537.36 (KHTML, like Gecko)...Safari/537.36,历史上,苹果依靠了WebKit内核开发出Safari浏览器,WebKit包含了WebCore引擎,而WebCore又从KHTML衍生而来。由于历史原因,KHTML引擎需要声明自己是“类似Gecko”的,因此引擎部分这么写。再后来,Google开发Chrome也是用了WebKit内核,于是也跟着这么写。借用Littern的一句话:“Chrome 希望能得到为Safari编写的网页,于是决定装成Safari,Safari使用了WebKit渲染引擎,而WebKit呢又伪装自己是KHTML,KHTML呢又是伪装成Gecko的。同时所有的浏览器又都宣称自己是Mozilla。”。不过,后来Chrome 28某个版本改用了blink内核,但还是保留了这些字符串。而且,最近的几十个版本中,这部分已经固定,没再变过

第四部分:浏览器版本

本人用的是Chrome浏览器,其中60.0 是大版本,3100是持续增大的一个数字,而0则是修补漏洞的小版本。

各个浏览器的user-agent:

IE
  而IE各个版本典型的userAgent如下:
  Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
  Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
  Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)
  其中,版本号是MSIE之后的数字。

注:
MSIE后面跟的数字为IE的版本号,如MSIE 8.0代表IE8, Windows NT 6.1 对应操作系统 windows 7
Windows NT 6.0 对应操作系统 windows vista  
Windows NT 5.2 对应操作系统 windows 2003   
Windows NT 5.1 对应操作系统 windows xp   
Windows NT 5.0 对应操作系统 windows 2000   

UNIX/LINUX下的为X11代替,具体可以从网上找下,百度百科上也有的。

Firefox
  Firefox几个版本的userAgent大致如下:
  Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
  Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
  Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12  其中,版本号是Firefox之后的数字。
注:N: 表示无安全加密   I: 表示弱安全加密   U: 表示强安全加密     上面的U代表加密等级
Opera
  Opera典型的userAgent如下:
  Opera/9.27 (Windows NT 5.2; U; zh-cn)
  Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
  Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0 
  其中,版本号是靠近Opera的数字。

Safari
  Safari典型的userAgent如下:
  Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13
  Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3
  其版本号是Version之后的数字。

Chrome
  目前,Chrome的userAgent是:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 
  其中,版本号在Chrome之后的数字。


user-language字段:


表示国家地区
修改http请求中的header:要修改的主要字段_第1张图片

X-Forwarded-For:

伪造IP地址

那么我们只要在发给服务器端的http请求中加入 X-Forwarded-For: 162.150.10.16 信息即可。 

具体参考:

https://windard.com/project/2016/05/08/Forge-IP-Address

服务器如何得到客户ip的

在这里以php为例,在php里有三个值保存客户ip,分别是 HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR,REMOTE_ADDR 。

$_SERVER['HTTP_CLIENT_IP'] 如果有代理服务器,一般是代理服务器ip,没有则为空$_SERVER['HTTP_X_FORWARDED_FOR'] 如果有代理服务器的话,一般是原始ip,没有则为空,若有多个则也显示代理服务器ip $_SERVER['REMOTE_ADDR'] 如果有代理服务器的话,则为最后一个代理的ip,没有则为连接的客户端ip

可以看到有很多的一般,也就是说前两个都是可以伪造的,最后的一个倒是很难伪造,不过如果真的有代理的话,最后一个也没有什么用。


那么我们只要在发给服务器端的http请求中加入   X-Forwarded-For: 162.150.10.16   信息即可。  

你可能感兴趣的:(ctf)