与上一篇教程文章“c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区”不同的
是这次我们使用Wininet库来提交POST请求并得到HTTP响应消息而非服务器响应消息!

本步骤就不讲诉抓包和分析协议包的过程了,如果想知道的话可以去看一下我原先写的TCP提交POST请求里有详细的抓包过程 "c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区"

下面是抓到的POST提交详细信息:

POST /member.php?mod=logging&action=login&loginsubmit=yes&loginhash=Lq0cN&inajax=1 HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://www.phpchina.com/member.php?mod=logging&action=login
Accept-Language: zh-CN
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
Host: www.phpchina.com
Content-Length: 141
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: CNZZDATA1260206835=395559444-1503368013-%7C1503727136; CNZZDATA1253686164=28344171-1503363672-%7C1503726440; pgv_pvi=2444701901; UM_distinctid=15e0515a0bef1-0b6f2a02ea70a1-38732142-140000-15e0515a0bf10f; Hm_lvt_8c71400238561a42650208f8e318a121=1503324916,1503327293,1503684977,1503685263; NXZu_3812_sid=QP6ZvN; NXZu_3812_saltkey=utUStUHT; NXZu_3812_lastvisit=1503371200; NXZu_3812_lastact=1503729574%09member.php%09logging; NXZu_3812_ulastactivity=574eU5381ctVgy4atPkwJwQh6kBDyVKy%2BtdKJa8hqFkB2HO34i0e; NXZu_3812_lastcheckfeed=1065280%7C1503381375; NXZu_3812_connect_is_bind=0; NXZu_3812_sendmail=1; pgv_info=ssi=s2734813660; Hm_lpvt_8c71400238561a42650208f8e318a121=1503685267

URL:http://www.phpchina.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=Lq0cN&inajax=1

URL:

http://www.phpchina.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=Lq0cN&inajax=1

POST数据:formhash=7a908ad2&referer=http%3A%2F%2Fwww.phpchina.com%2F.%2F&username=123321&password=c8837b23ff8aaa8a2dde915473ce0991&questionid=0&answer=

端口:

80

C++代码如下

#include <iostream>
#include <cstdio>
#include <wininet.h>
#define X "\r\n"
#define URL "http://www.phpchina.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LRsS7&inajax=1"  //请求地址
#define _COM "www.phpchina.com" //网站地址
#define _COM_URL "/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"      //请求页面
#define PORT 0x50   //端口号80
#define _POST "formhash=7a908ad2&referer=http%3A%2F%2Fwww.phpchina.com%2F&username=17%E5%B2%81boy&password=9d72df73e107457207b7a594b62929d2&questionid=0&answer=" //POST请求数据
using namespace std;  int main()
{  char _HTTP_ARAC[] = "Accept: */*\r\n"\                                          //原始协议头  "Referer: "\  URL\  X\  "Accept-Language: zh-cn\r\n"\  "Content-Type: application/x-www-form-urlencoded\r\n\r\n";  char _HTTP_POST[] = _POST;  char _HTTP_File[1024] ={0};  cout << "提交HTTP协议头:" << _HTTP_ARAC << endl;  cout << "提交POST数据:" << _POST << endl;  HINTERNET Inte = InternetOpenA ("Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)", 1, "" ,"" ,0);    //初始化Wininet并创建一个HTTP连接  if(0 == Inte){  InternetCloseHandle(Inte);  cout << "error InternetOpen" << endl;  }  HINTERNET Connect = InternetConnectA (Inte, _COM,PORT, "","" , 3, 0, 0);    //请求与网站连接  if(0 == Connect){  InternetCloseHandle(Inte);  InternetCloseHandle(Connect);  cout << "error InternetConnect" << endl;  }  HINTERNET HttpOpen = HttpOpenRequestA (Connect, "POST", _COM_URL, "HTTP/1.1", NULL,NULL,1, 0);  //向网站服务器发送请求页面  if(0 == HttpOpen){  InternetCloseHandle(Inte);  InternetCloseHandle(Connect);  InternetCloseHandle(HttpOpen);  cout << "error HttpOpenRequest" << endl;  }  bool bo = HttpSendRequestA(HttpOpen, _HTTP_ARAC, strlen(_HTTP_ARAC), _HTTP_POST, strlen (_HTTP_POST));  //向网站服务器发送请求HTTP协议和POST请求数据  if(bo == false){  InternetCloseHandle(Inte);  InternetCloseHandle(Connect);  InternetCloseHandle(HttpOpen);  cout << "error HttpSendRequest" << endl;  }  DWORD y = 0;  if(!InternetReadFile (HttpOpen, _HTTP_File, 1024, &y)){    //获取HTTP响应消息  InternetCloseHandle(Inte);  InternetCloseHandle(Connect);  InternetCloseHandle(HttpOpen);  cout << "error InternetReadFile" << endl;  }else{  printf("%s",_HTTP_File);    //打印得到的响应消息  }  getchar();  return 0;
}  
运行效果:

可以看到返回的汉字信息是乱码英文却不是乱码,从返回的HTTP协议头中看到返回的编码格式是“utf-8" 我们计算机处理汉字时使用的编码时GB2312编码格式所以我们要将服务器返回的HTTP响应信息转换成GB2312编码格式,转换库推荐使用iconv库!

下面是转换后的信息:

<?xml version="1.0" encoding="utf-8"?>
<root><![CDATA[登录失败,您还可以尝4次 script type="text/javascript" reload="1">if(typeof errorhandle_=='function') {errorhandle_('登录失败,您还可以尝4次 , {'loginperm':'1'});}</script>]]></root>?p

密码是随便输入的,所以提示的错误信息,如果不会Wininet库没关系后面我将写一篇文章来详细讲解Wininet库接口函数的详细说明资料

C++通过Wininet库提交POST信息登录到PHPChina中文开发者社区相关推荐

  1. c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区

    这篇文章讲述如何利用C++编写一个自动登陆到PHPChina中文开发者社区的程序! 首先需要工具: 1.IE 2.HttpWatch 3.C/C++集成开发环境 1.首先打开IE然后在IE上方的地址栏 ...

  2. 使用HTML通过POST方法来登录到PHPChina中文开发者社区

    HttpWatch的抓包过程/C/C++ TCP/IP协议提交方式可参见:c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区 C++通过Wininet库提交方式可参见: C ...

  3. ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面-阿里云开发者社区...

    一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的设置 (1)设置第一个控制器和自定义的控制器类(登 ...

  4. C#网页自动登录和提交POST信息的多种方法

    网页自动登录和提交POST信息的核心就是分析网页的源代码(HTML),在C#中,可以用来提取网页HTML的组件比较多,常用的用WebBrowser.WebClient.HttpWebRequest这三 ...

  5. 解决git提交敏感信息(回退git版本库到某一个commit)

    解决git提交敏感信息(回退git版本库到某一个commit) Fri 07 June 2013 git是一个很好的版本库, 现在很多人用它, 并在github上创建项目, 相信大家都有过将敏感信息提 ...

  6. 您即将提交的信息不安全

    一.概述 今天早上,客户反馈网站登录,提示: 大概意思就是http访问不安全,需要升级为https访问才行. 注意:这个是谷歌浏览器的提示,其他浏览器不存在这个问题. 二.解决 原配置如下: serv ...

  7. WinInet库之FTP通信

    // 文件传输协议(File Transfer Protocol,简称FTP)用在互联网上文件的双向传输,是主用于文件的上传和下载处理的协议. // 上传是指将文件从本地计算机中复制到远程主机上.下载 ...

  8. WinInet库之Http通信

    // 超文本传输协议(HyperText Transfer Protocol)是互联网上应用最广泛的协议,主要是用于网页的浏览. // HTTP采用了请求-应答模式,也就是俗称的客户端/服务器模型,简 ...

  9. python操作文件的库_Python使用pyshp库读取shapefile信息的方法

    通过pyshp库,可以读写Shapefile文件,查询相关信息,github地址为 https://github.com/GeospatialPython/pyshp#reading-shapefil ...

最新文章

  1. python 使用yield进行数据的流式处理
  2. 优秀ASP.NET程序员修炼之路
  3. java ueditor 图片上传加水印_Ueditor编辑器上传图片加水印【亲测可用】-帝国CMS整合...
  4. 2013年长沙网络赛G题
  5. 2021牛客OI赛前集训营-提高组(第五场)C-第K排列【dp】
  6. 摩拜不死,已入美团!
  7. 小班安全使用计算机教案,小班教案安全用电
  8. android studio降版本,Mac下Android Studio完美从2.2.2降级到2.1.3正式版方案
  9. 网站项目常用JS,CSS等控件插件
  10. windows上编译,使用libtorrent
  11. ictclas4j java_Paoding, Ik, Jeasy, Ictclas4j分词工具
  12. 全球变化生态学尔雅课答案
  13. windows2016安装AD域
  14. 二十三、正则表达式中的“r”含义
  15. TCGA数据库的利用(二)—— 数据处理
  16. php-ews发送邮件,node.js 基于 STMP 协议和 EWS 协议发送邮件
  17. @3-2 CCF 2020-12-2 期末预测之最佳阈值
  18. jdk1.8下载与安装教程(win10)超详细
  19. HackTheBox-baby interdimensional internet
  20. git 拉取所有远程分支

热门文章

  1. mvc jquery ajax分页实例,jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解,mvcpagerajax分页...
  2. android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化
  3. 启动和停止mysql服务器_MySQL服务器的启动与关闭方法
  4. vim php 配置文件,spacevimsetting
  5. easyexcel 在 设置标题_EasyExcel 自定义单元格式的问题。
  6. a - 数据结构实验之串一:kmp简单应用_Java程序员必会之数据结构与算法全梳理
  7. android 底部导航菜单_司机共创会前方拥堵!导航路线功能该怎么优化?
  8. 计算机原理考研题库,2022考研853计算机专业基础综合《计算机组成原理》复习笔记及考研真题题库.pdf...
  9. 地图选择器怎么用_简易数据分析 15 | Web Scraper 高级用法——CSS 选择器的使用....
  10. python五位回文数_蓝桥杯,特殊回文数,Python