503: Service Unavailable
503: Service Unavailable
访问太频繁了,服务器要炸。VC提交网页表单-自动评论留言
我的图书馆
VC提交网页表单-自动评论留言
前段时间,仔细看了一个HTTP协议于是就写了这样一个自动评论的测试程序,下面是我本次学习实验的学习笔记:
一、准备工作:
1、本机环境:Windows XP SP3、ADSL 10M光纤
2、开发工具:WildPackets OmniPeek V5.1.4
&&&&&&&&&&&&&&&&&&& Visual C++ 6.0
&&&&&&&&&&&&&&&&&&& Netpas八匹马免费***代理(避免查封IP)
&&&&&&&&&&&&&&&&&&& FlexEdit V2.3.1871 (临时保持文本)
3、网页程序: LBS Version 2.0.313
二、分析数据包:
1、打开LBS V2.0.313博客程序,可以看到如下评论处(先找找没有验证码的吧!)
2、设置OmniPeek 过滤类型:
3、点击开始抓包后,先手动评论一次即可捕获到数据包,有用的实际只有如下红色两条:
4、&实际原始数据包内容:
5、被OmniPeek解析后,查看如下内容:
6、只看前三个与后三个字段,我们可以分析得到,该评论实际上就是
&&&& POST& /blog/comment/asp?act=save&logid=3567& HTTP/1.1
&&&& e_ubb=true&e_autourl=true&e_smilies=true&comm_username=%E5%A4%A9%E4%BD%
BF&comm_password=&message=www.******.
&&&& 分析完毕,于是就开始准备用SOCKET套接字POST数据包啦!
前面分析完毕了,现在就开始写代码吧:
网上用SOCKET、CHttpFile类等编写VC向网页POST表单的代码多如牛毛,但大多都是大家转来转去的,也没有去实践一下,到头来只会误导初学者,这里是我从头到尾的笔记,希望给友友们帮助,以免走不必要的弯路......
(本文代码中的真实网页地址已用星号或马赛克隐藏,以避免不法份子用来恶意使用!本程序仅供学习交流,对于该站站长我深标歉意,请手动删除我发表的五条评论吧!)
/************************************************************************//* 利用SOCKET套接字,实现自动POST表单及评论留言/* /* by Koma
0:30/* /************************************************************************/#include "stdafx.h"#include "stdio.h" #include "winsock2.h"&& #pragma&& comment(lib,"ws2_32.lib")&&
int main(int argc, char* argv[]){&SOCKADDR_IN&saS&LPHOSTENT&&WSADATA&&&SOCKET&&&&int&&nR&char*&& host_name="";&char*&& req=&&"POST /blog/comment.asp?act=save&logid=3560 HTTP/1.0/r/n"&&"Accept:&& image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/QVOD, application/QVOD, */*/r/n"&&"Referer:&& "&&"Accept-Language:&& zh-cn/r/n"&&"Content-Type:&& application/x-www-form-urlencoded/r/n"&&"Accept-Encoding:&& gzip, deflate/r/n"&&"User-Agent:&& Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; POTU(RR::5497353); SV1; Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; CIBA)/r/n"&& &&"Host:&& "&&"Content-Length:&& 114/r/n"&&"Connection:&& Keep-Alive/r/n"&&"Cookie:&& babyhashkey=; babyuserid=; ASPSESSIONIDACBRSQBC=AFHPMPGBBCGPDDDNEDKGJHEJ/r/n/r/n"&&"e_ubb=true&e_autourl=true&e_smilies=true&comm_username=%E5%A4%A9%E4%BD%BF&comm_password=&message=www.******.";&
&// 初始化套接字&if(WSAStartup(MAKEWORD(2,2),&wsadata))&& &&printf("初始化SOCKET出错!");
&lphostent=gethostbyname(host_name);&& &if(lphostent==NULL)&& &&printf("lphostent为空!");&hsocket&& =&& socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);&& &saServer.sin_family = AF_INET;&& &saServer.sin_port = htons(80);&& &saServer.sin_addr = *((LPIN_ADDR)*lphostent-&h_addr_list);
&// 利用SOCKET连接&nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(SOCKADDR_IN));&& &if(nRet == SOCKET_ERROR)&& &{&& &&printf("建立连接时出错!");&& &&closesocket(hsocket);&& &&return 0;&& &}
&// 利用SOCKET发送&nRet = send(hsocket,req,strlen(req),0);&if(nRet==SOCKET_ERROR)&{&&printf("发送数据包时出错!");&&closesocket(hsocket);&}
&char&& Dest[3000];&& &nRet=1;&& &while(nRet&0)&& &{&&// 接收返回数据包&&nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);&& &&if(nRet&0)&& &&&Dest[nRet]=0;&& &&else&& &&&Dest[0]=0;
&&// 显示返回数据包的大小、内容&&printf("/nReceived&& bytes:%d/n",nRet);&& &&printf("Result:/n%s",Dest);&& &}&return 0;}
/************************************************************************/
/* 利用SOCKET套接字,实现自动POST表单及评论留言
/* by Koma
/* http://blog.csdn.net/wangningyu
/************************************************************************/
#include "stdafx.h"
#include "stdio.h"
#include "winsock2.h"
comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
SOCKADDR_IN saS
host_name="www.******.com";
"POST /blog/comment.asp?act=save&logid=3560 HTTP/1.0/r/n"
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/QVOD, application/QVOD, */*/r/n"
http://www.******.com/blog/article.asp?id=3560/r/n"
"Accept-Language:
zh-cn/r/n"
"Content-Type:
application/x-www-form-urlencoded/r/n"
"Accept-Encoding:
gzip, deflate/r/n"
"User-Agent:
Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; POTU(RR::5497353); SV1; Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; CIBA)/r/n"
www.******.com/r/n"
"Content-Length:
"Connection:
Keep-Alive/r/n"
babyhashkey=; babyuserid=; ASPSESSIONIDACBRSQBC=AFHPMPGBBCGPDDDNEDKGJHEJ/r/n/r/n"
"e_ubb=true&e_autourl=true&e_smilies=true&comm_username=%E5%A4%A9%E4%BD%BF&comm_password=&message=www.******.";
// 初始化套接字
if(WSAStartup(MAKEWORD(2,2),&wsadata))
printf("初始化SOCKET出错!");
lphostent=gethostbyname(host_name);
if(lphostent==NULL)
printf("lphostent为空!");
socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
saServer.sin_family = AF_INET;
saServer.sin_port = htons(80);
saServer.sin_addr = *((LPIN_ADDR)*lphostent-&h_addr_list);
// 利用SOCKET连接
nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(SOCKADDR_IN));
if(nRet == SOCKET_ERROR)
printf("建立连接时出错!");
closesocket(hsocket);
// 利用SOCKET发送
nRet = send(hsocket,req,strlen(req),0);
if(nRet==SOCKET_ERROR)
printf("发送数据包时出错!");
closesocket(hsocket);
Dest[3000];
while(nRet&0)
// 接收返回数据包
nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);
if(nRet&0)
Dest[nRet]=0;
Dest[0]=0;
// 显示返回数据包的大小、内容
printf("/nReceived
bytes:%d/n",nRet);
printf("Result:/n%s",Dest);
程序运行效果:
当然,你POST的数据包受影响的因素也有很多,比如本地带宽、服务器性能等都会造成延时,所以如果想深入了解,需要掌握的知识则需要更多!
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢