博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《转载》脚本实现从客户端服务端HTTP请求快速分析
阅读量:6904 次
发布时间:2019-06-27

本文共 2983 字,大约阅读时间需要 9 分钟。

本文转载自

首先我想介绍下,分享这个脚本的用处:

当客户告知我们,一个页面http://www.xxx.com 有问题时,作为PE,我们第一步是会是怎么作?

我的处理经验来看,我会第一时间打开我的额浏览器,输入http://www.xxx.com,去查看页面的返回以及服务端过来的响应状态。遇到的响应可能有以下几种情况:

情况一、如果页面出现“页面无法连接”

然后我执行,ping www.xxx.com 查看是否有IP解析正常,如果有预期的 ip返回,那么这个命令的另一个用处就是查看,服务端到我本地端,通过ICMP协议的延时,如果RT>300ms,或者有“

Request timeout”,那么我判断一定是我本地到远程服务器的网络出现了异常。

情况二、如果页面可以正常打开,但是出现了如:Bad gateway 或者 Connecttion timeout

那么我需要去对应分析,状态码提示的问题

情况三、如果页面能正常打开,但是数据加载十分慢

那么这个时候,我需要去分析网络延时,或者是否后端处理速度缓慢。

处理这种问题,其实在 linux下我们只需要用到ping和curl两个命令就可以了。

Jping的作用,就是:通过最简单且直观的方式,快速的提供请求url中过程中的相关数据(包括ICMP延时、DNS请求速度、tcp握手时间等),帮助我们快速的定位分析问题。

接下来,我就分享下Jping的实现:

########################################################################## File Name: Jping.sh# Program function: # Author:Jeson # mail:jeson@imoocc.com # Created Time: 二 10/25 12:12:42 2016 if [ $# == 1 ];then if [[ "$1" =~ ^http.* ]];then domain_name=$(echo $1|awk -F'/' '{print $3}') ping -c 3 ${domain_name} if [ $? == 0 ];then response_res=($(curl -o /dev/null -w %{http_code}' '%{time_namelookup}' '%{time_connect}' '%{time_pretransfer}' '%{time_starttransfer}' '%{time_total}' '%{size_download}' '%{speed_download} ${domain_name})) echo "状态码:"${response_res[0]} echo "DNS解析时间:"${response_res[1]}"(s)" echo "TCP握手:$(echo "${response_res[2]} - ${response_res[1]}"|bc)(s)" echo "发送第一个Get请求时间:"${response_res[3]}"(s)" echo "接收到Server的第一个包时间:"${response_res[4]}"(s)" echo "从开始到server关闭连接的时间:"${response_res[5]}"(s)" echo "HTTP请求内容大小:"${response_res[6]}"(B)" echo "HTTP包请求的速度:"${response_res[7]}"(B/s)" fi else domain_name=$1 ping -c 3 ${domain_name} fi else echo "Error:Input a url or domain_name or ip address!" exit fi

 

 

脚本注解:

通过ping命令,检察1、域名DNS的解析结果,及IMCP的RT时间

通过curl来获取每一个http请求的响应状态码,DNS解析时间、TCP握手时间等等

三、Jping执行方式

我只需要通过终端执行Jping + url地址 or Jping + IP或者域名地址

1、参数URL地址的方式

$ Jping

PING (115.238.23.253): 56 data bytes

64 bytes from 115.238.23.253: icmp_seq=0 ttl=40 time=37.347 ms

64 bytes from 115.238.23.253: icmp_seq=1 ttl=40 time=37.749 ms

64 bytes from 115.238.23.253: icmp_seq=2 ttl=40 time=37.788 ms

--- www.taobao.com.danuoyi.tbcache.com ping statistics ---

3 packets transmitted, 3 packets received, 0.0% packet loss

round-trip min/avg/max/stddev = 37.347/37.628/37.788/0.199 ms

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 258 100 258 0 0 444 0 --:--:-- --:--:-- --:--:-- 444

状态码:302

DNS解析时间:0.523(s)

TCP握手:.029(s)

发送第一个Get请求时间:0.552(s)

接收到Server的第一个包时间:0.581(s)

从开始到server关闭连接的时间:0.581(s)

HTTP请求内容大小:258(B)

HTTP包请求的速度:444.000(B/s)

2、参数IP域名的方式

JesondeMacBook-Air:myjob jeson$ Jping www.imoocc.com

PING (115.238.23.253): 56 data bytes

64 bytes from 115.238.23.253: icmp_seq=0 ttl=40 time=38.801 ms

64 bytes from 115.238.23.253: icmp_seq=1 ttl=40 time=37.789 ms

64 bytes from 115.238.23.253: icmp_seq=2 ttl=40 time=37.044 ms

--- www.taobao.com.danuoyi.tbcache.com ping statistics ---

3 packets transmitted, 3 packets received, 0.0% packet loss

round-trip min/avg/max/stddev = 37.044/37.878/38.801/0.720 ms

你可能感兴趣的文章
Webbrowser中模拟连接点击(非鼠标模拟)
查看>>
HDU 1049 Climbing Worm(水题)
查看>>
类 不包含 方法的定义
查看>>
Servlet与JSP有什么区别?
查看>>
OK335xS psplash Screen 移植
查看>>
drop.delete.trauncat的区别
查看>>
状态栏 隐藏问题
查看>>
IIS
查看>>
ul li css 做横向菜单
查看>>
Android深入浅出系列之Socket—Socket编程(二)
查看>>
[原创]对于运行ASP.NET程序时,提示:无法启动程序“http://localhost:3532/Default.aspx”。的解决办法...
查看>>
[转载]在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(二)----使用方法...
查看>>
sencha touch 2--audio
查看>>
详细介绍Linux /etc/group文件
查看>>
解决w3wp.exe内存占用过高的方法
查看>>
basic4android 开发教程翻译(五)Android进程及activitys 生存周期
查看>>
设计模式--工厂方法模式
查看>>
如何防止你的UI出现了假死吗?
查看>>
教你如何迅速秒杀掉:99%的海量数据处理面试题
查看>>
使用FFmpeg捕获一帧摄像头图像
查看>>