HTTP初识,fiddler的使用,URL各部分介绍,QueryString

简介: HTTP初识,fiddler的使用,URL各部分介绍,QueryString

一、什么是HTTP

现在网页上,我们常见的是https,但是在二十年前是以http为主,这个协议也叫超文本传输协议,文本->字符串,“超文本”->图片/视频

HTTP响应:比如搜狗版的HTML,这个响应的内容,往往是一个html内容

一个网站分为前端+后端(太多了,说不过来)

前端:html(描述网页的结构),css(描述网页的样式),js(网页的行为,与用户的交互)vue esc就不说了

网页上HTML,css,js都是在浏览器执行的,都是访问服务器的时候,从服务器下载到浏览器上,然后才能显示运行。其他的程序都是要先安装,才能够使用,网页是随时用随时下载。网页优势:服务器随时更新,用户就可以用上新版本

劣势:性能比较有限,很难去有一些复杂操作。

二、抓包工具

抓包工具是一种代理:但是代理不仅仅是抓包工具,还有很多体现形式。

代理客户端的叫正向代理

代理服务器的叫反向代理

抓包的工具有很多:wireshark(功能很丰富,但是却很复杂)

                                fiddler抓包工具(足以应对大部分场景,而且简单方便,但是功能比上面少点,但是够用)

1.直接搜索后安装

有验证码,为啥有复杂的验证码,互联网上80%带宽是被爬虫消耗的。

2.使用

左侧,当前机器上有哪些http数据报交互(不仅能抓浏览器,而且能抓到所有程序)

电脑程序在后台和服务器悄悄的交互(有的为了实现某种功能,有的偷拿你隐私)

右上角是请求的详情

右下角是响应的内容

刚好装完fidder之后,默认只能抓到http的数据,抓到了https,抓不到https(网络上httsp是主流)所以需要稍微设置一下,让fiddler可以抓到https。

1.点击tools->options->https勾上提示框(意思勾选有风险,一路yes)https是加密的,要显示,先解密,要信任保证书。

开了fidder,客户端服务器http,https的请求和响应都会在fidder过一遍(但有一些东西会影响fidder正确运行)

1.https要勾选正确

2.有的代理程序可能和fiddler冲突,确保使用fiddler的时候关闭其他代理。

3.有的浏览器插件,也可能和fiddler冲突

这个是抓去搜狗主页交互过程,上面这些标签页,站在不同视角来解析请求和响应,HTTP是文本协议,IP,TCP ,UDP二进制协议

HTTP加密后是二进制,但是我们勾选完毕就恢复成文本了。在这里我们点击row打开响应,当前http响应,经常会进行压缩(节省带宽)

http响应的内容通常是HTML,CSS,JS

这么看不太直观,干脆这么看

GET http://www.sougou.com/HTTP 11.1.     //1.首行
······
Accept:text/html,application/xhtml       //2.请求头
                                         //3.空行
body                                     //4.正文

响应报文

HTTP/1.1 200 ok.       //1.首行
Connection             //2.响应头
                       //3.空行
body                   //4正文

三、请求的首行 URL

GET https://www.sogou.com/HTTP/1.1

GET:方法

https://www.sogou.com:URL(请求,就是客户端给服务器发起的一个数据,这里要明确指出要访问的服务器是啥,要访问的服务器资源是什么,我们在JDBC中讲过:URL是唯一资源定位符,用来描述网络上的资源的)

HTTP/1.1 :版本号

RFC标准文档,TCP,UDP,IP,HTTP等网络协议,RFC标准文档有更精准的细节内容

http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1 (URL的完整细节)

简单来说
协议名://IP地址:端口号/路径?querystring ->(querystring是键值对的数据,k=uid这个东西,value则是uid等于的那个东西

http:协议名字(协议方案名)

user:pass@ :大部分现在这个地方是不用的,所以也不用多介绍

www.example.jp:可以是IP地址,也可以是域名,也可是外网IP(本身唯一),也可以是内网(访问局域网中的设备)还可以是环回IP(访问自己)

80:服务器端口号

dir/index.html?:访问服务器上哪个资源

uid=1:查询字符串(访问资源,带上啥样的参数)

ch1:片段标识符 (不常见,主要文档类文件)

这个东西就如同卖烤冷面

http://bhu:18/烤冷面?葱花=正常&香菜=苦苦放&醋=必须多放

->针对访问资源进行的补充说明,查询字符串,是键值对的格式,键值对之间用&分隔,键和值之间,用&分隔,键与值之间,使用=分隔,查询字符串以?开始。

实践上,URL来说,上述的几个部分,都是可以省略的~不是说哪个部分必须得保存,IP地址/域省略,此时相当于是访问当前服务器的地址。

访问B站主页,必须带有bilibili主页的html这个html又回触发一些其他的http请求,这些后续触发的http请求,就可以省略ip,省略IP就相当于用bilibili一样的IP。

四、URL的各部分详细介绍

端口号其实也可以省略(常见),省略时,浏览器会自动加上端口(这个端口号表示的是访问目标服务器的是哪个端口)

http:端口号80

https:端口号443

知名端口号:1-1024,都被一些常用的服务器(知名的老东西服务器瓜分了),因此一个网页部署于服务器的时候,往往遵守上述规则,把http绑定到8080,https绑定到443,浏览器访问你的服务器,就不必去多余指定窗口。

其实带层次的路径也能够省略

https://sogou.com/

如果省略相当于访问的是/

/称为根目录(目录是一个树形结构,根目录,就相当于树根一样,服务器提供的资源,也是类似于目录结构一样的,树形结构来组织的,有树,那么就会有树根,/就是树根->通常根节点就会对立服务器的对应主页(约定的规则)

查询字符串也可以没有(有和没有是看我们后端程序员们决定的)

query string中带有一些特殊符号,这些特殊符号,可能在url本身就有一定含义,就导致浏览器/服务器解析失败!(在c++中+就属于特殊符号,+是%2B,假如加号不去切换,就可能导致浏览器/服务器解析失败

/,?,&,=,#同理,都要转换,url的encode的本质转义字符(和我们的/n还不一样这种有自己的规则)

如:c++你好

把转换的内容的二进制的每字节,都用十六进制表示出来,然后每字节前面加一个%

你:十六进制是:E4BDA0

好:十六进制是:E5A5BD

最后会C%2B%2B%E4%BD%A0%E5%A5%BD

经过URL的encode之后,此时querystring就不会出现特殊含义的符号,浏览器和服务器才可以正常识别~


相关文章
|
8天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
1月前
url重写重定向所有http网址到https网址
url重写重定向所有http网址到https网址
31 4
|
1月前
|
安全 Java 程序员
【HTTP】认识 URL 和 URL encode
【HTTP】认识 URL 和 URL encode
35 0
|
4月前
|
JSON 网络协议 安全
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
【7月更文挑战第16天】本文介绍了HTTP和HTTPS协议的基本概念与作用,强调了理解HTTP协议对使用抓包工具Fiddler的重要性。HTTP是用于Web浏览器与服务器间信息传输的协议,不加密,易被截取,不适合传输敏感信息。HTTPS是HTTP的安全版,通过SSL/TLS提供加密和服务器身份验证,确保数据安全。HTTP请求包括请求行、请求头、空行和可选的请求主体,响应则有响应行、响应头、空行和响应主体。HTTP协议无状态,而HTTPS解决了安全性问题,但也带来了额外的计算开销。Fiddler作为一个强大的抓包工具,可以帮助开发者和测试人员分析HTTP/HTTPS通信,理解请求和响应的结构。
76 4
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
|
3月前
Fiddler——This is a CONNECT tunnel, through which encrypted HTTPS traffic flows
Fiddler——This is a CONNECT tunnel, through which encrypted HTTPS traffic flows
44 0
Fiddler——This is a CONNECT tunnel, through which encrypted HTTPS traffic flows
|
3月前
|
iOS开发 MacOS Python
【Mac 系统】解决已有清华镜像但出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url
在尝试使用清华镜像创建conda环境时遇到下载超时问题,通过删除原有镜像并添加针对Mac OS的清华镜像解决了该问题。
114 3
|
4月前
|
Web App开发 XML 缓存
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(4)-会话面板和HTTP会话数据操作详解
【7月更文挑战第19天】Fiddler会话面板概览:Fiddler的会话列表显示HTTP请求的详细信息,包括ID、状态码、协议、主机名、URL、内容类型、大小、进程及自定义备注。颜色和图标标识状态,如红色表示错误,黄色为认证,蓝色是HTML响应。用户可右键列进行搜索、标记重复、隐藏或自定义列,如添加请求方法。通过界面或脚本可添加自定义列,如显示ServerIP。会话还可复制和保存,解决乱码问题需解码响应体。
69 0
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(4)-会话面板和HTTP会话数据操作详解
|
3月前
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。
|
3月前
|
存储 Linux Docker
Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo
CentOS 安装Docker时,将 Docker 官方的 YUM 存储库添加到 CentOS 系统中出现错误。
505 0
|
5月前
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
82 5
下一篇
无影云桌面