VeTaL_UA
24.09.2011, 16:10
Доброго времени суток!
В этой статье я попробую научить вас авторизоваться на сайте dump.ru с помощью Indy.
Что нам нужно для работы:
Delphi любой версии. Ссылки на скачку:
Delphi 7(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Delphi 2010(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Delphi XE(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Charles любой версии. Ссылка на скачку:
Charles 3.5.2(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Учётная запись на сайте dump.ru ([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Желание;
Ну что же, если все пункты присутствуют можно начать.
Переходим на сайт dump.ru ([Ссылки могут видеть только зарегистрированные и активированные пользователи]). Вы не должны быть авторизованы на сайте! Если вы авторизованы на сайте, тогда выйдите со своего профиля.
Включаем Charles. Ждем пока он включится и, когда он включился, нажимаем на кнопочку:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Должен засветится красный огонёк посередине кнопочки:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
В дальнейшем я буду называть эту кнопку кнопкой "Запись", а её состояние на первом рисунке - выключенной, на втором - включенной.
Переходим в окно браузера и авторизуемся на сайте dump.ru ([Ссылки могут видеть только зарегистрированные и активированные пользователи]), поставив галочку "запомнить". Когда авторизовались, выходим из своего профиля. Когда вышли из профиля, заново авторизуемся, только уже не ставим галочку "запомнить". Зачем столько раз авторизоваться вы поймете позже.
Теперь переходим в окно Charles и выключаем "Запись".
Теперь мы можем переходить к анализу полученных данных. В поле вкладки "Structure" должны были появится адреса сайтов:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Из этих адресов, нас интересует только "[Ссылки могут видеть только зарегистрированные и активированные пользователи]". Кликаем на нем:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь поясню что же появилось:
Первый <default> - это наша первая авторизация(с галочкой), точнее запрос на нее;
Второй <default> - это запрос выхода из профиля;
Третий <default> - это запрос на последнюю авторизацию(без галочки).
Зачем нам было три запроса:
В первом и третьем мы будем сравнивать "Request", чтобы узнать как он зависит от галочки "запомнить";
Во первом и втором мы будем сравнивать "Response", чтобы узнать разницу в ответе сервера в случаях, когда пользователь авторизован и когда не авторизован.
Теперь выбираем первый <default> и переходим на вкладку "Request":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
После этого проделываем те же действия с третьим <default>'ом:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь анализируем два Request'а. В первом запросе(с галочкой) есть поле auth_remember, а во втором нету.
Теперь приступаем к анализу Response'ов первого(авторизации) и второго(выхода) <default>'ов. Для этого выбираем первый <default> и переходим на вкладку "Response":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
После этого проделываем те же действия с вторым <default>'ом:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь анализируем два Response'а. В этой части мы поиграем в игру "найди 10 отличий", только нам будет достаточно и одного... Как мы видим на скрине, два Response'а отличаются строкой:
<!-- profile [Ссылки могут видеть только зарегистрированные и активированные пользователи] -->
Это нам и было нужно.
Теперь, когда мы собрали всю нужную информацию, можно приступать к написанию кода.
Теперь мы приступаем к написанию кода.
Запускаем делфи;
Кидаем на форму два компонента Edit, один компонент Button и один компонент CheckBox из вкладки "Standart":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Кидаем на форму один компонент IdHTTP из вкладки "Indy Clients":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Создаем обработчик событий OnClick на компоненте Button(два раза кликаем по Button'у);
Обьявляем переменные типа TStringList, String и TIdHTTP в процедуре нажатия на кнопку:
var
Data:TStringList;
Request:String;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь нам нужно написать исполняемый код.Но для этого надо знать, что писать:
Для начала нам нужно создать TStringList и TId[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:=TStringList.Create;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
Теперь нам нужно заполнить TStingList данными из Request'а, но мы не должны забывать, что поле "auth_remember" должно добавлятся только тогда, когда у нас стоит галочка "запомнить". В нашей программе e-mail мы будем вводить в Edit1, а пароль в Edit2, по этому код будет такой:
Data.Add('auth_login='+Edit1.Text);
Data.Add('auth_password='+Edit2.Text);
if CheckBox1.Checked then
begin
Data.Add('auth_remember=ok');
end;
Теперь нам нужно отправить запрос на сайт dump.ru с данными в TStringList'е, подгружая Response в String:
Request:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Data);
На предыдущем этапе можно и завершить авторизацию, но как же узнать авторизовались мы, или нет? Для этого мы и искали отличия в Response. Мы помним, что при удачной авторизации в Response появлялась строка.
<!-- profile [Ссылки могут видеть только зарегистрированные и активированные пользователи] -->
В этой строке "Statia" - это название учётной записи. Для проверки можно выбрать только кусочек этой строки
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
По этому у нас получится такой код:
if Pos('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Request)<>0 then
begin
ShowMessage('Авторизация прошла успешно');
end
else
begin
ShowMessage('Авторизация не удалась');
end;
Ну и под конец нам нужно очистить переменные для того, чтобы авторизоватся можно было много раз:
Data.Free;
Request:='';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Полный код процедуры нажатия на кнопку:
procedure TForm1.Button1Click(Sender: TObject);
var
Data:TStringList;
Request:String;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
begin
Data:=TStringList.Create;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)';
Data.Add('auth_login='+Edit1.Text);
Data.Add('auth_password='+Edit2.Text);
if CheckBox1.Checked then
begin
Data.Add('auth_remember=ok');
end;
try
Request:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Data);
if Pos('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Request)<>0 then
begin
ShowMessage('Авторизация прошла успешно');
end
else
begin
ShowMessage('Авторизация не удалась');
end;
finally
Data.Free;
Request:='';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
end;
end;
Теперь, когда мы закончили написание программы, запускаем программу и смотрим, что получилось.
Скачать исходник(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd21993),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Скачать скриншоты(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd21994),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Статья писалась VeTaL_UA для Zhyk.RU. При копировании указывать ссылку на данную тему.
В этой статье я попробую научить вас авторизоваться на сайте dump.ru с помощью Indy.
Что нам нужно для работы:
Delphi любой версии. Ссылки на скачку:
Delphi 7(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Delphi 2010(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Delphi XE(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Charles любой версии. Ссылка на скачку:
Charles 3.5.2(deposit ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),torrent ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Учётная запись на сайте dump.ru ([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Желание;
Ну что же, если все пункты присутствуют можно начать.
Переходим на сайт dump.ru ([Ссылки могут видеть только зарегистрированные и активированные пользователи]). Вы не должны быть авторизованы на сайте! Если вы авторизованы на сайте, тогда выйдите со своего профиля.
Включаем Charles. Ждем пока он включится и, когда он включился, нажимаем на кнопочку:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Должен засветится красный огонёк посередине кнопочки:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
В дальнейшем я буду называть эту кнопку кнопкой "Запись", а её состояние на первом рисунке - выключенной, на втором - включенной.
Переходим в окно браузера и авторизуемся на сайте dump.ru ([Ссылки могут видеть только зарегистрированные и активированные пользователи]), поставив галочку "запомнить". Когда авторизовались, выходим из своего профиля. Когда вышли из профиля, заново авторизуемся, только уже не ставим галочку "запомнить". Зачем столько раз авторизоваться вы поймете позже.
Теперь переходим в окно Charles и выключаем "Запись".
Теперь мы можем переходить к анализу полученных данных. В поле вкладки "Structure" должны были появится адреса сайтов:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Из этих адресов, нас интересует только "[Ссылки могут видеть только зарегистрированные и активированные пользователи]". Кликаем на нем:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь поясню что же появилось:
Первый <default> - это наша первая авторизация(с галочкой), точнее запрос на нее;
Второй <default> - это запрос выхода из профиля;
Третий <default> - это запрос на последнюю авторизацию(без галочки).
Зачем нам было три запроса:
В первом и третьем мы будем сравнивать "Request", чтобы узнать как он зависит от галочки "запомнить";
Во первом и втором мы будем сравнивать "Response", чтобы узнать разницу в ответе сервера в случаях, когда пользователь авторизован и когда не авторизован.
Теперь выбираем первый <default> и переходим на вкладку "Request":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
После этого проделываем те же действия с третьим <default>'ом:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь анализируем два Request'а. В первом запросе(с галочкой) есть поле auth_remember, а во втором нету.
Теперь приступаем к анализу Response'ов первого(авторизации) и второго(выхода) <default>'ов. Для этого выбираем первый <default> и переходим на вкладку "Response":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
После этого проделываем те же действия с вторым <default>'ом:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь анализируем два Response'а. В этой части мы поиграем в игру "найди 10 отличий", только нам будет достаточно и одного... Как мы видим на скрине, два Response'а отличаются строкой:
<!-- profile [Ссылки могут видеть только зарегистрированные и активированные пользователи] -->
Это нам и было нужно.
Теперь, когда мы собрали всю нужную информацию, можно приступать к написанию кода.
Теперь мы приступаем к написанию кода.
Запускаем делфи;
Кидаем на форму два компонента Edit, один компонент Button и один компонент CheckBox из вкладки "Standart":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Кидаем на форму один компонент IdHTTP из вкладки "Indy Clients":
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Создаем обработчик событий OnClick на компоненте Button(два раза кликаем по Button'у);
Обьявляем переменные типа TStringList, String и TIdHTTP в процедуре нажатия на кнопку:
var
Data:TStringList;
Request:String;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Теперь нам нужно написать исполняемый код.Но для этого надо знать, что писать:
Для начала нам нужно создать TStringList и TId[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:=TStringList.Create;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
Теперь нам нужно заполнить TStingList данными из Request'а, но мы не должны забывать, что поле "auth_remember" должно добавлятся только тогда, когда у нас стоит галочка "запомнить". В нашей программе e-mail мы будем вводить в Edit1, а пароль в Edit2, по этому код будет такой:
Data.Add('auth_login='+Edit1.Text);
Data.Add('auth_password='+Edit2.Text);
if CheckBox1.Checked then
begin
Data.Add('auth_remember=ok');
end;
Теперь нам нужно отправить запрос на сайт dump.ru с данными в TStringList'е, подгружая Response в String:
Request:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Data);
На предыдущем этапе можно и завершить авторизацию, но как же узнать авторизовались мы, или нет? Для этого мы и искали отличия в Response. Мы помним, что при удачной авторизации в Response появлялась строка.
<!-- profile [Ссылки могут видеть только зарегистрированные и активированные пользователи] -->
В этой строке "Statia" - это название учётной записи. Для проверки можно выбрать только кусочек этой строки
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
По этому у нас получится такой код:
if Pos('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Request)<>0 then
begin
ShowMessage('Авторизация прошла успешно');
end
else
begin
ShowMessage('Авторизация не удалась');
end;
Ну и под конец нам нужно очистить переменные для того, чтобы авторизоватся можно было много раз:
Data.Free;
Request:='';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Полный код процедуры нажатия на кнопку:
procedure TForm1.Button1Click(Sender: TObject);
var
Data:TStringList;
Request:String;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
begin
Data:=TStringList.Create;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](nil);
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)';
Data.Add('auth_login='+Edit1.Text);
Data.Add('auth_password='+Edit2.Text);
if CheckBox1.Checked then
begin
Data.Add('auth_remember=ok');
end;
try
Request:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Data);
if Pos('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',Request)<>0 then
begin
ShowMessage('Авторизация прошла успешно');
end
else
begin
ShowMessage('Авторизация не удалась');
end;
finally
Data.Free;
Request:='';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
end;
end;
Теперь, когда мы закончили написание программы, запускаем программу и смотрим, что получилось.
Скачать исходник(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd21993),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Скачать скриншоты(1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]*********/fd21994),2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),3 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),4 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]),5 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]));
Статья писалась VeTaL_UA для Zhyk.RU. При копировании указывать ссылку на данную тему.