Где, что не понятно? PHP: var tmp,str:string; // переменная str = строка begin str:=idhttp1.Get('http://vk.com/'); { считываем страницу и сохраняем её в строке (str) } tmp:=copy(str,pos('<title>',str)+7,pos('</title>',str)); {в строку Tmp копируется текст между <title> и </title> } // copy - скопировать часть строки // !! delete - удалить часть строки. Работает с VAR переменными. // pos - найти строку (символ) в подстроке end; PHP: var str:Tstringlist; // Список (аналог визуальный ListBox) tmp:string; // Строка (временная переменная) i:integer; // число (счетчик) begin str:=Tstringlist.Create(); // создаем список (выделяем память) str.Text:=idhttp1.Get('http://vk.com/'); // копируем в список текст страницы for i:=0 to str.count-1 do // цикл проходит по всему списку begin tmp:=str.Strings[i] ; // присваиваем строку из списка во временную, т.к. нельзя работать на прямую коммандой Delete delete(tmp,1,pos('img',tmp)); // удаляем с 1 симвода, до слова Img (если нет такого слова) то ничего не делает. // copy,delete,pos - читай выше. end; str.Free; // освобождаем список (память) end;
PHP: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, PngImageList, ImgList, IdHTTP, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls, ExtCtrls, IdCookieManager; type TForm1 = class(TForm) Image1: TImage; kap: TEdit; Button1: TButton; IdTCPClient1: TIdTCPClient; IdHTTP1: TIdHTTP; PngImageList1: TPngImageList; PngImageCollection1: TPngImageCollection; Button2: TButton; Kod: TComboBox; nomer: TEdit; text: TEdit; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var public_key, S:string; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var FS:TFileStream; begin IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)'; S:=IdHTTP1.Get('http://www.sms.tele2.ru/'); public_key:=Copy(S, Pos('public_key', S)+35, 32); FS:=TFileStream.Create('captcha.png',FMCreate); IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?public_key='+public_key, FS); FS.Free; Image1.Picture.LoadFromFile('captcha.png'); end; procedure TForm1.Button2Click(Sender: TObject); var Data:TStringList; begin Data:=TStringList.Create; Data.Add('do=send'); Data.Add('smstext='+text.Text); Data.Add('phone_cod='+Kod.text); Data.Add('number='+nomer.Text); Data.Add('sms_text='+text.Text); Data.Add('private_key='+kap.Text); Data.Add('public_key='+public_key); Data.Add('submit.x=0'); Data.Add('submit.y=0'); S:=IdHTTP1.Post('http://www.sms.tele2.ru/', Data); Data.Free; if Pos('<p><b><span style="color: green">Спасибо, Ваше сообщение принято!</span></b></p>', S)<>0 then Label1.Caption:='ДА :)' else Label1.Caption:='Нет;)' end; end. Народ я уже все волосы на голове выдрал помогите не отправляет смс !!!!!!!! Может всё дело в : PHP: Data.Add('submit.x=0'); Data.Add('submit.y=0'); я незнаю что место 0 ставить??????
Снифер в руки брал? PHP: Data.Add('submit.x=0'); Data.Add('submit.y=0'); Т.к. Кнопка на сайте в виде картинки, то идет авто ориентир х и у, это на случай, если кнопку хотят использовать как карту. (1 кнопка - много путей), в твоем случаи, это роли не играет, но если так хочешь поставь 15, 10 PHP: Data.Add('submit.x=15'); Data.Add('submit.y=10');
Всем доброго времени суток! Кто нибудь сталкивался с авторизацией на форуме vBulletin? Вот такой запрос уходит на авторизацию.. _http://forum.ru/login.php?vb_login_username=user&vb_login_password_md5=&s&vb_login_password_utf8 Как пароль в md5 переконвертить? Или всё намного проще?
PHP: procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('http://forum.antichat.ru/index.php?'); end; procedure TForm1.Button2Click(Sender: TObject); begin WebBrowser1.OleObject.Document.All.Tags('input').Item(1).Value:='логин'; // заполняем форму WebBrowser1.OleObject.Document.All.Tags('input').Item(2).Value:='пасс'; // заполняем форму WebBrowser1.OleObject.Document.All.Tags('input').Item(5).Click(); // нажимаем кнопку end; только что проверил, авторизовавшись на этом форуме
Ещё ничего не ваял.. Но вот строка запроса... http://forum.ru/login.php?vb_login_username=user&vb_login_password_md5=&s&vb_login_password_utf8 о_О = Password Hash...
iGlass, PHP: procedure TForm1.Button1Click(Sender: TObject); var Data : TStringList; PostSend, GetSend : string; begin IdHTTP1.Request.UserAgent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.51'; IdHTTP1.Request.Referer := 'http://forum.antichat.ru/index.php?'; IdHTTP1.Request.Accept := 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1'; IdHTTP1.Request.AcceptLanguage := 'ru-RU,ru;q=0.9,en;q=0.8'; IdHTTP1.Request.AcceptCharSet := 'iso-8859-1, utf-8, utf-16, *;q=0.1'; IdHTTP1.Request.AcceptEncoding := 'deflate, gzip, x-gzip, identity, *;q=0'; IdHTTP1.Request.Connection := 'Keep-Alive, TE'; IdHTTP1.Request.ContentType := ''; GetSend := IdHTTP1.Get('http://forum.antichat.ru/index.php?'); Data := TStringList.Create; Data.Add('vb_login_username='+Edit1.Text); Data.Add('vb_login_password='+Edit2.Text); Data.Add('cookieuser=1'); Data.Add('s='); Data.Add('do=login'); Data.Add('forceredirect=1'); Data.Add('vb_login_md5password='); PostSend := IdHTTP1.Post('http://forum.antichat.ru/login.php', Data); end; если смотреть в сниффере когда логинишся на форуме через браузер, то после vb_login_md5password=HTTP/1.1 200 OK Server: nginx Date: Fri, 30 Apr 2010 05:55:47 GMT Content-Type: text/html; charset=Windows-1251 Connection: keep-alive ... ... а в этом примере идет после vb_login_md5password=&HTTP/1.1 200 OK Server: nginx Date: Fri, 30 Apr 2010 05:55:47 GMT Content-Type: text/html; charset=Windows-1251 Connection: keep-alive ... ... хз почему...
Навскидку: s := IdHttp1.Get('http://www.google.ru'); Memo1.Lines.Text := Copy(s, pos('<title>', s) + 7, pos('</title>', s) - pos('<title>', s) -7);
для этого достаточно изменить несколько букв: s := IdHttp1.Get('http://www.google.ru'); Memo1.Lines.Append(Copy(s, pos('<title>', s) + 7, pos('</title>', s) - pos('<title>', s) -7));
stepashka_ откуда он должен парсить, не вижу запроса на получения списка друзей тупанул, если ты со страницы профиля пытаешься получить количество друзей то тег <span> есть до количества друзей, неправильно парсишь да и кстати почему ты используешь переменную s если страницу получаешь в переменную uns
Memo4.Lines.Append(Copy(s, pos('<span>', s) + 7, pos('</span>', s) - pos('<span>', s) -7)); у меня в коде это есть
я бы сделал так Code: function TForm1.Pars(T_, ForS, _T: string): string; var a, b: integer; begin Result := ''; if (T_ = '') or (ForS = '') or (_T = '') then Exit; a := Pos(T_, ForS); if a = 0 then Exit else a := a + Length(T_); ForS := Copy(ForS, a, Length(ForS) - a + 1); b := Pos(_T, ForS); if b > 0 then Result := Copy(ForS, 1, b - 1); end; procedure TForm1.Button1Click(Sender: TObject); var uns, s,log,pass: String; i: integer; begin memo4.lines.add('Старт'); idhttp1.HandleRedirects := True; for i := 0 to memo1.lines.count-1 do begin idhttp1.HandleRedirects := True; log:=copy(memo1.lines[0],1,pos(':',memo1.lines[0])-1); pass:=copy(memo1.lines[0],pos(':',memo1.lines[0])+1,20); uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk='); s:=Copy(uns,Pos('value=',uns)+7,56); memo4.lines.add(log + ' Авторизируемся' ); try idhttp1.get('http://vk.com/login.php?op=slogin&redirect=1&expire=0&to=&s='+s); uns := idhttp1.Get('http://vk.com/'); memo1.Lines.Delete(0) ; Memo4.Lines.Append(pars('Друзья <span>(', uns,')</span>')); memo4.lines.add(log + ' Валидный' ); memo2.lines.add(log + ':' + pass); except On E: Exception do begin memo4.lines.add(log + ' Невалид' ); memo3.lines.add(log + ':' + pass); memo2.Lines.Delete(memo2.Lines.Count); memo1.Lines.Delete(0); end; end; end; IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vk.com'); IdCookieManager1.AddCookie('remixchk=5; path=/;','vk.com'); end;