Delphi – Indy (видеоурок). Регистрация на Rambler’е
4 марта 2010
Очередной видеоурок по Delphi. В этот раз я покажу, как с помощью Delphi и компонента Indy написать программу для регистрации почтовых ящиков через сайт Rambler.ru.
Программа будет загружать на форму капчу с сайта, а затем отправлять на сайт данные для регистрации.
Не работает, вот код:
S:=IdHTTP1.Get(‘http://mail.zp.ua/add.php‘);
sid:=Copy(S, Pos(‘sid’, S)+16, 32);
FS:=TFileStream.Create(‘captcha.jpeg’,FMCreate);
IdHTTP1.Get(‘http://mail.zp.ua/robot_check/showcode.php?sid='+sid+'.jpeg', FS);
FS.Free;
Image1.Picture.LoadFromFile(‘captcha.jpeg’);
В Uses jpeg уже был и результат одинаков, что я делаю не так? Может не так что понял???
А почему у вас +16 стоит, если отступ там в четыре символа, а не 16.
И в адресе картинки нет расширения ’.jpeg’, оно только у сохраняемой картинки:
IdHTTP1.Get(‘http://mail.zp.ua/robot_check/showcode.php?sid='+sid, FS);
Просто запросом ничего не получается:
Data:=TStringList.Create;
Data.Add(‘username=’+AddressEdit.Text);
Data.Add(‘passwd=’+PasswordEdit.Text);
Data.Add(‘passwd2=’+PasswordEdit.Text);
Data.Add(‘rname=’+NameEdit.Text);
Data.Add(‘sid=’+sid);
Data.Add(‘code=’+CaptchaEdit.Text);
Data.Add(‘question=Девичья+фамилия+матери’);
Data.Add(‘answer=1234321′);
Data.Add(‘email=[email protected]’);
если будут еще вопросы – стучите лучше в icq, здесь я буду всё удалять
а как правильно парсить если скажем в коде страницы одинаковые параметры и два разных значения?Например:
Имя
<input name="x_e61b35b29b882a0e"
Фамилия
<input name="x_8d392d955392d516"
как видите они почти одинаковые но тока слово имя или фамилия разные!
надо спарсить два значения name=
как написать правильно код на второе значение если на первое он так:
name:=Pars('<input name="',S,'"');
ООчень надо пожалста помогите кто по опытней!
А я сталкнулся с проблемой
Хотел сделать регистратор на одном из сайтов, но там регистрация проходит на Java скриптах.
Можно ли сделать регистратор в таком случае ???
Если можно, снимите видеоурок как такое сделать.
Заранее спасибо!
Отследил такую штуку
action[0]=AuthExt.logon&username[0]=Мой логин&password[0]=Мой пароль&remember[0]=1
Но что дальше делать с этим не знаю, и в какой момент происходит проверка не знаю.
Что-то не проходит. Выдаёт ошибку. Собственно код, помогите найти то, что не даёт пройти регистрацию.
procedure TForm1.Button2Click(Sender: TObject);
var
Data:TStringList;
begin
Data:=TStringlist.Create;
Data. Add(‘skin=id’);
Data.Add(‘uniq_id=’+uniq_id);
Data.Add(‘action=register’);
Data.Add(‘user.fname=’+Edit1.Text);
Data.Add(‘user.Lname=’+Edit2.Text);
if RadioButton1.Checked then
Data.Add(‘user.gender=1′)
else
Data.Add(‘user.gender=2′);
Data.Add(‘user.bday’+Edit3.Text);
Data.Add(‘user.bmonth’+Edit4.Text);
Data.Add(‘user.byear’+Edit5.Text);
Data.Add(‘user.login=’+Edit6.Text);
Data.Add(‘user.domain=’+comboBox1.Text);
Data.Add(‘user.password1=’+Edit7.Text);
Data.Add(‘user.password2=’+Edit7.Text);
Data.Add(‘user.question=’+combobox2.Text);
Data.Add(‘user.answer=’+Edit8.Text);
Data.Add(‘user.Captcha=’+Edit9.Text);
S:=idhttp1.Post(‘http://id.rambler.ru/script/newuser.cgi',Data);
if pos(‘logout’,S)0 then
Memo1.Lines.Add(‘Регистрация успешно завершена!’)
else
Memo1.Lines.Add(‘This is FAIL! Произошла ошибка!’);
Спасибо за урок дружище! Реально полезное дело делаешь.
Я тока не понял а как куки проверяются? В проекте о них ни слова, а снифак четко в строке показывает чеккуки
Имхо, для затравки урок – самое оно! Но тема вроде не полностью раскрыта… м?
Здравствуйте. если есть у кого исходник скрипта для секретного вопроса на рамблере скинте пожалуйста. пытался сам написать но нечего не выходит! мешает капча а к ней не получается подобратся. ну или посоветуйте что небудь. Заранее спасибо.
Спасибо, интересно
[Ответить]
Помогите отобразить каптчу по етой ссылке “http://mail.zp.ua/robot_check/showcode.php?sid=8601c780e829500e880185846ba3de2e”
[Ответить]
Zdez Bil Ya Reply:
марта 11, 2010 at 22:49
Это картинка формата jpeg.
Делайте, как рассказано в уроке, только в uses подключите модуль jpeg, и файл сохраняйте с расширением jpeg
[Ответить]
Не работает, вот код:
S:=IdHTTP1.Get(‘http://mail.zp.ua/add.php‘);
sid:=Copy(S, Pos(‘sid’, S)+16, 32);
FS:=TFileStream.Create(‘captcha.jpeg’,FMCreate);
IdHTTP1.Get(‘http://mail.zp.ua/robot_check/showcode.php?sid='+sid+'.jpeg', FS);
FS.Free;
Image1.Picture.LoadFromFile(‘captcha.jpeg’);
В Uses jpeg уже был и результат одинаков, что я делаю не так? Может не так что понял???
[Ответить]
Zdez Bil Ya Reply:
марта 12, 2010 at 01:06
А почему у вас +16 стоит, если отступ там в четыре символа, а не 16.
И в адресе картинки нет расширения ’.jpeg’, оно только у сохраняемой картинки:
IdHTTP1.Get(‘http://mail.zp.ua/robot_check/showcode.php?sid='+sid, FS);
[Ответить]
Все получилось, большое спасибо!!!
[Ответить]
Скажите как можно зарегистрироваться если нет кнопки “Submit”? а только скрипт? ‘http://mail.zp.ua/add.php
[Ответить]
Zdez Bil Ya Reply:
марта 12, 2010 at 02:49
Кнопка или скрипт – не важно. Посмотрите снифером: просто пост-запрос на адрес ‘http://mail.zp.ua/add.post.php
[Ответить]
Просто запросом ничего не получается:
Data:=TStringList.Create;
Data.Add(‘username=’+AddressEdit.Text);
Data.Add(‘passwd=’+PasswordEdit.Text);
Data.Add(‘passwd2=’+PasswordEdit.Text);
Data.Add(‘rname=’+NameEdit.Text);
Data.Add(‘sid=’+sid);
Data.Add(‘code=’+CaptchaEdit.Text);
S:=IdHTTP1.Post(‘http://mail.zp.ua/add.post.php', Data);
’;
if Pos(‘@mail.zp.ua’, S)0 then
begin
ResultLabel.Caption:=’ДА
[Ответить]
Zdez Bil Ya Reply:
марта 12, 2010 at 11:49
Это последний бесплатный ответ)
Разве снифер не показывает, что нужно передавать вопрос, ответ и email?
[Ответить]
Добавил и ничего не изменилось
Data.Add(‘question=Девичья фамилия матери’);
Data.Add(‘answer=123654′);
Data.Add(‘email=’);
[Ответить]
Zdez Bil Ya Reply:
марта 12, 2010 at 17:32
Data.Add(‘question=Девичья+фамилия+матери’);
Data.Add(‘answer=1234321′);
Data.Add(‘email=[email protected]’);
если будут еще вопросы – стучите лучше в icq, здесь я буду всё удалять
[Ответить]
При нажатии получить каптчу ошибка IOHandler value is not valid.
вот код
implementation
var idkey, S:string;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var FS:TFileStream;
begin
S:=IdHTTP1.Get(‘http://passport.yandex.ru/passport?mode=register&msg=mail‘);
idkey:=Copy(S, Pos(‘idkey’, S)+16, 32);
FS:=TFileStream.Create(‘captcha.gif’,FMCreate);
IdHTTP1.Get(‘https://passport.yandex.ru/digits?idkey='+idkey , FS);
FS.Free;
Image1.Picture.LoadFromFile(‘captcha.gif’);
end;
end.
[Ответить]
Zdez Bil Ya Reply:
октября 10, 2010 at 21:54
В запросе протокол https. Присоедините к IdHTTP компонент IdSSLIOHandlerSocketOpenSSL
[Ответить]
Теперь ошибка ‘Could not load SSL Library’
[Ответить]
Zdez Bil Ya Reply:
октября 16, 2010 at 20:20
Библиотеки в “Windows/system32″ киньте
[Ответить]
Спасибо большое.
[Ответить]
почему выдаёт ошибку I/O Error 102
обьясните пожалуйста
[Ответить]
Почему я не могу перехватить параметры снифером (с рамблера) ?
[Ответить]
Zdez Bil Ya Reply:
декабря 2, 2010 at 20:04
Не знаю
[Ответить]
А ты еще ВидеоУроки будеш выкладывать?
[Ответить]
Zdez Bil Ya Reply:
декабря 2, 2010 at 20:16
да
[Ответить]
а как правильно парсить если скажем в коде страницы одинаковые параметры и два разных значения?Например:
Имя
<input name="x_e61b35b29b882a0e"
Фамилия
<input name="x_8d392d955392d516"
как видите они почти одинаковые но тока слово имя или фамилия разные!
надо спарсить два значения name=
как написать правильно код на второе значение если на первое он так:
name:=Pars('<input name="',S,'"');
ООчень надо пожалста помогите кто по опытней!
[Ответить]
Zdez Bil Ya Reply:
декабря 30, 2010 at 03:30
Парсите первое, удаляете, парсите второе
[Ответить]
Помогите пожалуйста! У меня не парсится hash вконтакте, что не так?
Код:
S:=IdHTTP1.Get(’http://http://vkontakte.ru/’);
hash:=Copy(S, Pos(’hash’, S)+4, 18);
[Ответить]
Нашёл решение
Огромное спасибо вам за видеоуроки!
[Ответить]
А я сталкнулся с проблемой
Хотел сделать регистратор на одном из сайтов, но там регистрация проходит на Java скриптах.
Можно ли сделать регистратор в таком случае ???
Если можно, снимите видеоурок как такое сделать.
Заранее спасибо!
[Ответить]
Zdez Bil Ya Reply:
января 18, 2011 at 23:13
Разницы никакой нет. Включаете снифер и смотрите запросы
[Ответить]
Отследил такую штуку
action[0]=AuthExt.logon&username[0]=Мой логин&password[0]=Мой пароль&remember[0]=1
Но что дальше делать с этим не знаю, и в какой момент происходит проверка не знаю.
[Ответить]
Zdez Bil Ya Reply:
января 18, 2011 at 23:51
Это параметры запроса. Отсылаете, приходит ответ, анализируете его
[Ответить]
A можно по подробнее на примере вот этого форума ? _http://blackstar.clanbb.ru/
[Ответить]
Zdez Bil Ya Reply:
января 19, 2011 at 14:26
Пример дан в видеоуроке.
[Ответить]
“Пример дан в видеоуроке”.
Нет в видеоуроке и намёка как работать с java скриптами.
Там показана только работа с Html кодом.
Поэтому вопрос остаётся в силе!
[Ответить]
Zdez Bil Ya Reply:
января 19, 2011 at 22:36
Я вам сказал, что никакой разницы нет. Браузер с сервером общаются запросами и ответами. Снифер всё это показывает
[Ответить]
А из за чего может быть ошибка при компиляции.
property maxlineaction does not exist
[Ответить]
Zdez Bil Ya Reply:
августа 13, 2011 at 03:28
Вы уверены, что это при компиляции ошибка? Скорее всего при открытии проекта. Просто игнорируйте
[Ответить]
Zdez Bil Ya Reply:
августа 13, 2011 at 03:28
Вы уверены, что при компиляции? Скорее всего при открытии проекта. Просто игнорируйте
[Ответить]
Что-то не проходит. Выдаёт ошибку. Собственно код, помогите найти то, что не даёт пройти регистрацию.
procedure TForm1.Button2Click(Sender: TObject);
var
Data:TStringList;
begin
Data:=TStringlist.Create;
Data. Add(‘skin=id’);
Data.Add(‘uniq_id=’+uniq_id);
Data.Add(‘action=register’);
Data.Add(‘user.fname=’+Edit1.Text);
Data.Add(‘user.Lname=’+Edit2.Text);
if RadioButton1.Checked then
Data.Add(‘user.gender=1′)
else
Data.Add(‘user.gender=2′);
Data.Add(‘user.bday’+Edit3.Text);
Data.Add(‘user.bmonth’+Edit4.Text);
Data.Add(‘user.byear’+Edit5.Text);
Data.Add(‘user.login=’+Edit6.Text);
Data.Add(‘user.domain=’+comboBox1.Text);
Data.Add(‘user.password1=’+Edit7.Text);
Data.Add(‘user.password2=’+Edit7.Text);
Data.Add(‘user.question=’+combobox2.Text);
Data.Add(‘user.answer=’+Edit8.Text);
Data.Add(‘user.Captcha=’+Edit9.Text);
S:=idhttp1.Post(‘http://id.rambler.ru/script/newuser.cgi',Data);
if pos(‘logout’,S)0 then
Memo1.Lines.Add(‘Регистрация успешно завершена!’)
else
Memo1.Lines.Add(‘This is FAIL! Произошла ошибка!’);
[Ответить]
var
Form1: TForm1;
implementation
var uniq_id, S:string;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var FS:TFileStream;
begin
S:=IdHTTP1.Get(‘http://id.rambler.ru/script/newuser.cgi‘);
uniq_id:=Copy(S, Pos(‘uniq_id’, S)+16, 32);
FS:TFileStream.Create(‘captcha.jpg’,FMCcreate);
idHTTP1.Get(‘http://id.rambler.ru/captcha/'+uniq_id+'.jpg', FS);
FS.Free;
Image1.Picture.LoadFromFile(‘captcha.jpg’);
end;
Вот код для получения капчи на рамблере,но ошибка вот в это
S:=IdHTTP1.Get(‘http://id.rambler.ru/script/newuser.cgi‘);
[Ответить]
Программа сломалась! Не хочет регать акки! В чём может быть проблема?
Каптча получается нормально!
[Ответить]
Zdez Bil Ya Reply:
марта 23, 2011 at 01:46
Это не полноценная программа. Это всего лишь демо к уроку. Скорее всего что-то поменяли в регистрации.
[Ответить]
Молочдчик, если это делал еще ты ты ахуенна! от души молодчик!
[Ответить]
Спасибо за урок дружище! Реально полезное дело делаешь.
Я тока не понял а как куки проверяются? В проекте о них ни слова, а снифак четко в строке показывает чеккуки
Имхо, для затравки урок – самое оно! Но тема вроде не полностью раскрыта… м?
[Ответить]
Здравствуйте. если есть у кого исходник скрипта для секретного вопроса на рамблере скинте пожалуйста. пытался сам написать но нечего не выходит! мешает капча а к ней не получается подобратся. ну или посоветуйте что небудь. Заранее спасибо.
[Ответить]
Я создал дал еррор
IOhandler но я сделал норм:))
потом Could not load SSL Library
а сейчас Error conecting with SSL
[Ответить]