Wget在排查网络问题时的小应用

        接到伦敦一客户发来的case,问题是在用我们一个产品监控他们网站的时候,出现“403-forbidden”错误。看了客户提供的截屏,并且分析log,发现这个问题还是比较明显的,以下是部分log 。

2013-06-30 12:08:12.125 ECHO    XXXXXXXXXXXXXXX Request page content for the URL: [http://IP/ui/] error!
java.io.IOException: Server returned HTTP response code: 403 for URL: http://IP/ui/
 at sun.reflect.GeneratedConstructorAccessor50.newInstance(Unknown Source)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
 at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1491)
 at java.security.AccessController.doPrivileged(Native Method)
 at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1485)
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1139)

 

        根据对HTTP的一些了解,觉得这个问题可能是由客户的服务端引起的,有3个可怀疑的地方:

    1.网络不稳定或存在其它网络问题
    2.服务器做了访问限制
    3.应用程序做了访问限制


        根据初步的认识,让客户ping一下服务器,同时让他们的网络人员排查一下网络和服务器方面的问题,并且换其它IP来访问,产品是否能够正常工作。得到的回复是,ping没问题的,并且确认网络没问题,换其它网站如google.com是可以访问的,而且用浏览器也是可以访问他们的网站,所以用户觉得还是我们产品存在问题。其实这个结果基本可以确定我们的产品是可以正常工作的,可能是他们的应用做了限制,但是怎么跟用户解释呢?不能直接跟他们说,我们的产品没问题,问题在你们那边,你们自己找去吧,哈。。。

 

        这种情况下,最好有一个大家公认的工具,Linux下面有一些比较好的工具,如wget,我不知道windows平台是否也有类似的工具,查了一下,没发现。还在继续想办法怎样处理这个问题。一同事说wget也有windows版本的,可以试一下。根据该同事的建议,让客户用wget和telnet分别测试一下。用Telnet访问是可以访问,用Wget来访问,返回以下结果。

 

 C:\>wget.ext http://IP/uiConnectng to IP ... connected. 
HTTP request sent, awaiting response ... 403 Access forbidden
2013-07-10 15:33:23 ERROR 403: Access forbidden

       

        结果很明显了,确实是他们的应用有问题,应用方面做了限制。我们可以做个简单的模拟,如果是非浏览器的软件来访问,就返回403,如果是浏览器来访问,就可以正常访问,如下所示:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//get browser info
String Agent = request.getHeader("User-Agent");
boolean isBrowser = true;//check whether it's a browser from Agent, here I hardcode true
if(!isBrowser){
	response.setStatus(403);
}
request.getRequestDispatcher("").forward(request, response);
%> 

 

        根据客户返回的结果,再次建议他们协同开发人员一起检查,确认应用没做限制之后再用我们的产品来做监控。现在有了wget的返回结果做证据,客户老老实实地叫来开发人员进行排查。过了2天,结果回来了,确实是他们的应用出问题,此问题得到解决。


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//get browser info
String Agent = request.getHeader("User-Agent");
boolean isBrowser = true;//check whether it's a browser from Agent, here I hardcode true
if(!isBrowser){
	response.setStatus(403);
}
request.getRequestDispatcher("").forward(request, response);
%> 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值