商都论坛注册

首先 手动填写基本信息 用fiddler抓包,以下是我抓取到的包:

POST http://bbs.shangdu.com/member.php?mod=register&inajax=1 HTTP/1.1

Host: bbs.shangdu.com


Content-Length: 882

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Origin: http://bbs.shangdu.com


User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.108 Safari/537.36

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryq93KiFJ912sRa7Sq

Referer: http://bbs.shangdu.com/member.php?mod=register



Cookie: Hm_lvt_4f74c3218ff97c494795cea8d2f10a40=1462942870,1462951123,1462954508,1463233698; Hm_lvt_a31c5a8056c7788a856ed77004e2ba43=1462942870,1462951123,1462954508,1463233698; k1Ei_2132_saltkey=EuN48KW4; k1Ei_2132_lastvisit=1463726573; k1Ei_2132_ulastactivity=a51eRH%2FTtwiDyh4SuHvY1xYJaGoB5Xm5%2B%2FSI87A31OqAJCJZFQzh; k1Ei_2132_lastcheckfeed=62255288%7C1463744558; k1Ei_2132_connect_is_bind=0; k1Ei_2132_sendmail=1; k1Ei_2132_sid=NE99j6; Hm_lvt_e33428a22cdc4a26ef34d4cd0e17d287=1463742564,1463745012,1463745063,1463746790; Hm_lpvt_e33428a22cdc4a26ef34d4cd0e17d287=1463746799; k1Ei_2132_lastact=1463746552%09forum.php%09ajax


------WebKitFormBoundaryq93KiFJ912sRa7Sq

Content-Disposition: form-data; name="regsubmit"


yes

------WebKitFormBoundaryq93KiFJ912sRa7Sq

Content-Disposition: form-data; name="formhash"


1ec6c6a7

------WebKitFormBoundaryq93KiFJ912sRa7Sq

Content-Disposition: form-data; name="referer"


http://bbs.shangdu.com/

------WebKitFormBoundaryq93KiFJ912sRa7Sq

Content-Disposition: form-data; name="activationauth"



------WebKitFormBoundaryq93KiFJ912sRa7Sq

Content-Disposition: form-data; name="uname"


helloworld

------WebKitFormBoundaryq93KiFJ912sRa7Sq

Content-Disposition: form-data; name="pword"


zx346422001

------WebKitFormBoundaryq93KiFJ912sRa7Sq

Content-Disposition: form-data; name="rword"


zx346422001

------WebKitFormBoundaryq93KiFJ912sRa7Sq

Content-Disposition: form-data; name="mymail"


2356706119@qq.com

------WebKitFormBoundaryq93KiFJ912sRa7Sq--



首先来了解什么是multipart/form-data请求:

根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢?这就要从头来说了。


http协议大家都知道是规定了以ASCII码传输,建立在tcp、ip协议之上的应用层规范,规范内容把http请求分为3个部门:状态行,请求头,请求体。所有的方法、实现都是围绕如何运用和组织这三部分来完成的。换句话来说就是万变不离其中,只要我们了解了http请求的组成部分后,自然就可以应变任何实际工作中的需求和问题了。

关于状态行,请求头,请求体等三部分的具体内容,大家可以参考官方的协议文档http://www.faqs.org/rfcs/rfc2616.html,这里主要分析multipart/form-data请求具体是怎么一回事。


既然http协议本身的原始方法不支持multipart/form-data请求,那这个请求自然就是由这些原始的方法演变而来的,具体如何演变且看下文:

1、multipart/form-data的基础方法是post,也就是说是由post方法来组合实现的

2、multipart/form-data与post方法的不同之处:请求头,请求体。

3、multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,且其值也必须规定为multipart/form-data,同时还需要规定一个内容分割符用于分割请求体中的多个post的内容,如文件内容和文本内容自然需要分割开来,不然接收方就无法正常解析和还原这个文件了。具体的头信息如下:

[html]  view plain  copy
  1. Content-Type: multipart/form-data; boundary=${bound}      

//其中${bound} 是一个占位符,代表我们规定的分割符,可以自己任意规定,但为了避免和正常文本重复了,尽量要使用复杂一点的内容。如:--------------------56423498738365


4、multipart/form-data的请求体也是一个字符串,不过和post的请求体不同的是它的构造方式,post是简单的name=value值连接,而multipart/form-data则是添加了分隔符等内容的构造体。具体格式如下:

[html]  view plain  copy
  1. --${bound}  
  2. Content-Disposition: form-data; name="Filename"  
  3.   
  4. HTTP.pdf  
  5. --${bound}  
  6. Content-Disposition: form-data; name="file000"filename="HTTP协议详解.pdf"  
  7. Content-Type: application/octet-stream  
  8.   
  9. %PDF-1.5  
  10. file content  
  11. %%EOF  
  12.   
  13. --${bound}  
  14. Content-Disposition: form-data; name="Upload"  
  15.   
  16. Submit Query  
  17. --${bound}--  
其中${bound}为之前头信息中的分割符,如果头信息中规定为123,那么这里也要为123,;可以很容易看出,这个请求体是多个相同的部分组成的:每一个部分都是以--加分隔符开始的,然后是该部分内容的描述信息,然后一个回车,然后是描述信息的具体内容;如果传送的内容是一个文件的话,那么还会包含文件名信息,以及文件内容的类型。上面的第二个小部分其实是一个文件体的结构,最后会以--分割符--结尾,表示请求体结束。

然后,将需要提交的数据写入到字符串中
string data = "------WebKitFormBoundary0mBvXuAVQByIwhVr\r\n";
data += "Content-Disposition: form-data; name=\"regsubmit\"\r\n\r\n";
data += "yes\r\n";
data += "------WebKitFormBoundary0mBvXuAVQByIwhVr\r\n";
data += "Content-Disposition: form-data; name=\"formhash\"\r\n\r\n";
data += "1ec6c6a7\r\n";
data += "------WebKitFormBoundary0mBvXuAVQByIwhVr\r\n";
data += "Content-Disposition: form-data; name=\"referer\"\r\n\r\n";
data += "http://bbs.shangdu.com/\r\n";
data += "------WebKitFormBoundary0mBvXuAVQByIwhVr\r\n";
data += "Content-Disposition: form-data; name=\"activationauth\"\r\n\r\n\r\n";
data += "------WebKitFormBoundary0mBvXuAVQByIwhVr\r\n";
data += "Content-Disposition: form-data; name=\"uname\"\r\n\r\n";
data += "helloworld\r\n";
data += "------WebKitFormBoundary0mBvXuAVQByIwhVr\r\n";
data += "Content-Disposition: form-data; name=\"pword\"\r\n\r\n";
data += "zx346422001\r\n";
data += "------WebKitFormBoundary0mBvXuAVQByIwhVr\r\n";
data += "Content-Disposition: form-data; name=\"rword\"\r\n\r\n";
data += "zx346422001\r\n";
data += "------WebKitFormBoundary0mBvXuAVQByIwhVr\r\n";
data += "Content-Disposition: form-data; name=\"mymail\"\r\n\r\n";
data += "2356706119@qq.com\r\n";
data += "------WebKitFormBoundary0mBvXuAVQByIwhVr--\r\n";

WinHttpClient client(L"http://bbs.shangdu.com/member.php?mod=register&inajax=1");

client.SetAdditionalDataToSend((BYTE*)data.c_str(), data.size());

wchar_t szSize[50] = L"";
swprintf_s(szSize, L"%d", data.size());
wstring headers = L"Content-Length: ";
headers += szSize;
headers += L"\r\nContent-Type: multipart/form-data; boundary=----WebKitFormBoundary0mBvXuAVQByIwhVr";

headers += L"\r\nReferer: http://bbs.shangdu.com/member.php?mod=register";
//headers += L"Cookie: Hm_lvt_4f74c3218ff97c494795cea8d2f10a40=1462942870,1462951123,1462954508,1463233698; Hm_lvt_a31c5a8056c7788a856ed77004e2ba43=1462942870,1462951123,1462954508,1463233698; k1Ei_2132_saltkey=EuN48KW4; k1Ei_2132_lastvisit=1463726573; k1Ei_2132_ulastactivity=a51eRH%2FTtwiDyh4SuHvY1xYJaGoB5Xm5%2B%2FSI87A31OqAJCJZFQzh; k1Ei_2132_connect_is_bind=0; k1Ei_2132_sendmail=1; k1Ei_2132_sid=X46073; Hm_lvt_e33428a22cdc4a26ef34d4cd0e17d287=1463233697,1463730446,1463730832,1463742564; Hm_lpvt_e33428a22cdc4a26ef34d4cd0e17d287=1463742570; k1Ei_2132_lastact=1463742370%09forum.php%09ajax";

client.SetAdditionalRequestCookies(L"Hm_lvt_4f74c3218ff97c494795cea8d2f10a40=1462942870,1462951123,1462954508,1463233698; Hm_lvt_a31c5a8056c7788a856ed77004e2ba43=1462942870,1462951123,1462954508,1463233698; k1Ei_2132_saltkey=EuN48KW4; k1Ei_2132_lastvisit=1463726573; k1Ei_2132_ulastactivity=a51eRH%2FTtwiDyh4SuHvY1xYJaGoB5Xm5%2B%2FSI87A31OqAJCJZFQzh; k1Ei_2132_connect_is_bind=0; k1Ei_2132_sendmail=1; k1Ei_2132_sid=X46073; Hm_lvt_e33428a22cdc4a26ef34d4cd0e17d287=1463233697,1463730446,1463730832,1463742564; Hm_lpvt_e33428a22cdc4a26ef34d4cd0e17d287=1463742570; k1Ei_2132_lastact=1463742370%09forum.php%09ajax");

client.SetAdditionalRequestHeaders(headers);

client.SetUserAgent(L"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.108 Safari/537.36");


client.SendHttpRequest(L"POST");

wstring httpResponseHeader = client.GetResponseHeader();
wstring httpResponseContent = client.GetResponseContent();
         
      在httpResponseContent 中查找  “感谢您注册”,找到了说明注册成功。
代码下载地址:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值