C++实现模拟登录---发送post表单信息包
来源:互联网 发布:数据制作包视频教程 编辑:程序博客网 时间:2024/05/17 00:57
测试网址为:http://www.exam8.com/
测试网址ip:222.73.24.32
测试帐号:lzh_2
密码: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 20480using 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://user.exam8.com/user_login.asp"); 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: user.exam8.com\r\n");strcat(sndBuf, "Content-Length: 61\r\n");strcat(sndBuf, "Connection: Keep-Alive\r\n");strcat(sndBuf, "Cache-Control: no-cache\r\n");strcat(sndBuf, "Cookie: Hm_lvt_80e97646f045b0632f81239c03c83492=1415795254,1415797440; 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; CNZZDATA89268=cnzz_eid%3D1936228237-1415277587-http%253A%252F%252Fuser.exam8.com%252F%26ntime%3D1415871209; ASPSESSIONIDAARTBSDT=AGDHGJFCMKBDAGLGHINHACEN\r\n");strcat(sndBuf, "\r\n");strcat(sndBuf, "Action=login&LoginUserName=lzh_2&LoginUserPassword=123456789&");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的存储空间减小,则分几次copyif(sum>0){puts("OK!"); printf("%s",rcvBuf);}puts("\nread success!\n");closesocket(s);system("pause");WSACleanup();return 0;}
运行结果:
1.发送信息
2.发送成功返回信息:
3.登录成功返回信息:
4.输入错误的用户名或密码:
3 0
- C++实现模拟登录---发送post表单信息包
- C++实现申请帐号---发送post提交表单信息包
- C#(WINFORM)实现模拟POST发送请求登录网站
- PHP模拟表单的post请求实现登录
- php+Angularjs 实现Post 提交表单 模拟登录
- IOS 模拟表单 post发送二进制文件
- 模拟发送POST请求,提交表单
- C#模拟http 发送post请求 模拟登录
- C#.net模拟提交表单POST
- C#.net模拟提交表单GET、POST
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C语言生成螺旋矩阵
- 162 有2个数组,里面有 N 个整数,看是否两个数组里存在一个同样的数
- Java配置环境变量classpath(针对bug:找不到或无法加载主类)
- Eclipse使用
- 二叉排序树
- C++实现模拟登录---发送post表单信息包
- Hadoop平台优化综述
- 162 3. 让你排序N个比N^7小的数,要求的算法是O(n)
- Hadoop之YARN相关知识点汇总
- SUSE Cloud 2.0 安装部署图文详解
- ubuntu编译安卓5.0源码小记
- hdu 4302 Holedox Eating
- vim中自动添加注释 添加文本信息
- 数字游戏 博弈 连分数