C++实现申请帐号---发送post提交表单信息包

测试网址为:http://www.exam8.com/

测试网址ip:222.73.24.32

测试帐号:lzh_5

密码:123456789

首先要确定提交表单的信息,我用抓包工具抓了post的包,然后写程序模拟发送过程,实现了登录过程。

注意事项:

1.一定要按照抓包的信息发送,甚至空格、换行数都要一样;

2.模拟登录的网页没有验证码;

代码:

//post提交表单申请帐号
#include<stdio.h>
#include<string>
#include<winsock2.h>
#include<windows.h>
#include<iostream>
#include<fstream>
#pragma comment(lib, "ws2_32.lib")

#define max 20480

using namespace std;

int main()
{
	int num,sum;

	SOCKET s;
	WSADATA wsa;
	struct sockaddr_in serv;

	char sndBuf[max], rcvBuf[max];

	WSAStartup(MAKEWORD(2, 1), &wsa);

	if ((s = socket(AF_INET, SOCK_STREAM, 0))<0)
	{
		perror("socket error!");
		exit(1);
	}

	memset(&serv,0,sizeof(serv));
	serv.sin_family = AF_INET;
	serv.sin_port = htons(80);
	//serv.sin_addr.s_addr = *((int*)*host_addr->h_addr_list);
	serv.sin_addr.S_un.S_addr = inet_addr("222.73.24.32");

	if ((connect(s, (struct sockaddr *)&serv, sizeof(serv)))<0)
	{
		perror("connet error!");
		exit(1);
	}

	memset(sndBuf, 0, max);
	memset(rcvBuf, 0, max);

	//头信息
    strcat(sndBuf, "POST ");
    strcat(sndBuf, "/inc/Check.asp HTTP/1.1\r\n");
    strcat(sndBuf, "x-requested-with: XMLHttpRequest\r\n");
	strcat(sndBuf, "Accept-Language: zh-cn\r\n");
    strcat(sndBuf, "Referer: http://reg.exam8.com/");
    strcat(sndBuf, "\r\n");
	strcat(sndBuf, "Accept: */*\r\n");
	strcat(sndBuf, "Content-Type: application/x-www-form-urlencoded\r\n");
	strcat(sndBuf, "Accept-Encoding: gzip, deflate\r\n");
	strcat(sndBuf, "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; eSobiSubscriber 1.0.0.40; MAAR; .NET4.0C; .NET4.0E; Maxthon/3.0)\r\n");
	strcat(sndBuf, "Host: reg.exam8.com\r\n");
	strcat(sndBuf, "Content-Length: 149\r\n");
	strcat(sndBuf, "Connection: Keep-Alive\r\n");
	strcat(sndBuf, "Cache-Control: no-cache\r\n");
	strcat(sndBuf, "Cookie: referrer=http%3A//www.baidu.com/s%3Fwd%3D%25e8%2580%2583%25e8%25af%2595%25e5%2590%25a7%26rsv_spt%3D1%26issp%3D1%26f%3D3%26rsv_bp%3D0%26rsv_idx%3D2%26ie%3Dutf-8%26tn%3Dmaxthon2%26rsv_sug3%3D3%26rsv_sug4%3D126%26rsv_sug1%3D1%26oq%3Dkaoshi%26rsp%3D0%26rsv_sug5%3D0; Hm_lvt_80e97646f045b0632f81239c03c83492=1415795254,1415797440,1415889057; ASPSESSIONIDAAQSATDS=LHOBCKMCKEKNEBEHLLHMPHAB\r\n");
	strcat(sndBuf, "\r\n");
	strcat(sndBuf, "ComeUrl=http%3A//\r\n");
	strcat(sndBuf, "user.exam8.com&RegUserName=lzh_5&RegUserPassword=123456789&RegPwdConfirm=123456789&[email protected]&checkbox1=&Action=reg");

	puts(sndBuf);

	if ((num = send(s,sndBuf,max, 0))<0)
    {
		perror("send error!");
		exit(1);
	}

	puts("send success!\n");

	sum = recv(s, rcvBuf, max-1, 0);//如果rcvBuf的存储空间减小,则分几次copy

	if(sum>0)
	{
		puts("OK!");
		printf("%s",rcvBuf);
	}

	puts("\nread success!\n");

	closesocket(s);

	system("pause");
	WSACleanup();

	return 0;

}

运行结果:

1.提交给网站的表单信息

2.网页的返回信息

3.申请成功后返回信息

4.在此运行此程序返回信息

时间: 2024-10-12 12:18:00

C++实现申请帐号---发送post提交表单信息包的相关文章

jquery实现ajax提交表单信息

最近在思考优化项目,想自己扩展一个jquery自动获取表单中的数据进行ajax提交.本人没有完整性学习jquery,基本上是现学现找,有点困难. 主要是扩展和拼接json转对象 很简单,附上代码: ; (function ($) { $.fn.ajaxForm = function (options) { var defaults = { modelname: 'model',//后台对象接收名称 url: '/',//提交地址 postType: 'POST',//提交方式 dataType:

第一百八十六节,jQuery,验证表单插件,Ajax 表单插件,验证和提交表单

jQuery,验证表单插件,Ajax 表单插件,验证和提交表单 HTML <form id="reg" method="post" action="yzh.php" title="会员注册"> <ol class="reg_error"></ol> <p> <label for="user">帐号:</label>

js日期/时间比较函数,以及js校验表单后提交表单的三种方法,表单验证,以及三种结合

<pre class="html" name="code"> js日期比较(yyyy-mm-dd) function duibi(a, b) { var arr = a.split("-"); var starttime = new Date(arr[0], arr[1], arr[2]); var starttimes = starttime.getTime(); var arrs = b.split("-");

php中提交表单数据的POST()方法和GET()方法

提交获取表单数据是表单应用中最常用的操作,经常需要PHP后台从前台页面中获取用户在前台表单页面中提交的各种数据.表单数据传递的方式有以下的两种方法,一种为POST()方法,另外一种为GET()方法.具体采用哪种获取数据的方法是由<form>表单的 method 属性所指定的,下面讲解这两种方法在 Web 表单中的具体应用.大理石平台厂家 使用POST()方法提交表单 在使用POST()方法时,只需要将<form>表单中的属性 method 设置成POST即可. POST()方法不依

使用jQuery实现跨域提交表单数据

我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题.本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据. 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类型.使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面.服务器端应当在JSON数据前加上回调函数名,以便

提交表单详解

阅读目录 简单的表单,简单的处理方式 表单提交,成功控件 多提交按钮的表单 上传文件的表单 MVC Controller中多个自定义类型的传入参数 F5刷新问题并不是WebForms的错 以Ajax方式提交整个表单 以Ajax方式提交部分表单 使用JQuery,就不要再拼URL了! id, name 有什么关系 使用C#模拟浏览器提交表单 资源链接 Form(表单)对于每个WEB开发人员来说,应该是再熟悉不过的东西了,可它却是页面与WEB服务器交互过程中最重要的信息来源. 虽然Asp.net W

在javascript中关于submit和button提交表单区别

原文:在javascript中关于submit和button提交表单区别 原文来自:http://www.jb51.net/article/42236.htm submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上. 1. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成button,即取消其自动提交的

Mvc 提交表单的4种方法全程详解

一,MVC  HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttributes){} BeginRouteForm 方法 (HtmlHelper, String, Object, FormMethod) 二,传统Form表单Aciton属性提交 三,Jquery+Ajax 提交表单 四,MVC Controller控制器和表单参数传递 MVC  HtmlHelper方法 一,Html.BeginForm(act

关于ajax提交表单

今天主要是四个问题: 1.表单页面元素的获取: 2.按钮的值的获取: 3.按钮的值以变量提交: 4.表单的提交: 获取表单元素时用的是事件委托的方法.{犯的错误:1.用获取表格父级元素的方法获取,没有意识到表单的值是填在value里面的,而表格里面的值直接在th容器里填的 2.在考虑父级元素时没有考虑到它所有的容器都属于他的父级元素