HTTP协议之数据包头信息

普通的嗅探器,网络抓包工具都做了相应的处理,一般抓到的http数据包都是经过处理的,基本上看不到底层的socket传输信息,我现在想做的是用socket模拟浏览器实现网页通讯。但是,经过抓包发现,在发送GET请求前已经发送了两个数据包,一个52 一个40字节的长度的包,这个包,包含的浏览器的信息,或者其他信息,一下是我在一个网站上抓取的数据头信息,总共三次,上面三个是三次第一个包的,下面三个是三次第二个包的信息。

 

0000: 45 00 00 34 14 22 00 00 34 06 96 7B 74 FF 90 75      E..4."..4..{t..u
0016: C0 A8 16 0A 00 50 0F 5E 61 EA 2E 4B D3 18 DA C8      .....P.^a..K....
0032: 80 12 40 00 05 30 00 00 02 04 05 A0 01 03 03 00      ..@..0..........
0048: 01 01 04 02                                          ....

0000: 45 00 00 34 75 D2 00 00 34 06 34 CB 74 FF 90 75      E..4u...4.4.t..u
0016: C0 A8 16 0A 00 50 0F 62 6C 5A 2B 64 6E 1A A8 6D      .....P.blZ+dn..m
0032: 80 12 40 00 94 FC 00 00 02 04 05 A0 01 03 03 00      ..@.............
0048: 01 01 04 02                                          ....

0000: 45 00 00 34 14 7B 00 00 35 06 95 22 74 FF 90 75      E..4.{..5.."t..u
0016: C0 A8 16 0A 00 50 0F 78 76 54 DC 9D 2E E7 BC 19      .....P.xvT......
0032: 80 12 40 00 05 3A 00 00 02 04 05 A0 01 03 03 00      ..@..:..........
0048: 01 01 04 02              

 

 


0000: 45 00 00 28 14 D9 40 00 34 06 55 D0 74 FF 90 75      E..(..@.4.U.t..u
0016: C0 A8 16 0A 00 50 0F 5E 61 EA 2E 4C D3 18 DD A8      .....P.^a..L....
0032: 50 10 FD 1F 85 E7 00 00                              P.......

0000: 45 00 00 28 76 E0 40 00 34 06 F3 C8 74 FF 90 75      E..(v.@.4...t..u
0016: C0 A8 16 0A 00 50 0F 62 6C 5A 2B 65 6E 1A AB 4D      .....P.blZ+en..M
0032: 50 10 FD 1F 15 B4 00 00                              P.......

0000: 45 00 00 34 14 86 00 00 34 06 96 17 74 FF 90 75      E..4....4...t..u
0016: C0 A8 16 0A 00 50 0F 79 2C EA AC F4 F9 B0 A4 33      .....P.y,......3
0032: 80 12 40 00 CB 68 00 00 02 04 05 A0 01 03 03 00      ..@..h..........
0048: 01 01 04 02                                          ....

网页浏览的源码如下

#include "StdAfx.h"
#include "MyHttpSocket.h"
#pragma comment(lib,"Ws2_32.lib")

CMyHttp::CMyHttp()
{
 m_isInit=false;
}
CMyHttp::~CMyHttp()
{
 Stop();
 WSACleanup();

}
char fname[256];
void LogFile(char *p)
{
 FILE *fp=fopen(fname,"a+");
 fprintf(fp,"%s ",p);
 fclose(fp);
}

 

BOOL CMyHttp::Initlization()
{
// HttpClient();
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested = MAKEWORD( 1, 1 );
 
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 ) {
  return FALSE;
 }
 
 
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
  HIBYTE( wsaData.wVersion ) != 1 ) {
  WSACleanup( );
  return FALSE;
 }
 sockClient=socket(AF_INET,SOCK_STREAM,0);
 if(sockClient!=NULL)
 {
  m_isInit=true;
  return TRUE;

 }
 return FALSE;
 
}
CString CMyHttp::Start(CString strHost)
{
 if(m_isInit==false){return "";}
 SOCKADDR_IN addrSrv;
 char ta=0x0d;
 HOSTENT* pHost;
 pHost=gethostbyname("www.baidu.com");
 
 addrSrv.sin_addr.S_un.S_addr=*((DWORD*)pHost->h_addr_list[0]);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(80);

 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

 char acHeader[]={0x45,0x00,0x00,0x34,0x20,0x7C,0x00,0x00,0x34,0x06,0x8A,0x21,0x74,0xFF,0x90,0x75
  ,0xC0,0xA8,0x16,0x0A,0x00,0x50,0x0C,0xC3,0x8E,0x8D,0x4B,0x2E,0x5C,0xD8,0x20,0x1B
  ,0x80,0x12,0x40,0x00,0xEF,0x32,0x00,0x00,0x02,0x04,0x05,0xA0,0x01,0x03,0x03,0x00
  ,0x01 ,0x01 ,0x04 ,0x02};
 int iDataLen=strlen(acHeader);
 int iSendLen=send(sockClient,acHeader,52,0);
 char acHeader2[]={0x45,0x00,0x00,0x28,0x21,0x54,0x40,0x00,0x34,0x06,0x49,0x55,0x74,0xFF,0x90,0x75
     ,0xC0,0xA8,0x16,0x0A,0x00,0x50,0x0C,0xC3,0x8E,0x8D,0x4B,0x2F,0x5C,0xD8,0x22,0xFB
     ,0x50,0x10,0xFD,0x1F,0x6F,0xEA,0x00,0x00};

  iDataLen=strlen(acHeader2);
  iSendLen=send(sockClient,acHeader2,40,0);

char acData0[]="GET / HTTP/1.1\r\n\
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*\r\n\
Accept-Language: zh-cn\r\n\
Accept-Encoding: gzip, deflate\r\n\
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\r\n\
Host: www.baidu.com\r\n\
Connection: Keep-Alive\r\n\
Cookie: Grix_2132_sid=zSxjJR; Grix_2132_saltkey=DQuF3h3Q; Grix_2132_lastvisit=1322836336; Grix_2132_lastact=1322914181%09home.php%09misc; Grix_2132_auth=37dfhTSg4hkgJYXGAcDiktq6tBLYEIJWw9UEXTgxeOrv9v2EuBsLhpq3xscDmrtt%2BYVsxXZ8vL7MB1S%2BynoHeEIjSA; Grix_2132_connect_is_bind=0; Grix_2132_mrd=%09; Grix_2132_ulastactivity=f0901LxkjbjeXyww5PH2aS%2F6CvXrYJU9FVGKBeh8WxINY6U5IZt6; Grix_2132_fid23=1322913237; Grix_2132_visitedfid=23";
  iDataLen=strlen(acData0);
  iSendLen=send(sockClient,acData0,iDataLen,0);
 
 if(iSendLen==iDataLen)
 {
  TRACE("send=%d",iSendLen);
 }
 char recvBuf[4096];
    CString strRevciveData;
 int iRecvLen=0;
 do
 { memset(recvBuf,0,4096);
  iRecvLen= recv(sockClient,recvBuf,4096,0);
  strRevciveData+=recvBuf;
  if(iRecvLen==-1)
  {
   break;
  }
 }while(iRecvLen!=0);
 return strRevciveData;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值