首页
社区
课程
招聘
QQ批量[注册]源码,绝非模拟,挑战SendRequest[求大神进入]
发表于: 2013-10-5 15:00 23628

QQ批量[注册]源码,绝非模拟,挑战SendRequest[求大神进入]

2013-10-5 15:00
23628
第一步 获取验证码图片地址
http://captcha.qq.com/getimage?a ... 0.13545262328517488

第二步  获取 sessionCookie  和machinecookie  以及地区
http://zc.qq.com/cgi-bin/chs/numreg/init?r=0.46001003

第三步 获取注册
http://zc.qq.com/cgi-bin/chs/numreg/get_acc?r=0.9412140433

正常情况将会返回我注册的QQ,但是现在的问题是 每次都返回

{"ec":26,"em":"need upsms verify"}

请大牛指点下问题到底出在哪里?

以下附上我的源代码

BOOL WINAPI DNFREG_POST_REG_ALL(CString verifyCode,CString NicName,CString Pass)
{
	//ACCEPT类型
	static LPCTSTR szAccept[2] = {_T(" */*"), NULL};

	//HTTP版本
	static LPCTSTR http11 = _T("HTTP/1.1");

	//proxy
	static LPCTSTR httpmsg =_T("http=");

	//请求地址
	static LPCTSTR HTTP_Host =_T("zc.qq.com");



	HINTERNET	hSession;   
	HINTERNET   hConnect;   
	HINTERNET   hRequest;   
	BOOL		bReturn	 = FALSE;
	CString     tmpRndstr;

	//访问地址
	CString     URL;     

	//发送的数据
	CString     szFormData;

		//附加协议头
	CStringA		fujiaxieyitou;

	//保存获取的HEAD头的指针
	LPVOID 		lpOutBuffer=NULL;
	DWORD  		dwSize     = 0;

	//返回数据用的变量指针
	int 		nIndex;
	TCHAR 		*ptvfsession= NULL;

	//返回数据的内容
	DWORD       dwTmp;
	WCHAR       szContent[0x5000] = {0};

	//表单转化数据
	LPVOID     pBuf = NULL;
	char       *pTempBuf = NULL;

	CString mCity;
	CString cityid;
	CString	countryid;
	CString	elevel;
	CString	provinceid;


	//初始化随机
	srand(GetTickCount());



	//初始化
	sessionCookie.Empty();
	machineCookie.Empty();
  

	//1.求取sessionCookie 获取所在地-----------------------------------

	tmpRndstr.Format(_T("%d%d%d"),rand()%10000,rand()%99999,rand()%99999);
	URL = _T("/cgi-bin/chs/numreg/init?r=0.46001003")+ tmpRndstr.Left(8) + _T("&cookieCode=undefined");

	//建立请求
	hRequest = HttpOpenRequest(hConnect,_T("GET"),URL.GetBuffer(0),NULL,NULL,szAccept,INTERNET_FLAG_DONT_CACHE,1);

	URL.ReleaseBuffer();//释放URL数据

	//发送请求
	bReturn = HttpSendRequest(hRequest,NULL,0,0,0);
	if(!bReturn)
	{
		DWORD dwError = GetLastError();
		MessageBox(0,_T("获取登陆验证失败!"),_T("提示"),MB_ICONERROR | MB_OK);
		return FALSE;
	}

	//使用HTTP_QUERY_SET_COOKIE只能获取第一个,但是有用的是第二个,这里直接获取整个Head
	HttpQueryInfo(hRequest,HTTP_QUERY_RAW_HEADERS_CRLF,(LPVOID)lpOutBuffer,&dwSize,NULL);
	if (GetLastError()==ERROR_HTTP_HEADER_NOT_FOUND)
	{
		AfxMessageBox(_T("获取登陆验证失败!"));
		InternetCloseHandle(hRequest);
		InternetCloseHandle(hConnect);
		InternetCloseHandle(hSession);
		return FALSE;
	}
	else
	{
		if (GetLastError()==ERROR_INSUFFICIENT_BUFFER)
		{
			lpOutBuffer = new char[dwSize];
			HttpQueryInfo(hRequest,HTTP_QUERY_RAW_HEADERS_CRLF,(LPVOID)lpOutBuffer,&dwSize,NULL);
		}
	}
 
	//查找sessionCookie
	nIndex = UnicodeMemFind((const wchar_t *)lpOutBuffer,_T("sessionCookie"),dwSize,0);
	if (nIndex != -1)
	{
		sessionCookie = MySubstr((TCHAR*)lpOutBuffer,nIndex+15,48);
		TSS(_T("获取sessionCookie 成功"));
		TSS(sessionCookie);
	}
	else
	{
		TSS(_T("获取sessionCookie 失败"));
		TSS(sessionCookie);
		delete []lpOutBuffer;
		return FALSE;
	}

 
	delete []lpOutBuffer;


	//读取内容,显示一下
	InternetReadFile(hRequest,szContent,1000,&dwTmp);
	TSS(_T("获取地区完成"));
	mCity =UTF8ToGB((char*)szContent); 
	TSS(mCity); 
 
	WCHAR douhao[2] = {0x22,0x00};
	mCity.Replace(douhao,_T(""));
	mCity.Replace(_T("{"),_T(""));
	mCity.Replace(_T("}"),_T(""));
	mCity.MakeLower();
	 

 
	 CString tmpstr;

	 split(mCity,_T(","));

	 int iPos = ArrRet.GetCount();
	 int tmpPos = 0;
	 for (int i=0;i<iPos;i++)
	 {
		tmpstr = ArrRet[i];
		
		tmpPos = tmpstr.Find(_T("cityid"));
		 if (tmpPos>=0)
		 {
			cityid = tmpstr.Mid(7,tmpstr.GetLength() - tmpPos);
			//AfxMessageBox(cityid);
		 }

		 tmpPos = tmpstr.Find(_T("countryid"));
		 if (tmpPos>=0)
		 {
			 countryid = tmpstr.Mid(10,tmpstr.GetLength() - tmpPos);
			// AfxMessageBox(countryid);
		 }

		 tmpPos = tmpstr.Find(_T("elevel"));
		 if (tmpPos>=0)
		 {
			 elevel = tmpstr.Mid(7,tmpstr.GetLength() - tmpPos);
			// AfxMessageBox(elevel);
		 }


		 tmpPos = tmpstr.Find(_T("provinceid"));
		 if (tmpPos>=0)
		 {
			 provinceid = tmpstr.Mid(11,tmpstr.GetLength() - tmpPos);
			//AfxMessageBox(provinceid);
		 }
	 }

	 if (cityid==L"")
	 {
		 cityid = _T("1");
	 }
	 if (countryid==L"")
	 {
		 countryid = _T("1");
	 }
	 if (elevel==L"")
	 {
		 elevel = _T("1");
	 }
	 if (provinceid==L"")
	 {
		 provinceid = _T("23");
	 }

	//关闭当前请求
	InternetCloseHandle(hRequest);
	InternetCloseHandle(hConnect);
	InternetCloseHandle(hSession);



	hSession = InternetOpen(_T("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"),INTERNET_OPEN_TYPE_DIRECT,httpmsg,httpmsg,0);
	hConnect = InternetConnect(hSession,_T("zc.qq.com"),INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1);
	//2.昵称检测-----------------------------------------------------

	tmpRndstr.Format(_T("%d%d328957283"),rand()%10000,rand()%99999);
	URL = _T("/cgi-bin/chs/common/dirty_check?nick=") + NicName+ _T("®Type=1&r=0.3475057586")+ tmpRndstr.Left(7);

	//建立请求
	hRequest = HttpOpenRequest(hConnect,_T("GET"),URL.GetBuffer(0),http11,NULL,NULL,INTERNET_FLAG_RELOAD,0);
	URL.ReleaseBuffer();

	//构造附加协议头
	fujiaxieyitou = ("Accept: */*\r\n");
	fujiaxieyitou += _T("Accept-Language: zh-cn\r\n");
	fujiaxieyitou += _T("Referer: http://zc.qq.com/chs/index.html\r\n");
	fujiaxieyitou += _T("Accept-Encoding: gzip, deflate\r\n");
	fujiaxieyitou += _T("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n");
	fujiaxieyitou += _T("Host: zc.qq.com\r\n");
	fujiaxieyitou += _T("Connection: Keep-Alive\r\n");
	fujiaxieyitou += _T("Cookie: sessionCookie=")+sessionCookie;
	fujiaxieyitou += _T("\r\n\r\n");

	//把内容转换成ANSI的结构的
	pBuf = (LPVOID)szFormData.GetBuffer(szFormData.GetLength());
	pTempBuf = MyWideCharToAnsi((wchar_t *)pBuf);

	//发送请求 获取NIKEname的合法性
	bReturn = HttpSendRequestA(hRequest,fujiaxieyitou.GetBuffer(0),fujiaxieyitou.GetLength(),NULL,0);
	if(!bReturn)
	{
		DWORD dwError = GetLastError();
		MessageBox(0,_T("获取登陆验证失败!"),_T("提示"),MB_ICONERROR | MB_OK);
		return FALSE;
	}


 


	//读取返回内容
	memset((void*)&szContent,0,sizeof(szContent));
	InternetReadFile(hRequest,szContent,1000,&dwTmp);
	TSS(_T("检查昵称完成"));
	TSS(UTF8ToGB((char*)szContent));


	//关闭当前请求
	InternetCloseHandle(hRequest);
	InternetCloseHandle(hConnect);
	InternetCloseHandle(hSession);

  Sleep(15000);

	hSession = InternetOpen(_T("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"),INTERNET_OPEN_TYPE_DIRECT,httpmsg,httpmsg,0);
	hConnect = InternetConnect(hSession,_T("zc.qq.com"),INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,1);
	//3.提交信息-----------------------------------------------------

	//URL
	srand(GetTickCount());
	tmpRndstr.Format(_T("%d%d328957283"),rand()%10000,rand()%99999);
	URL = _T("/cgi-bin/chs/numreg/get_acc?r=0.9412140433") + tmpRndstr.Left(5);	

	//加密密码
	//CString password = _T("437b5525e2f94b732029c4b350d7649a4276ede74375e13dd5cedd3e91c2c9440048cdc307f93727ae2bf9b97c5162a498e2592852fe40c33ebbe9dc64008875d0fd4dd43b584bcfdc5a2cb900b99598e28395a363f60f6b56b9308e5ed1433edfccc2e801769a550ef437cb783b9a2da8a97fcaa215211e1c4743c1bf120d7c");
	CString password = EmPass(Pass);

	TSS(Pass);
	TSS(password);

	//构造数据包
	szFormData =_T("&verifycode=");
	szFormData+= verifyCode;
	szFormData+=_T("&qzone_flag=1&country=");
	szFormData+=countryid;
	szFormData+=_T("&province=");
	szFormData+=provinceid;
	szFormData+=_T("&city=");
	szFormData+=cityid;
	szFormData+=_T("&isnongli=0&year=1993&month=3&day=3&isrunyue=0&password=");
	szFormData+=password;
	szFormData+=_T("&nick=");
	szFormData+=NicName;
	szFormData+=_T("&email=false&other_email=false&elevel=");
	szFormData+=elevel;
	szFormData+=_T("&sex=1&qzdate=&jumpfrom=58030&csloginstatus=0&p5p2q=w2u9");//
	TSS(szFormData);
	//获取数据包长度
	CString szFormData_Len;
	szFormData_Len.Format(_T("%d"),szFormData.GetLength());

	//建立连接
	hRequest = HttpOpenRequest(hConnect,_T("POST"),URL.GetBuffer(0),http11,NULL,NULL,INTERNET_FLAG_RELOAD,0);
	URL.ReleaseBuffer();

	//构造附加协议头
	fujiaxieyitou = ("Accept: */*\r\n");
	fujiaxieyitou += _T("Accept-Language: zh-cn\r\n");
	fujiaxieyitou += _T("Referer: http://zc.qq.com/chs/index.html\r\n");
	fujiaxieyitou += _T("Accept-Encoding: gzip, deflate\r\n");
	fujiaxieyitou += _T("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n");
	fujiaxieyitou += _T("Host: zc.qq.com\r\n");
	fujiaxieyitou += _T("Content-Length: ")+szFormData_Len+_T("\r\n");
	fujiaxieyitou += _T("Connection: Keep-Alive\r\n");
	fujiaxieyitou += _T("Cache-Control: no-cache\r\n");
	fujiaxieyitou += _T("Cookie: sessionCookie=");
	fujiaxieyitou += sessionCookie;
	fujiaxieyitou += _T("; verifysession=");
	fujiaxieyitou += verifysession;
	fujiaxieyitou += _T("; \r\n\r\n");
	//MessageBoxA(0, fujiaxieyitou,"caption",0x40);
	//转换表单数据为ansi
	pBuf = (LPVOID)szFormData.GetBuffer(szFormData.GetLength());
	pTempBuf = MyWideCharToAnsi((wchar_t *)pBuf);

	//发送数据
	bReturn = HttpSendRequestA(hRequest,fujiaxieyitou.GetBuffer(0),fujiaxieyitou.GetLength(),pTempBuf,szFormData.GetLength());
	fujiaxieyitou.ReleaseBuffer();
	szFormData.ReleaseBuffer();
	if(!bReturn)
	{
		DWORD dwError = GetLastError();
		MessageBox(0,_T("获取登陆验证失败!"),_T("提示"),MB_ICONERROR | MB_OK);
		return FALSE;
	}

	//获取内容
	memset((void*)&szContent,0,sizeof(szContent));
	InternetReadFile(hRequest,szContent,1000,&dwTmp);
	TSS(_T("注册完成"));
	TSS(UTF8ToGB((char*)szContent));

	//关闭当前请求
	InternetCloseHandle(hRequest);
	InternetCloseHandle(hConnect);
	InternetCloseHandle(hSession);
	return TRUE;
}


RegQQ.7z

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
牛叉的楼主 把牛叉的金币给我呗 凑了35了 还差15才能转正 跪求了
2013-10-5 15:06
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
需要短信验证?
反正现在服务器做防机器人的机制越来越完善了,估计是哪个小地方的检测没模拟到,被服务器认出来了.
2013-10-5 15:27
0
雪    币: 168
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
sms很明显 短信验证,试试电脑可能也是需要
2013-10-5 15:42
0
雪    币: 121
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
我是在确保一定能注册的情况之后,用我的代码还是出现需要手机验证的,
能不能指点下到底是哪里的问题呢?各位大牛
2013-10-5 15:48
0
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
那次在电脑上就是,必须要求短信验证。估计得把QQ关掉才不用验证。
2楼好令人无语……应该注意一下3楼的Kx更多 ^_^ !

楼主好牛,膜拜一下。楼主解析json的方法学习了!
2013-10-5 15:52
0
雪    币: 193
活跃值: (26)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
这个模拟 在检测方面有很大部分没做到位!最关键的检测算法 一个没有!
2013-10-5 17:42
0
雪    币: 341
活跃值: (133)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
8
我2楼强烈不满、、给我吧 支持你。。
2013-10-5 18:06
0
雪    币: 621
活跃值: (114)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
鼠标坐标点击模拟,IP,UA这些你都没处理。QQ账号升值的速度比房价都快啊,楼主这个源码还差得远
2013-10-5 20:17
0
雪    币: 10163
活跃值: (5037)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
http://bbs.eyuyan.com/read.php?tid=306106
2013-10-5 23:27
0
雪    币: 783
活跃值: (710)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
LZ看这个帖子吧  http://bbs.pediy.com/showthread.php?t=178734
2013-10-9 16:47
0
雪    币: 7
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
哎呀,学习一下,谁有金币给点呗
2013-10-12 08:26
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习一下
2013-10-12 10:51
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
qq注册没有短信认证吧
2013-10-12 11:54
0
雪    币: 68
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这玩意恐怕是Wininet本身的限制,最多十分钟就失效了。或者说你获取到的COOKIE没有带过去。
2013-10-13 07:48
0
雪    币: 14
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
很好的思路
2013-10-13 08:19
0
雪    币: 121
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
平均分给我觉得对我有帮助的回答了,结贴了,不问了
2013-10-14 10:16
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
我刚刚发表了几年前批量注册QQ的例子
你可以参考下
2013-10-14 10:36
0
雪    币: 42
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
mark下
2013-10-14 10:49
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
学习一下,验证码这一块很麻烦吧
2013-10-14 14:44
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
need upsms verify
2013-10-16 15:18
0
游客
登录 | 注册 方可回帖
返回
//