Помогите пожалуйста с авторизацией на сайте.
Есть сайт hockeyarena.net. На нём форма
Код HTML:
<form name="login" method="post" action="index.php?p=security_log.php" target="">
<INPUT TYPE="text" id='nick' NAME="nick" SIZE="15" class="nice">
<INPUT TYPE="password" NAME="password" SIZE="15" class="nice">
<input name="submit" type="submit" value="Зайти в свою команду" class="button">
</form>
С помощью браузера прошел авторизацию и проследил в снифере, получил вот что
Цитата:
Host=www.hockeyarena.net
User-Agent=Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language=en-us,en;q=0.5
Accept-Encoding=gzip,deflate
Accept-Charset=ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive=115
Connection=keep-alive
Referer=http://www.hockeyarena.net/ru/index.php
Cookie=__utma=229377541.1911289248. 1266001033.1281940038.1281942470.27 6; __utmz=229377541.1269606385.98.3.ut mccn=(referral)|utmcct=/away.php|utmcmd=referral; halang=ru; PHPSESSID=5v8pc0h6gddhvijfh7v11c14c 4; __utmc=229377541; __utmb=229377541\n"
Content-Type=application/x-www-form-urlencoded
Content-Length=143
POSTDATA=nick=Ozerich&password=1234 5678&submit=%D0%97%D0%B0%D0%B9%D1%8 2%D0%B8+%D0%B2+%D1%81%D0%B2%D0%BE%D 1%8E+%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD %D0%B4%D1%83
|
и результат 301 Moved Permanently(переадресация на другую страницу)
Пишу код на С++ с использованием WinInet
Код:
char PARAMS[144] = "nick=Ozerich&password=12345678&submit=%D0%97%D0%B0%D0%B9%D1%82%D0%B8+%D0%B2+%D1%81%D0%B2%D0%BE%D1%8E+%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%83";
char HEADERS[] =
"Host: www.hockeyarena.net\n"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8\n"
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n"
"Accept-Language: en-us,en;q=0.5\n"
"Accept-Encoding: gzip,deflate\n"
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n"
"Keep-Alive: 115\n"
"Connection: keep-alive\n"
"Referer: http://www.hockeyarena.net/ru/index.php?p=security_log.php\n"
"Cookie: __utma=229377541.1911289248.1266001033.1281940038.1281942470.276; __utmz=229377541.1269606385.98.3.utmccn=(referral)|utmcct=/away.php|utmcmd=referral; halang=ru; PHPSESSID=5v8pc0h6gddhvijfh7v11c14c4; __utmc=229377541; __utmb=229377541\n"
"Content-Type: application/x-www-form-urlencoded\n"
"Content-Length: 143";
int main(int argc, char **argv)
{
bool ok = false;
//Инициализация WinInet
HINTERNET hInternet = InternetOpen(AGENT,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
int k = sizeof(HEADERS);
if(hInternet != NULL)
{
//открытие HTTP сессии
HINTERNET hConnect = InternetConnect(hInternet, "www.hockeyarena.net", INTERNET_DEFAULT_HTTP_PORT,
NULL, NULL, INTERNET_SERVICE_HTTP,0 , 1);
if(hConnect != NULL)
{
//Открытие запроса
HINTERNET hRequest = HttpOpenRequest(hConnect, "POST","ru/index.php?p=security_log.php",NULL,NULL,0,
INTERNET_FLAG_KEEP_CONNECTION,1);
if(hRequest != NULL)
{
//Отправка запроса
bool bSend = HttpSendRequest(hRequest, HEADERS, sizeof(HEADERS) , PARAMS, sizeof(PARAMS));
if(bSend)
{
ofstream fout("index.html", ios::out|ios::binary);
if(fout.is_open())
{
for(;;)
{
char szData[1024];
DWORD dwBytesRead;
bool bRead = InternetReadFile(hRequest,szData,sizeof(szData) - 1,&dwBytesRead);
if(bRead == false || dwBytesRead == 0)
break;
szData[dwBytesRead] = 0;
fout << szData;
ok = true;
}
}
}
InternetCloseHandle(hRequest);
}
InternetCloseHandle(hConnect);
}
InternetCloseHandle(hInternet);
}
if(ok)
system("start index.html");
return 0;
}
Запускаю программу и отслеживаю с помощью снифера, результат 400 Bad Request. Если вместо HEADERS передавать NULL то возвращает 200 ОК но надо еще как то переадресовать дальше!
Нужна помощь!