CPoint CAutoBrowser::GetRandPointInRect(CRect rcElem) { CPoint ptRand; ptRand.x = GetRandValue(rcElem.left+1,rcElem.right-1); ptRand.y = GetRandValue(rcElem.top+1,rcElem.bottom-1); return ptRand; }
BOOL CAutoBrowser::ClickRandMatchWebPageElement(CElementInformation *pElemInfo) { CElemRectList ElemList; BOOL bRes = GetAllMatchElemRect(&ElemList,pElemInfo); if (bRes) { int nMatchCount = ElemList.GetElemRectCount(); int nSelect = GetRandValue(0,nMatchCount-1); ELEM_RECT ElemRect; bRes = ElemList.GetElemRectByIndex(nSelect,&ElemRect); if (bRes) { CRect rcElem; rcElem = ElemRect.rcElem; CPoint ptElemCenter; ptElemCenter = rcElem.CenterPoint(); CRect rcIEWin; ::GetClientRect(m_hIEServer,&rcIEWin); if (PtInRect(&rcIEWin,ptElemCenter) == FALSE) { //通过操作滚动条,尽可能的将要点击的元素移动的窗口的中间 int ScrollX = ptElemCenter.x-rcIEWin.Width()/2; int ScrollY = ptElemCenter.y-rcIEWin.Height()/2; LONG nCurScrollX = 0; LONG nCurScrollY = 0; GetWebWindowScroll(&nCurScrollX,&nCurScrollY); ScrollY = nCurScrollY + ScrollY; ScrollWebWindowTo(ScrollX,ScrollY); CComQIPtr<IHTMLElement> pqElem(ElemRect.pElem); GetVisibleElemRect(pqElem,rcElem); //ptElemCenter = rcElem.CenterPoint(); } ptElemCenter = GetRandPointInRect(rcElem); bRes = PtInRect(&rcIEWin,ptElemCenter); if (bRes) { ClickWebPagePoint(ptElemCenter.x,ptElemCenter.y); } } } return bRes; }
void Items::GenerateItemNow( Vector2D pos, Vector2D vel ) { if( pos.getX() < 10 ) pos.setX( 10.f ); if( pos.getX() > m_iScreenWidth-10 ) pos.setX( m_iScreenWidth-10.f ); if( pos.getY() < 100 && vel.getY() < 5 ) vel.setY( 5 ); int itemType = GetRandValue( ITEM_APPEAR_CHANCES, NR_ITEM_TYPES ); Item *item = new Item( pos, vel, (ItemTypes)itemType, m_iItemLifeTime, m_iScreenWidth ); AddItem( item ); }
CString GetRandPhoneUserAgent() { LPCWSTR pArrayPhoneUserAgent[]={ // L"Mozilla/5.0 (iPad; CPU OS 4_2 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8C134", // L"Mozilla/5.0 (iPad; CPU OS 4_3 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5", // L"Mozilla/5.0 (iPad; CPU OS 4_3_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5", // L"Mozilla/5.0 (iPad; CPU OS 4_3_2 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5", // L"Mozilla/5.0 (iPad; CPU OS 4_3_3 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", // L"Mozilla/5.0 (iPad; CPU OS 4_3_4 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8K2 Safari/6533.18.5", // L"Mozilla/5.0 (iPad; CPU OS 4_3_5 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5", // L"Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3", // L"Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3", // L"Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25", // L"Mozilla/5.0 (Linux; Android 2.1-update1; SonyEricssonSO-01B Build/2.0.2.B.0.29) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17", // L"Mozilla/5.0 (Linux; Android 2.2.1; Full Android Build/MASTER) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.2.1; IS03 Build/S9090) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.3.3; SC-02C Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.3.3; INFOBAR A01 Build/S9081) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.3.3; 001HT Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.3.3; SonyEricssonX10i Build/3.0.1.G.0.75) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.3.4; SonyEricssonIS11S Build/4.0.1.B.0.112) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.3.4; IS05 Build/S9290) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.3.5; F-05D Build/F0001) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 2.3.5; T-01D Build/F0001) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", // L"Mozilla/5.0 (Linux; Android 3.0.1; MZ604 Build/H.6.2-20) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", // L"Mozilla/5.0 (Linux; Android 3.1; en-us; K1 Build/HMJ37) AppleWebKit/534.13(KHTML, like Gecko) Version/4.0 Safari/534.13", // L"Mozilla/5.0 (Linux; Android 3.1; AT100 Build/HMJ37) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", // L"Mozilla/5.0 (Linux; Android 3.1; Sony Tablet S Build/THMAS10000) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", // L"Mozilla/5.0 (Linux; Android 3.2; SC-01D Build/MASTER) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", // L"Mozilla/5.0 (Linux; Android 3.2; AT1S0 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", // L"Mozilla/5.0 (Linux; Android 3.2; F-01D Build/F0001) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", // L"Mozilla/5.0 (Linux; Android 3.2; Sony Tablet S Build/THMAS11000) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", // L"Mozilla/5.0 (Linux; Android 3.2; A01SH Build/HTJ85B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1", // L"Mozilla/5.0 (Linux; Android 3.2.1; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", L"Mozilla/5.0 (Linux; Android 4.0.1; Galaxy Nexus Build/ITL41D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", L"Mozilla/5.0 (Linux; Android 4.0.3; URBANO PROGRESSO Build/010.0.3000) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", L"Mozilla/5.0 (Linux; Android 4.0.3; Sony Tablet S Build/TISU0R0110) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", L"Mozilla/5.0 (Linux; Android 4.0.4; SC-06D Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", L"Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", L"Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03S) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19", //L"Opera/9.80 (Android 2.3.3; Linux; Opera Mobi/ADR-1111101157; ja) Presto/2.9.201 Version/11.50", //L"Opera/9.80 (Android 3.2.1; Linux; Opera Tablet/ADR-1109081720; ja) Presto/2.8.149 Version/11.10", //L"Mozilla/5.0 (Android; Linux armv7l; rv:9.0) Gecko/20111216 Firefox/9.0 Fennec/9.0", //L"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; KDDI-TS01; Windows Phone 6.5.3.5)", //L"Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; FujitsuToshibaMobileCommun; IS12T; KDDI)" }; int nCount = _countof(pArrayPhoneUserAgent); return pArrayPhoneUserAgent[GetRandValue(0,nCount-1)]; }
BOOL CAutoBrowser::ScrollWebWindowTo(LONG X,LONG Y) { CComQIPtr<IWebBrowser> pWb(m_pWebBrowser); if (pWb) { //IHTMLWindow2 CComQIPtr<IHTMLDocument2> pDoc2; pWb->get_Document((IDispatch **)&pDoc2); if (pDoc2) { CComQIPtr<IHTMLWindow2> pWin2; pDoc2->get_parentWindow(&pWin2); if (pWin2) { LONG CurX = 0; LONG CurY = 0; BOOL bRes = GetWebWindowScroll(&CurX,&CurY); if (bRes) { //先滚动Y轴 竖着的 if(Y > CurY) //向下滚动 { int n=0; for (int i=CurY;i<=Y;i+=120) { pWin2->scroll(CurX,i); n++; if ( n%4 == 0 ) { Sleep(GetRandValue(500,1000)); } else { Sleep(GetRandValue(50,100)); } } } else //向上滚动 { int n=0; for (int i=CurY;i>=Y;i-=120) { pWin2->scroll(CurX,i); n++; if ( n%4 == 0 ) { Sleep(GetRandValue(500,1000)); } else { Sleep(GetRandValue(50,100)); } } } Sleep(GetRandValue(500,1000)); pWin2->scroll(CurX,Y); CurY = Y; //滚动X轴 横着的 if(X > CurX) //向左滚动 { int n=0; for (int i=CurX;i<=X;i+=120) { pWin2->scroll(i,CurY); n++; if ( n%4 == 0 ) { Sleep(GetRandValue(500,1000)); } else { Sleep(GetRandValue(50,100)); } } } else //向上滚动 { int n=0; for (int i=CurX;i>=X;i-=120) { pWin2->scroll(i,CurY); n++; if ( n%4 == 0 ) { Sleep(GetRandValue(500,1000)); } else { Sleep(GetRandValue(50,100)); } } } Sleep(GetRandValue(500,1000)); pWin2->scroll(X,CurY); } else { pWin2->scroll(X,Y); } } } } return TRUE; }
DWORD WINAPI WorkThread(PVOID pParam) { HWND hTopWnd = FindWindow(L"Qt5QWindowIcon",L"夜神安卓模拟器"); if ( NULL == hTopWnd ) { hTopWnd = FindWindow(L"Qt5QWindowIcon",L"夜神模拟器"); } HWND hWndWork = NULL; HWND hSubWin = NULL; EnumChildWindows(hTopWnd,MY_WNDENUMPROC,(LPARAM)&hSubWin); hWndWork = GetParent(hSubWin); int nScanR = 150; int nScanSpace = 5; int nCurAngle = 0; int nStartOffset = 10; int nPrintWidth = nScanR*2+10; HDC hScreenDc = GetDC(NULL); HDC hMemDC = CreateCompatibleDC(hScreenDc); HBITMAP hMemBmp = CreateCompatibleBitmap(hScreenDc,nPrintWidth,nPrintWidth); SelectObject(hMemDC,hMemBmp); ReleaseDC(NULL,hScreenDc); while (IsWindow(hWndWork)) { CRect rcClient; GetClientRect(hWndWork,&rcClient); CRect rcWin; GetWindowRect(hWndWork,&rcWin); CPoint ptCenter; ptCenter = rcClient.CenterPoint(); hScreenDc = GetDC(NULL); BitBlt(hMemDC,0,0,nPrintWidth,nPrintWidth,hScreenDc,rcWin.left + ptCenter.x - nPrintWidth/2,rcWin.top + ptCenter.y -nPrintWidth/2,SRCCOPY); ReleaseDC(NULL,hScreenDc); int nX = 0; int nY = 0; BOOL bAllClearLeft = TRUE; for (int i=nStartOffset;i<nScanR;i+=nScanSpace ) { AngleToXY(nCurAngle-4,i,nX,nY); COLORREF clrRef = GetPixel(hMemDC,nPrintWidth/2+nX,nPrintWidth/2+nY); if ( !CheckBg(clrRef)) { bAllClearLeft = FALSE; break; } } BOOL bAllClearRight = TRUE; for (int i=nStartOffset;i<nScanR;i+=nScanSpace ) { AngleToXY(nCurAngle+4,i,nX,nY); COLORREF clrRef = GetPixel(hMemDC,nPrintWidth/2+nX,nPrintWidth/2+nY); if ( !CheckBg(clrRef)) { bAllClearRight = FALSE; break; } } if ( !bAllClearLeft || !bAllClearRight ) { while (TRUE) { int nX = 0; int nY = 0; int nAngle = GetRandValue( 0 ,359 ); BOOL bAllClearLeft = TRUE; for (int i=nStartOffset;i<nScanR;i+=nScanSpace ) { AngleToXY(nAngle-4,i,nX,nY); COLORREF clrRef = GetPixel(hMemDC,nPrintWidth/2+nX,nPrintWidth/2+nY); if ( !CheckBg(clrRef)) { bAllClearLeft = FALSE; break; } } BOOL bAllClearRight = TRUE; for (int i=nStartOffset;i<nScanR;i+=nScanSpace ) { AngleToXY(nAngle+4,i,nX,nY); COLORREF clrRef = GetPixel(hMemDC,nPrintWidth/2+nX,nPrintWidth/2+nY); if ( !CheckBg(clrRef)) { bAllClearRight = FALSE; break; } } if (bAllClearLeft && bAllClearRight) { nCurAngle = nAngle; ChangeMoveAngle(hWndWork,nAngle); break; } } } Sleep(50); } return 0; }