C++通过Wininet库提交POST信息登录到PHPChina中文开发者社区
与上一篇教程文章“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中文开发者社区相关推荐
- c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区
这篇文章讲述如何利用C++编写一个自动登陆到PHPChina中文开发者社区的程序! 首先需要工具: 1.IE 2.HttpWatch 3.C/C++集成开发环境 1.首先打开IE然后在IE上方的地址栏 ...
- 使用HTML通过POST方法来登录到PHPChina中文开发者社区
HttpWatch的抓包过程/C/C++ TCP/IP协议提交方式可参见:c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区 C++通过Wininet库提交方式可参见: C ...
- ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面-阿里云开发者社区...
一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的设置 (1)设置第一个控制器和自定义的控制器类(登 ...
- C#网页自动登录和提交POST信息的多种方法
网页自动登录和提交POST信息的核心就是分析网页的源代码(HTML),在C#中,可以用来提取网页HTML的组件比较多,常用的用WebBrowser.WebClient.HttpWebRequest这三 ...
- 解决git提交敏感信息(回退git版本库到某一个commit)
解决git提交敏感信息(回退git版本库到某一个commit) Fri 07 June 2013 git是一个很好的版本库, 现在很多人用它, 并在github上创建项目, 相信大家都有过将敏感信息提 ...
- 您即将提交的信息不安全
一.概述 今天早上,客户反馈网站登录,提示: 大概意思就是http访问不安全,需要升级为https访问才行. 注意:这个是谷歌浏览器的提示,其他浏览器不存在这个问题. 二.解决 原配置如下: serv ...
- WinInet库之FTP通信
// 文件传输协议(File Transfer Protocol,简称FTP)用在互联网上文件的双向传输,是主用于文件的上传和下载处理的协议. // 上传是指将文件从本地计算机中复制到远程主机上.下载 ...
- WinInet库之Http通信
// 超文本传输协议(HyperText Transfer Protocol)是互联网上应用最广泛的协议,主要是用于网页的浏览. // HTTP采用了请求-应答模式,也就是俗称的客户端/服务器模型,简 ...
- python操作文件的库_Python使用pyshp库读取shapefile信息的方法
通过pyshp库,可以读写Shapefile文件,查询相关信息,github地址为 https://github.com/GeospatialPython/pyshp#reading-shapefil ...
最新文章
- python 使用yield进行数据的流式处理
- 优秀ASP.NET程序员修炼之路
- java ueditor 图片上传加水印_Ueditor编辑器上传图片加水印【亲测可用】-帝国CMS整合...
- 2013年长沙网络赛G题
- 2021牛客OI赛前集训营-提高组(第五场)C-第K排列【dp】
- 摩拜不死,已入美团!
- 小班安全使用计算机教案,小班教案安全用电
- android studio降版本,Mac下Android Studio完美从2.2.2降级到2.1.3正式版方案
- 网站项目常用JS,CSS等控件插件
- windows上编译,使用libtorrent
- ictclas4j java_Paoding, Ik, Jeasy, Ictclas4j分词工具
- 全球变化生态学尔雅课答案
- windows2016安装AD域
- 二十三、正则表达式中的“r”含义
- TCGA数据库的利用(二)—— 数据处理
- php-ews发送邮件,node.js 基于 STMP 协议和 EWS 协议发送邮件
- @3-2 CCF 2020-12-2 期末预测之最佳阈值
- jdk1.8下载与安装教程(win10)超详细
- HackTheBox-baby interdimensional internet
- git 拉取所有远程分支
热门文章
- mvc jquery ajax分页实例,jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解,mvcpagerajax分页...
- android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化
- 启动和停止mysql服务器_MySQL服务器的启动与关闭方法
- vim php 配置文件,spacevimsetting
- easyexcel 在 设置标题_EasyExcel 自定义单元格式的问题。
- a - 数据结构实验之串一:kmp简单应用_Java程序员必会之数据结构与算法全梳理
- android 底部导航菜单_司机共创会前方拥堵!导航路线功能该怎么优化?
- 计算机原理考研题库,2022考研853计算机专业基础综合《计算机组成原理》复习笔记及考研真题题库.pdf...
- 地图选择器怎么用_简易数据分析 15 | Web Scraper 高级用法——CSS 选择器的使用....
- python五位回文数_蓝桥杯,特殊回文数,Python