string UTFEncoder::url_UTFEncoder(string input) { if (input.empty()) return ""; CString c_input = input.c_str(); ConvertGBKToUtf8(c_input); std::ostrstream utf_code; std::string outputstring; for (int i=0;i<c_input.GetLength();i++) { int temp=c_input[i]; temp=temp&0xff; utf_code<<'%'; utf_code<<hex<<temp; } outputstring=utf_code.str(); outputstring=outputstring.substr(0,c_input.GetLength()*3); return outputstring; }
BOOL CPlayDataMgr::SaveDB(UINT uiID) { CMapDT_PLAYER_DATA_Itr itr; itr = mapDT_PLAYER_DATA.find(uiID); if (itr == mapDT_PLAYER_DATA.end()) { return FALSE; } DT_PLAYER_DATA *pstDT_PLAYER_DATA = itr->second; SGDP::ISDDBSession* pDBSession = CDBMgr::Instance()->GetDBSession(); if(NULL == pDBSession) { return FALSE; } char v_szData[sizeof(DT_PLAYER_BASE_DATA) + 1] = {0}; memcpy_s(v_szData, sizeof(DT_PLAYER_BASE_DATA) + 1, &pstDT_PLAYER_DATA->stBaseData, sizeof(DT_PLAYER_BASE_DATA)); DT_PLAYER_BASE_DATA *v_pDT_PLAYER_BASE_DATA = (DT_PLAYER_BASE_DATA*)v_szData; char v_szTemp[1024] = {0}; memcpy_s(v_szTemp, 1024, v_pDT_PLAYER_BASE_DATA->aszDispName, USERNAME_LEN); CString v_strTemp = v_szTemp; ConvertGBKToUtf8(v_strTemp); memset(v_pDT_PLAYER_BASE_DATA->aszDispName, 0x00, USERNAME_LEN); memcpy_s(v_pDT_PLAYER_BASE_DATA->aszDispName, USERNAME_LEN, v_strTemp.GetBuffer(0), v_strTemp.GetLength() + 1); CHAR szBaseData[ sizeof(DT_PLAYER_BASE_DATA) * 2 + 1] = {0}; UINT32 dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stBaseData), sizeof(DT_PLAYER_BASE_DATA), szBaseData, sizeof(szBaseData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szBagData[ sizeof(DT_BAG_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stBagData), sizeof(DT_BAG_DATA), szBagData, sizeof(szBagData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szBuildData[ sizeof(DT_BUILD_DATA_LIST) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stBuildData), sizeof(DT_BUILD_DATA_LIST), szBuildData, sizeof(szBuildData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szCurState[ sizeof(DT_STATE_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stCurState), sizeof(DT_STATE_DATA), szCurState, sizeof(szCurState)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szTaskData[ sizeof(DT_TASK_DATA_LIST) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stTaskData), sizeof(DT_TASK_DATA_LIST), szTaskData, sizeof(szTaskData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szBagEquipData[ sizeof(DT_BAG_EQUIP_DATA_LST) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stBagEquipData), sizeof(DT_BAG_EQUIP_DATA_LST), szBagEquipData, sizeof(szBagEquipData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szBagGoodsData[ sizeof(DT_BAG_GOODS_DATA_LST) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stBagGoodsData), sizeof(DT_BAG_GOODS_DATA_LST), szBagGoodsData, sizeof(szBagGoodsData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szHeroData[ sizeof(DT_HERO_DATA_LIST) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stHeroData), sizeof(DT_HERO_DATA_LIST), szHeroData, sizeof(szHeroData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szCommonBattleRcd[ sizeof(DT_INSTANCE_BATTLE_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stCommonBattleRcd), sizeof(DT_INSTANCE_BATTLE_DATA), szCommonBattleRcd, sizeof(szCommonBattleRcd)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szEliteBattleRcd[ sizeof(DT_INSTANCE_BATTLE_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stEliteBattleRcd), sizeof(DT_INSTANCE_BATTLE_DATA), szEliteBattleRcd, sizeof(szEliteBattleRcd)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szCommonInstanceData[ sizeof(DT_INSTANCE_DATA_LIST) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stCommonInstanceData), sizeof(DT_INSTANCE_DATA_LIST), szCommonInstanceData, sizeof(szCommonInstanceData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szEliteInstanceData[ sizeof(DT_INSTANCE_DATA_LIST) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stEliteInstanceData), sizeof(DT_INSTANCE_DATA_LIST), szEliteInstanceData, sizeof(szEliteInstanceData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szLocaleData[ sizeof(DT_LOCALE_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stLocaleData), sizeof(DT_LOCALE_DATA), szLocaleData, sizeof(szLocaleData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szLoginEncRecdData[ sizeof(DT_LOGIN_ENCOURAGE_RECORD_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stLoginEncRecdData), sizeof(DT_LOGIN_ENCOURAGE_RECORD_DATA), szLoginEncRecdData, sizeof(szLoginEncRecdData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szMoneyTreeData[ sizeof(DT_MONEY_TREE_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stMoneyTreeData), sizeof(DT_MONEY_TREE_DATA), szMoneyTreeData, sizeof(szMoneyTreeData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szOnhookRcdData[ sizeof(DT_ONHOOK_RCD_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stOnhookRcdData), sizeof(DT_ONHOOK_RCD_DATA), szOnhookRcdData, sizeof(szOnhookRcdData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szOnlineEncRecdData[ sizeof(DT_ONLINE_ENCOURAGE_RECORD_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stOnlineEncRecdData), sizeof(DT_ONLINE_ENCOURAGE_RECORD_DATA), szOnlineEncRecdData, sizeof(szOnlineEncRecdData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szPhystrengthData[ sizeof(DT_PHYSTRENGTH_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stPhystrengthData), sizeof(DT_PHYSTRENGTH_DATA), szPhystrengthData, sizeof(szPhystrengthData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szSkillData[ sizeof(DT_SKILL_DATA_LIST) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stSkillData), sizeof(DT_SKILL_DATA_LIST), szSkillData, sizeof(szSkillData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szCropData[ sizeof(DT_CROP_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stCropData), sizeof(DT_CROP_DATA), szCropData, sizeof(szCropData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szFewParamData[ sizeof(DT_FEW_PARAM_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stFewParamData), sizeof(DT_FEW_PARAM_DATA), szFewParamData, sizeof(szFewParamData)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szScienceTree[ sizeof(DT_SCIENCE_TREE_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stScienceTree), sizeof(DT_SCIENCE_TREE_DATA), szScienceTree, sizeof(szScienceTree)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } CHAR szFormationInfo[ sizeof(DT_FORMATION_DATA) * 2 + 1] = {0}; dwRetCode = pDBSession->EscapeString((CHAR *) & (pstDT_PLAYER_DATA->stFormationInfo), sizeof(DT_FORMATION_DATA), szFormationInfo, sizeof(szFormationInfo)); if(dwRetCode <= 0) { //SYS_CRITICAL(_SDT("[%s: %d]: EscapeString failed!"), MSG_MARK); return FALSE; } static char pszSql[655350] = {0}; sprintf(pszSql, "update player set "\ "BaseData='%s', Bag='%s', Build='%s', Curstate='%s', "\ "Curtask='%s', Equip='%s', Goods='%s', Hero='%s', "\ "CommonBattleRcd='%s', EliteBattleRcd='%s', CommonInstanceData='%s', EliteInstanceData='%s', "\ "Locale='%s', LoginEncourageRecord='%s', MoneyTree='%s', OnhookRecord='%s', OnlineEncourageRecord='%s', "\ "Phystrength='%s', Skill='%s', Crop='%s', FewParam='%s',"\ "FormationInfo='%s', ScienceTree='%s', "\ "UpdateTime=now(), Gold='%llu', LastOrderID='%s' where ID ='%u'; ", szBaseData, szBagData, szBuildData, szCurState, szTaskData, szBagEquipData, szBagGoodsData, szHeroData, szCommonBattleRcd, szEliteBattleRcd, szCommonInstanceData, szEliteInstanceData, szLocaleData, szLoginEncRecdData, szMoneyTreeData, szOnhookRcdData, szOnlineEncRecdData, szPhystrengthData, szSkillData, szCropData, szFewParamData, szFormationInfo, szScienceTree, pstDT_PLAYER_DATA->stBaseData.qwGold, pstDT_PLAYER_DATA->szLastOrderID, pstDT_PLAYER_DATA->stBaseData.dwID); INT32 nRet = 0; UINT32 dwErrorCode = 0; ISDDBRecordSet*pRecordSet = NULL; string strErrorDes; nRet = pDBSession->ExecuteSqlRs(pszSql, &pRecordSet, &dwErrorCode, &strErrorDes ); if(NULL != pRecordSet) { //SYS_CRITICAL(_SDT("[%s: %d]: exec sql failed!Error:%s Sql:%s"), MSG_MARK, strErrorDes.c_str(), pszSql); pRecordSet->Release(); pRecordSet = NULL; } if(nRet < 0) { //SYS_CRITICAL(_SDT("[%s: %d]: exec sql failed!Error:%s Sql:%s"), MSG_MARK, strErrorDes.c_str(), pszSql); return FALSE; } return TRUE; }
//用户登录 bool C51JobWebPost::UserRegister() { try { switch (g_iRegWebFlag) { case 0: m_strServerURL = "www.7ple.com"; break; case 1: m_strServerURL = "www.7pmi.com"; break; case 2: default: m_strServerURL = "www.7psw.com"; break; } CString strError = ""; CString sendStr = ""; ShowMessage("正在获取注册页面..."); CString objectlink = ""; switch (g_iRegWebFlag) { case 0: objectlink = "/reg.jhtml?siteID=11"; break; case 1: objectlink = "/reg.jhtml?siteID=11"; break; case 2: default: objectlink = "/reg.jhtml?siteID=18"; break; } //TestProxy(); CString strHeaders = m_strHeader; m_strServerURL = "www.ip138.com"; objectlink = "/ip2city.asp"; int iRet = RequestGetPageExExEx(m_strServerURL,objectlink,strHeaders, strError,0,1,0,"122.205.95.14",80,"",""); //int iRet = RequestGetPage(m_Session,m_pConnection,m_strServerURL,objectlink,strHeaders); // int iRet = RequestGetPageExExEx(m_strServerURL,objectlink,strHeaders, // strError,0,1,0,"125.41.181.59",8080,"",""); if ( iRet != 0 ) { TRACE("获取页面出错"); ShowMessage("获取注册页面失败"); m_nErrorTime ++; DeleteObjectExEx(); return false; } m_strWorkBuf.MakeLower(); //AfxMessageBox(m_strWorkBuf.Right(m_strWorkBuf.GetLength() - 200)); //检查是否打开简历管理页 int iPos = m_strWorkBuf.Find("找回密码用"); if (iPos >= 0) { ShowMessage("成功获取注册页,正在获取验证码..."); } else { return false; } CString postStr = ""; CString strShow = ""; while(!g_ExitFlag) { try { RegisterPack rgPack; int iRet = GetRegisterPack(rgPack); if (iRet == -1) { Sleep(700); continue; } else if (iRet == -2) { Sleep(2000); continue; } /************************************************************************/ /* 更换验证字符串 */ /************************************************************************/ iRet = GetFirstUsefulKey(); if (iRet != 0) { Sleep(1000); continue; } m_strMac.MakeUpper(); ShowMessage("模拟验证信息:"+m_strMac + "," + m_strTrans +","+m_strVerify); /************************************************************************/ /* 此处先获取注册页面的信息,以备填充 */ /************************************************************************/ //HWND hwnd = ::FindWindow("IEFrame","棋牌乐 - 注册帐号 - Microsoft Internet Explorer"); rgPack.strIp = g_strCurrIP; m_iCheckFlag = 0; g_strCheckCode = ""; if (m_iCheckFlag == 0) { //删除旧的验证码 if (_access(g_strDirect+g_strFileName,0) == 0) { CFile::Remove(g_strDirect+g_strFileName); } ShowMessage("正在获取验证码..."); m_iCheckFlag = 0; objectlink = "/NewRegValidateCode"; //strHeaders = m_strHeader + "\r\nReferer:http://www.dajiale365.com/reg.shtml"; iRet = RequestGetPageExExEx(m_strServerURL,objectlink,strHeaders,strError,1); if (iRet != 0) { ShowMessage("获取验证码失败"); m_nErrorTime ++; DeleteObjectExEx(); return false; } else { ShowMessage("获取验证码成功"); strShow.Format("正在注册:%s %s",rgPack.strAcc,rgPack.strPwd); ShowMessage(strShow); } } while(!g_ExitFlag) { if ( g_strCheckCode != "") { break; } Sleep(100); } if (g_ExitFlag) { DeleteObjectExEx(); return false; } CString strFailReason = ""; CString strCheckCode = g_strCheckCode; if (strCheckCode == "r") { continue; } objectlink = "/regAction.jhtml"; switch (g_iRegWebFlag) { case 0: strHeaders = m_strHeader + "\r\nReferer:http://www.7ple.com/reg.jhtml?siteID=11"; break; case 1: strHeaders = m_strHeader + "\r\nReferer:http://www.7pmi.com/reg.jhtml?siteID=11"; break; case 2: default: strHeaders = m_strHeader + "\r\nReferer:http://www.7psw.com/reg.jhtml?siteID=18"; break; } //strHeaders += "\r\nx-requested-with: XMLHttpRequest"; //strHeaders += "\r\nContent-Type: application/x-www-form-urlencoded"; CString strTime = CTime::GetCurrentTime().Format("%m%d%H%M%S"); //strCheckCode = NativeToAscii(strCheckCode); //strCheckCode = "确学装衣"; //ConvertGBKToUtf8(strCheckCode); rgPack.strMail = ""; switch (g_iRegWebFlag) { case 0: ConvertGBKToUtf8(strCheckCode); strCheckCode = URLEncode(strCheckCode); postStr.Format("username=%s&password=%s&repassword=%s&sex=1&myhead=1&email=%s&siteID=11&7pmiReferrerUrl=&7pmiLocalUrl=&selfinfo=&machineserial=%s&transactionid=%s&verify=%s&ptvodaccounts=&introducer=%s&checkcode=%s&agree=on",rgPack.strAcc,rgPack.strPwd,rgPack.strPwd,rgPack.strMail,m_strMac,m_strTrans,m_strVerify,rgPack.strNickName,strCheckCode); break; case 1: postStr.Format("username=%s&password=%s&repassword=%s&sex=1&myhead=1&email=%s&siteID=11&7pmiReferrerUrl=&7pmiLocalUrl=&selfinfo=&machineserial=%s&transactionid=%s&verify=%s&ptvodaccounts=&introducer=%s&checkcode=%s&agree=on",rgPack.strAcc,rgPack.strPwd,rgPack.strPwd,rgPack.strMail,m_strMac,m_strTrans,m_strVerify,rgPack.strNickName,strCheckCode); break; case 2: default: ConvertGBKToUtf8(strCheckCode); strCheckCode = URLEncode(strCheckCode); postStr.Format("username=%s&password=%s&repassword=%s&sex=1&myhead=1&email=%s&siteID=18&7pmiReferrerUrl=&7pmiLocalUrl=&selfinfo=&machineserial=%s&transactionid=%s&verify=%s&ptvodaccounts=&introducer=%s&checkcode=%s&agree=on",rgPack.strAcc,rgPack.strPwd,rgPack.strPwd,rgPack.strMail,m_strMac,m_strTrans,m_strVerify,rgPack.strNickName,strCheckCode); break; } iRet = RequestPostPageExExEx(m_strServerURL,objectlink,strHeaders,postStr,strError,0);// if ( iRet != 0 ) { TRACE("POST出错"); m_nErrorTime ++; DeleteObjectExEx(); return false; } m_strWorkBuf.MakeLower(); iPos = m_strWorkBuf.Find("注册成功"); if ( iPos >= 0) { ShowMessage("注册成功"); rgPack.iStatus = 1; rgPack.strMemo = "成功"; strShow.Format("%s,%s,",rgPack.strAcc,rgPack.strPwd); WriteLog(strShow,0); //保存注册成功的账号进数据库 // iRet = WriteToBase(rgPack,g_iRegWebFlag); // if (iRet != 0) // { // WriteLog(strShow,3); // } m_iIpSuccNum++; if (m_iIpSuccNum >= g_iIpRegNum) { if (g_iAotuChangeIp) { ShowMessage("单一IP注册数已达上限,正在切换IP..."); } ShowMessage("单一M验证数据注册数已达上限,正在切换验证数据..."); DisableKey(m_iID); m_iNeedChageIP = 1; m_iIpSuccNum = 0; //m_iIsNeedChangeMac = 1; //continue; } } else {//注册失败 CString strBefore = "<div align=\"center\"><font color='red'>"; CString strAfter = "</font></div>"; strFailReason = GetKeyString(m_strWorkBuf,strBefore,strAfter); ShowMessage("注册失败: "+strFailReason); rgPack.iStatus = 2; rgPack.strMemo = strFailReason; //此处找到单机已经达到上限字符串,获取下一组特征码 if (strFailReason.Find("您的注册速度太快") != -1 || strFailReason.Find("日注册量已达到当日限额") != -1) { DisableKey(m_iID); m_iNeedChageIP = 1; m_iIpSuccNum = 0; } } AddToShowList(rgPack); if (g_iDeleteFlag == 1) { if (strFailReason.Find("验证码输入错误")<0) { DeleteRegisterPack(rgPack); } else { m_iCodeErrorNum ++; if (m_iCodeErrorNum >= g_iCodeErrorNum) { ShowMessage("验证码错误次数到达上限,跳过此账号的注册"); DeleteRegisterPack(rgPack); m_iCodeErrorNum = 0; } } } else { DeleteRegisterPack(rgPack); } #ifdef DEBUG m_iNeedChageIP = 1; #endif if (m_iNeedChageIP == 1) //换IP { DeleteObjectExEx(); return false; } // if (m_iIsNeedChangeMac == 1) //换MAC地址 // { // DeleteObjectExEx(); // return false; // } } catch (...) { DeleteObjectExEx(); return false; } } return false; } catch (...) { } DeleteObjectExEx(); return false; }
//用户登录 bool C51JobWebPost::UserRegister() { try { switch (g_iRegWebFlag) { case 0: m_strServerURL = "www.7ple.com"; break; case 1: m_strServerURL = "www.7pmi.com"; break; case 2: default: m_strServerURL = "www.7psw.com"; break; } CString strError = ""; CString sendStr = ""; ShowMessage("正在获取注册页面..."); CString objectlink = ""; switch (g_iRegWebFlag) { case 0: objectlink = "/reg.jhtml?siteID=11"; break; case 1: objectlink = "/reg.jhtml?siteID=11"; break; case 2: default: objectlink = "/reg.jhtml?siteID=18"; break; } CString strHeaders = m_strHeader; //int iRet = RequestGetPage(m_Session,m_pConnection,m_strServerURL,objectlink,strHeaders); int iRet = RequestGetPageExExEx(m_strServerURL,objectlink,strHeaders, strError);//"148.233.239.24",3128,"","",0); if ( iRet != 0 ) { TRACE("获取页面出错"); ShowMessage("获取注册页面失败"); m_nErrorTime ++; DeleteObjectExEx(); return false; } m_strWorkBuf.MakeLower(); //AfxMessageBox(m_strWorkBuf.Right(m_strWorkBuf.GetLength() - 200)); //检查是否打开简历管理页 int iPos = m_strWorkBuf.Find("找回密码用"); if (iPos >= 0) { ShowMessage("成功获取注册页,正在获取验证码..."); } else { return false; } CString postStr = ""; CString strShow = ""; while(!g_ExitFlag) { try { RegisterPack rgPack; int iRet = GetRegisterPack(rgPack); if (iRet == -1) { Sleep(700); continue; } else if (iRet == -2) { Sleep(2000); continue; } /************************************************************************/ /* 此处先获取注册页面的信息,以备填充 */ /************************************************************************/ //HWND hwnd = ::FindWindow("IEFrame","棋牌乐 - 注册帐号 - Microsoft Internet Explorer"); m_hwnd = ::FindWindow("#32770","帐号注册"); char str[128] = {0}; HWND hwnd = NULL; CWindowFind find; //hwnd = find.MyFindWindow("Internet Explorer_Server","",hwnd); hwnd = find.GetChildWindow(m_hwnd,1); hwnd = find.GetChildWindow(hwnd,1); hwnd = find.GetChildWindow(hwnd,1); hwnd = find.GetChildWindow(hwnd,1); GetClassName(hwnd,str,sizeof(str));//获取类名 if(strcmp(str,"Internet Explorer_Server")==0) { IHTMLDocument2 *pDoc = GetDocInterface(hwnd); GetHtmlCtrl(pDoc); } rgPack.strIp = g_strCurrIP; m_iCheckFlag = 0; g_strCheckCode = ""; if (m_iCheckFlag == 0) { //删除旧的验证码 if (_access(g_strDirect+g_strFileName,0) == 0) { CFile::Remove(g_strDirect+g_strFileName); } ShowMessage("正在获取验证码..."); m_iCheckFlag = 0; objectlink = "/RegRandomCodeCtrl"; //strHeaders = m_strHeader + "\r\nReferer:http://www.dajiale365.com/reg.shtml"; iRet = RequestGetPageExExEx(m_strServerURL,objectlink,strHeaders,strError,1); if (iRet != 0) { ShowMessage("获取验证码失败"); m_nErrorTime ++; DeleteObjectExEx(); return false; } else { ShowMessage("获取验证码成功"); strShow.Format("正在注册:%s %s",rgPack.strAcc,rgPack.strPwd); ShowMessage(strShow); } } while(!g_ExitFlag) { if ( g_strCheckCode != "") { break; } Sleep(100); } if (g_ExitFlag) { DeleteObjectExEx(); return false; } CString strFailReason = ""; CString strCheckCode = g_strCheckCode; if (strCheckCode == "r") { continue; } objectlink = "/regAction.jhtml"; switch (g_iRegWebFlag) { case 0: strHeaders = m_strHeader + "\r\nReferer:http://www.7ple.com/reg.jhtml?siteID=11"; break; case 1: strHeaders = m_strHeader + "\r\nReferer:http://www.7pmi.com/reg.jhtml?siteID=11"; break; case 2: default: strHeaders = m_strHeader + "\r\nReferer:http://www.7psw.com/reg.jhtml?siteID=18"; break; } //strHeaders += "\r\nx-requested-with: XMLHttpRequest"; //strHeaders += "\r\nContent-Type: application/x-www-form-urlencoded"; CString strTime = CTime::GetCurrentTime().Format("%m%d%H%M%S"); //strCheckCode = NativeToAscii(strCheckCode); //strCheckCode = "确学装衣"; //ConvertGBKToUtf8(strCheckCode); m_strMac.MakeUpper(); switch (g_iRegWebFlag) { case 0: ConvertGBKToUtf8(strCheckCode); strCheckCode = URLEncode(strCheckCode); postStr.Format("username=%s&password=%s&repassword=%s&sex=1&myhead=1&email=%s&siteID=11&7pmiReferrerUrl=&7pmiLocalUrl=&selfinfo=&machineserial=%s&transactionid=%s&verify=%s&ptvodaccounts=&introducer=%s&checkcode=%s&agree=on",rgPack.strAcc,rgPack.strPwd,rgPack.strPwd,rgPack.strMail,m_strMac,m_strTrans,m_strVerify,rgPack.strNickName,strCheckCode); break; case 1: postStr.Format("username=%s&password=%s&repassword=%s&sex=1&myhead=1&email=%s&siteID=11&7pmiReferrerUrl=&7pmiLocalUrl=&selfinfo=&machineserial=%s&transactionid=%s&verify=%s&ptvodaccounts=&introducer=%s&checkcode=%s&agree=on",rgPack.strAcc,rgPack.strPwd,rgPack.strPwd,rgPack.strMail,m_strMac,m_strTrans,m_strVerify,rgPack.strNickName,strCheckCode); break; case 2: default: ConvertGBKToUtf8(strCheckCode); strCheckCode = URLEncode(strCheckCode); postStr.Format("username=%s&password=%s&repassword=%s&sex=1&myhead=1&email=%s&siteID=18&7pmiReferrerUrl=&7pmiLocalUrl=&selfinfo=&machineserial=%s&transactionid=%s&verify=%s&ptvodaccounts=&introducer=%s&checkcode=%s&agree=on",rgPack.strAcc,rgPack.strPwd,rgPack.strPwd,rgPack.strMail,m_strMac,m_strTrans,m_strVerify,rgPack.strNickName,strCheckCode); break; } iRet = RequestPostPageExExEx(m_strServerURL,objectlink,strHeaders,postStr,strError,0);// if ( iRet != 0 ) { TRACE("POST出错"); m_nErrorTime ++; DeleteObjectExEx(); return false; } m_strWorkBuf.MakeLower(); iPos = m_strWorkBuf.Find("注册成功"); if ( iPos >= 0) { ShowMessage("注册成功"); rgPack.iStatus = 1; rgPack.strMemo = "成功"; strShow.Format("%s,%s,",rgPack.strAcc,rgPack.strPwd); WriteLog(strShow,0); //保存注册成功的账号进数据库 iRet = WriteToBase(rgPack,g_iRegWebFlag); if (iRet != 0) { WriteLog(strShow,3); } m_iIpSuccNum++; if (m_iIpSuccNum >= g_iIpRegNum) { if (g_iAotuChangeIp) { ShowMessage("单一IP注册数已达上限,正在切换IP..."); } if (g_iIsChangeMac) { ShowMessage("单一MAC地址注册数已达上限,正在切换MAC地址..."); } m_iNeedChageIP = 1; m_iIpSuccNum = 0; m_iIsNeedChangeMac = 1; } } else {//注册失败 CString strBefore = "<div align=\"center\"><font color='red'>"; CString strAfter = "</font></div>"; strFailReason = GetKeyString(m_strWorkBuf,strBefore,strAfter); ShowMessage("注册失败: "+strFailReason); rgPack.iStatus = 2; rgPack.strMemo = strFailReason; } AddToShowList(rgPack); if (g_iDeleteFlag == 1) { if (strFailReason.Find("验证码输入错误")<0) { DeleteRegisterPack(rgPack); } else { m_iCodeErrorNum ++; if (m_iCodeErrorNum >= g_iCodeErrorNum) { ShowMessage("验证码错误次数到达上限,跳过此账号的注册"); DeleteRegisterPack(rgPack); m_iCodeErrorNum = 0; } } } else { DeleteRegisterPack(rgPack); } #ifdef DEBUG m_iNeedChageIP = 1; #endif if (m_iNeedChageIP == 1) //换IP { DeleteObjectExEx(); return false; } if (m_iIsNeedChangeMac == 1) //换MAC地址 { DeleteObjectExEx(); return false; } } catch (...) { DeleteObjectExEx(); return false; } } return false; } catch (...) { } DeleteObjectExEx(); return false; }