IE作为客户端,
ServerSocket作为服务端,
输出浏览器的请求消息
package source_code; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class IE_ServerSocket { public static void main(String[] args) throws IOException { /*方法说明: *自定义服务端,使用IE作为客户端, *看看IE(客户端)到底给我(服务端)发了什么请求! */ ServerSocket ss = new ServerSocket(9090);//侦听9090端口 Socket s = ss.accept(); System.out.println(s.getInetAddress().getHostAddress()+".....connected"); //把IE发送给服务端的数据全打印出来 //看看浏览器中输入网址后,回车 //http://127.0.0.1:9090/myweb/iframe.html //到底给服务端发的是啥? InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf,0,len); System.out.println(text); //给客户端一个反馈信息(读取资源也同样可以)。 PrintWriter out = new PrintWriter(s.getOutputStream(),true); out.println("<font color='red' size='7'>欢迎光临本站</font>"); //显示在IE的document里面 s.close(); ss.close(); } } ================================ 第1行是:请求行 请求方式 /myweb/iframe.html 请求的资源路径 http协议版本。 第2段是:请求消息头 . 属性名:属性值 第3段是:空行 第4段是:请求体 GET /myweb/iframe.html HTTP/1.1 Accept: application/x-shockwave-flash, image/gif, image/jpeg, image/pjpeg, image /pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msw ord, application/xaml+xml, application/x-ms-xbap, application/x-ms-application, */* Accept-Language: zh-cn User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; YYGameAll_1.2.167057.92; Windows NT 5.1; Trident/4.0; IEShow Toolbar; IEShow herowyToolBar; .NET CLR 2.0.50727; . NET4.0C) Accept-Encoding: gzip, deflate Host: 127.0.0.1:9090 Connection: Keep-Alive
Socket客户端模拟浏览器,
伪造请求消息发送给Tomcat服务端,
输出应答消息
import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.Socket; /* 运行这个前,要先运行tomcat服务器 用Socket客户端模拟浏览器: 通过伪造请求行+请求消息头+空行+请求体 对Tomcat服务器发起请求! 并且输出Tomcat服务器返回的应答消息 */ public class FakeIE_Tomcat { public static void main(String[] args) throws Exception { Socket s=new Socket("127.0.0.1",8080); PrintWriter out=new PrintWriter(s.getOutputStream(), true); out.println("GET /myweb/iframe.html HTTP/1.1"); out.println("Accept: */*"); out.println("Accept Encoding: gzip,deflate"); out.println("Host: 127.0.0.1:8080");// 一个IP上可能有多个服务器 out.println("Connection: close"); out.println("");//换行,即请求消息头和消息体的分割 out.println("");//消息体 //读取tomcat服务器返回的信息(应答消息) InputStream in=s.getInputStream(); byte[] buf=new byte[1024]; int len=in.read(buf); System.out.println(new String(buf,0,len)); s.close(); } } //下面就是tomcat服务器响应请求后,返回的信息!(应答消息) /* HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"538-1384427776000" Last-Modified: Thu, 14 Nov 2013 11:16:16 GMT Content-Type: text/html Content-Length: 538 Date: Thu, 14 Nov 2013 11:17:59 GMT Connection: close <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title> 这里面是title </title> </head> <body> <font color="#000099" size="+3">演示iframe标签(画中画,页面中挖个洞)</font> <iframe src="1.html" height="300",width="500"> 如果看到这些文字,说明您的浏览器不支持iframe标签 </iframe> <iframe src="www.baidu.com/xxx.js" height="0",width="0"> 如果iframe的高宽都被设置为0, 并且访问地址是一个js脚本,就可能实现一个恶意代码! </iframe> </body> </html> */