HTTP协议之数据包头信息

2023-10-26

普通的嗅探器,网络抓包工具都做了相应的处理,一般抓到的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;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP协议之数据包头信息 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一

随机推荐

  • 【C++】实验四 数组

    文章目录 实践题1 实践题2 实践题3 实践题4 实践题5 实践题1 问题描述 编程序 实现如下功能 1 定义两个一维数组x y 不超过50个元素 2 从键盘输入k个整数到数组x中 3 计算x中数据的平均值ave及大于平均值的元素个数n并输
  • float浮动布局

    什么是浮动 当元素被浮动时 会脱离文档流 根据float的值向左或向右移动 直到它的外边界碰到父元素的内边界或另一个浮动元素的外边界为止 是CSS布局中实现左右布局的一种方式 文档流 文档流是元素在Web页面上的一种呈现方式 按照出现的先后
  • springboot整合redisson实现分布式锁

    先点赞后观看 养成好习惯 一 介绍Redisson Redisson是Redis官方推荐的Java版的Redis客户端 Jedis letture也是官方推荐的java版本redis客户端程序 它提供的功能非常多 也非常强大 特别是它默认提
  • ajax无刷下拉框

  • 使用SVM对鸢尾花数据集进行分类

    通过使用GridSearchCV来选取最优的参数 调参后代码 from sklearn svm import SVC from sklearn datasets import load iris import matplotlib pypl
  • 产品经理 demo html,18个UI demo设计实例,深挖让用户愉悦的小惊喜

    文章分享了对话框及模态窗口 注册与登录页面 导航及菜单 滑动条和切换开关等UI设计实例 希望对大家有所启发 CodePen网站已成为开发者的游乐场 那是一个你可以驰骋想象 开发创造的沙盘 里面既有实践的东西 也有实验性的概念 是个激发灵感的
  • 构造函数与普通函数的一些区别

    一 构造函数和普通函数的三个不同点 1 构造函数也是一个普通函数 创建方式与普通函数一样 构造函数习惯上首字母大写 2 构造函数和普通函数的主要区别在于 调用方式不一样 作用也不一样 构造函数用来新建实例对象 3 调用方式不一样 a 普通函
  • zookeeper windows 入门安装和测试

    一 序言 以下是我对zookeeper 的一些理解 zookeeper 作为一个服务注册信息存储的管理工具 好吧 这样说得很抽象 我们举个 栗子 栗子1号 假设我是一家KTV的老板 我同时拥有5家KTV 我肯定得时刻监视我KTV 的情况吧
  • oracle如何insert into 多个values

    oracle如何insert into 多个values 稍微熟悉Oracle的都知道 如果我们想一条SQL语句向表中插入多个值的话 如果如下语句 INSERT INTO 某表 VALUES 各个值 VALUES 各个值 这样会报错的 因为
  • JavaWeb学习笔记(XML语言)

    知识点总结于崔希凡 王泽 广陵散 的JavaWeb视频教程 侵权请联系删除 XML XML 简介 XML的应用 XML常见应用 XML的语法规则 文档声明 元素 标签 定义 属性定义 注释 特殊字符 CDATA区 处理指令 小结 XML约束
  • java 判断能否整除_java编程,键盘输入一个整数,判断能否被5和6整除,再判断能否被5或6整除?...

    展开全部 首先判断能否同时被5和e68a84e8a2ad62616964757a686964616f313333656435666整除 如果不能再单独判断是否能被5或者6整除 import java util Scanner public
  • PostgreSQL 快速上手 安装使用入门

    转载自 http www ruanyifeng com blog 2013 12 getting started with postgresql html 谢谢 PostgreSQL的安装和基本用法 一 安装 首先 安装PostgreSQL
  • Linux 一“文”搞定Shell编程

    又到了毕业季 又得去找实习工作 最近在某直聘软件上找实习工作 看到有许多工作都需要会Shell编程的 然后自己对Shell编程也是一知半解 所以趁着最后还有半个月在校时间 索性学习一下 Shell是一个命令行解释器 它接收应用程序或用户命令
  • salesforce-潜在客户Lead的视图管理

    当我们收集到一些Lead数据之后 我们需要对这些Lead进行跟踪和管理 如何快速找到自己想要的信息呢 如下图 salesforce的默认视图只提供了一些标准字段信息 那么 我们就需要对视图进行自定义了 新建视图 点击页面右上角的设置图标 在
  • numpy 删除指定行和多行

    aa np arange 12 reshape 4 3 gt gt array 0 1 2 3 4 5 6 7 8 9 10 11 删除a中第1行至第2行的数据 np delete a np s 1 3 axis 0 gt gt array
  • Java 实现 HTTP 请求的四种方式,你都学会了么?

    前言 在日常工作和学习中 有很多地方都需要发送HTTP请求 本文以Java为例 总结发送HTTP请求的多种方式 HTTP请求实现过程 GET 创建远程连接 设置连接方式 get post put 设置连接超时时间 设置响应读取时间 发起请求
  • 反转链表go语言手撕(Goland上编写)

    在Goland上手写反转链表 并且写出例子运行一下 好久没写力扣 有点手生了 面试官说 如果我好久没写这个 就最好不要在简历上写 他说他是希望我能够手撕算法的 算是积累经验了 package main import fmt type Lis
  • HTTP抓包利器Fiddler基础及进阶教程(三)

    HTTP抓包利器Fiddler基础及进阶教程 二 手机端抓包 强制全局代理 在第二个这里说到为什么无法抓包到小红书的 因为这个关系到ssl ping 绕过SSL JustTrustMe 基于Xposed一个模块 github已开源 可以禁用
  • iptables知识手册

    iptables 所在目录 etc sysconfig iptables 安装iptables服务 yum yinstalliptables services systemctl start iptables iptables基础知识 ip
  • HTTP协议之数据包头信息

    普通的嗅探器 网络抓包工具都做了相应的处理 一般抓到的http数据包都是经过处理的 基本上看不到底层的socket传输信息 我现在想做的是用socket模拟浏览器实现网页通讯 但是 经过抓包发现 在发送GET请求前已经发送了两个数据包 一个