*****抓包和网络协议相关*****
1.抓包工具怎么用?
我原来的公司对于抓包这块,在 App 的测试用得比较多。我们会使用 fiddler 抓取数据检查结果,定位问题,测试安全,制造弱网环境。如:抓取数据通过查看请求数据,请求行,请求报头,请求正文,信息是否正确去检查结果。
如果是以 4 开头的话就有可能是前端问题一般我会到前端排查,以 5 开头就有可能是后端问题我就会到后端排查。
如果是 200 的话,就需要检查请求行,请求报头,请求正文是否正确。
如果请求错误就是前端问题。
如果请求没有问题,那就是后端问题,看后端问题服务器运行日志,是否包含 exception,error 或根据时间点去看日志。
测试安全,抓取数据查看用户的感敏信息有没有进行加密显示,还有就是把发送请求的数据篡改是否成功。
弱网环境,诵过 fiddler 工具选择 Customize Ruels...(Ctr+R)调出定义脚本编辑器找到“if(m_SimulateModem)”设置上行下行网速,然后把Rules-> Performance-> Simulate Modem Speeds 选中生效。
2.你都知道哪些抓包工具?
浏览器中 F12, fiddler, Charles(青花瓷), wireshark
3.如何抓取 https 的包?
- 设置 Tools=> Option=>勾选 Decrypt Https traffic=>勾选 lgnore server certificate errors(unsafe) ;
- 打开 https 网页就可以成功抓取了;
- 还可以 Fiddler 添加过滤器(Filters):只抓取指定 iP 的数据。
4.如何抓取手机的包?(之前我有写过详细的教程,可参考)
Fiddler如何抓取手机http/https请求数据包(IOS,Android保姆级教程)
- 开启 Fiddler 的远程连接:Fiddler 主菜单 Toos- Options-> Connections>勾选 Allow remote computers to;
- 重启 Fiddler,更新刚开启的远程配置;
- 然后手机和电脑需要在同一个局域网,抓取 http 手机设置代理就可以,要抓取 https 包,手机需要安装一个 fiddler 证书;
- fiddler 工具生成一个证书,发送手机上面安装;
- 通过手机浏览器打开安装证书界面 192.168.3.197:8888。ip 地址是用 fiddler 工具的电脑的 ip 地址,fiddler 工具端口号的 8888;
- 点击下载证书,会提示,输入手机锁屏密码;
- 给证书命名,名字随意,其他默认就 ok;
- 点击确定,安装成功,然后就可以抓取 https 的包了。
5.网络协议了解多少?
原来我们用得比较多的协议是 http 和 https 以及 tcp 协议。
http 和 https 都是超文本协议,浏览器发送数据请求基本用的都是他们,不同的是 https 。
在 http 的基础上增加了 ssl 加密协议,http 的默认端口是 80,http 的默认端口是 443,https 收费,http 免费。
tcp 协议的话,作用在传输层,在发送请求前会有三次握手,是面向连接的协议,传输过程比较可靠。 udp 协议的话,作用在传输层,面向非连接的协议,传输过程相对 tcp 不可靠,传输大量数据。
6.请求方式有哪些?
常用:get,post;
不常用:delete,put,head,option。
7.get 跟 post 请求的区别?
- get 请求的参数有长度限制(取决于浏览器的URL的长度限制),post 没有;
- get 请求参数在 url 上传输,post 的参数在请求正文中传输。post 比 get 传输更安全;
- get 只能接收 ASCII 码参数,而 post 没有限制;
- get 请求的时候,只请求一次,而 post 请求两次。第一发送请求头相关信息,第二次再发送请求正文,(只有部分浏览器 2 次请求)。
8.http 跟 https 的区别?
- https 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用;
- http 是超文本传输协议,信息是明文传输 https 则是具有安全性的 ssl 加密传输协议;
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443;
- http 的连接很简单,是无状态的;Https 协议是由 SSL + HTTP 协议构建的可进行加密传输,身份认证的网络协议,比 http 协议安全。
9.为什么要使用 cookie 和 session?
因为在网络中 http 请求是无状态的。
第一次登录,发送用户信息给到服务器,服务器把用户信息保存在 session 中服务器响应数据给客户端,响应数据中有包含 session 的相关用户信息。客户端接收到服务器 session 信息,把 session 中相关的用户信息保存在 cookie 中。
第二次登录,客户端发送请求,并携带 cookie,服务端可以直接验证 cookie 值,如果用户已经登录过,可以免登录。
10.cookie 跟 session 有什么区别?
在网络中 http 请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户,cookie 的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的 cookie 数据自动携带给服务器。服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie 存储的数据量有限,不同的浏览器有不同的存储容量,但一般不超过 4KB,因此使用 cookie 只能存储一些小量的数据。
session 和 cookie 的作用有点类似,都是为了存储用户相关的信息,不同的是,cookie 是存储在本地浏览器,而 session 存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些 session 信息还是绰绰有余的。
11.post 申请方式,选用 get 会报什么错误?
404 Not Found
请求失败。
请求所希望得到的资源未被在服务器上发现,没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用 410 状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用。而且没有任何可以跳转的地址,404 这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下,出现这个错误的最有可能的原因是服务器端没有这个页面。
12.http 协议提交请求头内容都有什么?(高频)
- Accept-Charset:浏览器能够显示的字符集
- Accept- Encoding:浏览器能够处理的压缩编码
- Accept-Language:浏览器当前设置的语言
- Connection:浏览器与服务器之间连接的类型
- Cookie:当前页面设置的任何 Cookie
- Host:发出请求的页面所在的域
- Referer:发出请求的页面的 URL
- User-Agent:浏览器的用户代理字符串
- Content-Type:请求数据的格式或者是类型