Необходимо программно залогиниться сюда. Юзаю фнукции wininet, но не знаю в каком виде передать логин и пасс. Вот код: Код (Text): Login proc local hOpen:dword local hRequest:dword local hConnect:dword local buffer[4096]:byte local bytewrite:dword invoke InternetOpen,$CTA0("steam"),INTERNET_OPEN_TYPE_PRECONFIG,0,0,0 .if eax != 0 mov hOpen,eax invoke InternetConnect,hOpen,$CTA0("store.steampowered.com"),INTERNET_DEFAULT_HTTPS_PORT,0,0,INTERNET_SERVICE_HTTP,0,0 .if eax != 0 mov hConnect,eax invoke HttpOpenRequest,hConnect,$CTA0("POST"),$CTA0("login/"),$CTA0("HTTP/1.1"),0,0,0,1 .if eax != 0 mov hRequest,eax invoke HttpSendRequest,hRequest,0,0,0,0 invoke InternetReadFile,hRequest,addr buffer,sizeof buffer,addr bytewrite invoke MessageBox,0,addr buffer,0,0 invoke InternetCloseHandle,hRequest .endif .endif invoke InternetCloseHandle,hOpen .endif invoke ExitProcess,0 Login endp
почему? получиться, составь запрос норм только: Код (Text): https://store.steampowered.com/login/ redir=&username=qwerty&password=12345 или если с капчей Код (Text): redir=&username=qwerty&password=12345&captchagid=55327337876853030&captcha_text=YA%26HKG
Сорри за нубство, но что не так? Код (Text): Login proc local hOpen:dword local hRequest:dword local hConnect:dword local buffer[4096]:byte local bytewrite:dword local dwCodeLen:dword local dwcode[20]:dword invoke InternetOpen,$CTA0("steam"),INTERNET_OPEN_TYPE_PRECONFIG,0,0,0 .if eax != 0 mov hOpen,eax invoke InternetConnect,hOpen,$CTA0("store.steampowered.com"),INTERNET_DEFAULT_HTTPS_PORT,0,0,INTERNET_SERVICE_HTTP,0,0 .if eax != 0 mov hConnect,eax invoke HttpOpenRequest,hConnect,$CTA0("POST"),$CTA0("login"),$CTA0("HTTP/1.1"),0,0,0,1 .if eax != 0 mov hRequest,eax invoke HttpSendRequest,hRequest,$CTA0("Content-Type: application/x-www-form-urlencoded"),47,$CTA0("redir=&username=qwerty&password=12345"),37 .if eax == 1 mov dwCodeLen,10 invoke HttpQueryInfo,hRequest,HTTP_QUERY_STATUS_CODE,addr dwcode,addr dwCodeLen,0 invoke MessageBox,0,addr dwcode,addr dwcode,0 .endif invoke InternetCloseHandle,hRequest .endif .endif invoke InternetCloseHandle,hOpen .endif invoke ExitProcess,0 Login endp
invoke HttpOpenRequest,hConnect,$CTA0("POST"),$CTA0("login/"),$CTA0("HTTP/1.1"),0,0,FLAGS,0 Код (Text): INTERNET_FLAG_RELOAD or INTERNET_FLAG_NO_CACHE_WRITE or NTERNET_FLAG_SECURE or INTERNET_FLAG_PRAGMA_NOCACHE
Спасибо большое, получилось. Еще маленький вопрос, а как кукис извлеч из ответа чтобы по этому кукису гулять по другим разделам? Код (Text): mov dwCodeLen,10 invoke HttpQueryInfo,hRequest,HTTP_QUERY_STATUS_CODE,addr dwcode,addr dwCodeLen,0 .if eax == 1 && dword ptr [dwcode] == '203' mov dwCodeLen,sizeof buffer invoke HttpQueryInfo,hRequest,HTTP_QUERY_COOKIE,addr buffer,addr dwCodeLen,0 .endif Данный метод не работает.
ну вообще они автоматом цепляться будут, иначе указать флаг INTERNET_FLAG_NO_COOKIES, выташить как куки я не помню, зато вот так можно вытащить весь заголовок ответа: Код (Text): HttpQueryInfoA(pReq,HTTP_QUERY_RAW_HEADERS_CRLF,pbuf,szBuf,dwTmp)
Кажется вот так: Код (Text): mov dwCodeLen,sizeof buffer invoke lstrcpy,addr buffer,$CTA0("Set-Cookie") invoke HttpQueryInfo,hRequest,HTTP_QUERY_CUSTOM,addr buffer,addr dwCodeLen,0 Через HTTP_QUERY_RAW_HEADERS_CRLF глянул, там Set-Cookie, я когда тестил указывал просто Cookie, поэтому не работало. Большое спасибо еще раз