Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2012, 22:09   #1
rosljk
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 83
Восклицание Авторизация на сайте

Доброе Время cуток!

Я начинающий программист.Помогите мне Gожалуйста разобраться с моим кодом для авторизации на сайт http://vsevo.16mb.com


Код:
unit Vhod_na_sait_vsevo_16mb_com;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var StrPage,ssylka:string;
  log:TstringList;
begin
 ssylka:='http://vsevo.16mb.com/index.php';
 log:= TstringList.Create;
 log.Add('username='+Edit1.Text);
 log.Add('password='+Edit2.Text);
 log.Add('Submit=Войти');
 log.Add('option=com_users');
 log.Add('task=user.login');
 log.Add('return=aW5kZXgucGhwP0l0ZW1pZD00MzU=');
 log.Add('0de0116a46f2695fea0bbfe9aa07d846=1');
 StrPage:=idhttp1.Post(ssylka, log);          <------------Здесь ОШИБКА какая то ????
 if pos ('logout',StrPage)<>0 then
 Label3.Caption:='Авторизовались'
 else Label3.Caption:='Неверен пароль';
 log.Free;
end;

end.

Последний раз редактировалось rosljk; 17.04.2012 в 22:16. Причина: Ошибка в коде
rosljk вне форума Ответить с цитированием
Старый 18.04.2012, 00:11   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Во-первых, какая ошибка?
Во-вторых, вы уверены в передаваемых параметрах?

УПД Вы, похоже, не разбирались, что значат параметры?
Просто перехватили сниффером и довольны
Например, return=<непонятная строчка>, это закодированная ссылка на страницу (base64 кодирование).
Включите у idhttp свойство handleredirects, так как на запрос возвращается не страница, а ссылка на другую страницу.
Скорее всего у вас ошибка 302.

Также неправильна строчка 0de0116a46f2695fea0bbfe9aa07d846=1. Эта строчка является динамически создаваемой. Правильнее сделать так:
1) получить с помощью idhttp страницу http://vsevo.16mb.com/index.php/login
2) распарсить ее и достать параметр, который является скрытым (спрятан в форме входа <input type="hidden" value="1" name="то - что нужно достать">)
3) сформировать правильный запрос вида:
username=<логин>&password=<пароль>& return=aW5kZXgucGhwP29wdGlvbj1jb21f dXNlcnMmdmlldz1wcm9maWxl&<вытащенно е значение>=1

aW5kZXgucGhwP29wdGlvbj1jb21fdXNlcnM mdmlldz1wcm9maWxl - это index.php?option=com_users&view=pro file

Возможно что-то еще упустил.
Вероятно cookie тоже влияет, но при беглом просмотре трудно понять.

УПД2 Работающий пример во вложении.

УПД3 Забыл отключить настройки прокси в примере (поэтому он не работал).
Вложения
Тип файла: zip example.zip (298.6 Кб, 36 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 18.04.2012 в 18:30.
BDA на форуме Ответить с цитированием
Старый 18.04.2012, 18:11   #3
rosljk
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 83
По умолчанию У меня вопрос к Вам BDA

Обесните тупому человеку
но у мне НИЧЕГО НЕ ПОНЯТНО
ПОжалуйста обясните МНЕ ДОСТУПНО

Последний раз редактировалось rosljk; 18.04.2012 в 18:34.
rosljk вне форума Ответить с цитированием
Старый 18.04.2012, 18:39   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Постараюсь объяснить:
1) Сначала смотрим, как происходит авторизация на сайте. Проходим ее несколько раз, попутно перехватывая все Charles (программа для отладки веб-сайтов и подобного).
При заходе на сайт http://vsevo.16mb.com/index.php браузер получает cookies, которые потом будет передавать со следующими запросами. Значит нашей программе их тоже нужно получить. Для этого подключаем CookieManager и свойство AllowCookies.
2) Внимательно изучаем то, что передает программа при авторизации и изучаем html код формы входа. Благодаря нескольким заходам, понимаем, что последний параметр меняется при каждом входе. Мы должны понять откуда он берется. Оказывается что это скрытое поле формы входа.
3) После загрузки сайта и получения cookies "достаем" этот меняющийся параметр из html кода страницы.
4) Формируем правильное содержание для post запроса и вуаля - авторизация пройдена успешно.

(исправленный пример выше)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 18.04.2012, 21:29   #5
rosljk
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 83
По умолчанию

Я пользуюсь HTTPAnalyzer

я получаю Post Data:

username - test
password - 123456
Submit - Войти
option - com_users
task - user.login
return - aW5kZXgucGhwP0l0ZW1pZD00MzU=
53924f0519b06741dd63044d82e4d427 - 1


а Cookies:

Cookies Name
a0940828b10aa9891adbaf61b6886196
и
Value
cfbfd0d5f059f8fd929bb10c374666cd


как понять для чего ЭТО???

Последний раз редактировалось rosljk; 18.04.2012 в 21:40.
rosljk вне форума Ответить с цитированием
Старый 18.04.2012, 21:36   #6
rosljk
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 83
По умолчанию

В твоем ПРИМЕРЕ мне выдоет ОШЫБКУ:

raised exception class EldSocketError with message 'Socket Error #10061 Connection refused.'.Process stopped.Use step or Run to continue.


я жму ОК
и меня кидает на ету строчку:

tmp := copy(tmp, pos('aW5kZXgucGhwP0l0ZW1pZD00MzU=', tmp) + length('aW5kZXgucGhwP0l0ZW1pZD00MzU ='), length(tmp) - length('aW5kZXgucGhwP0l0ZW1pZD00MzU ='));

И БОЛЬШЕ НИЧЕГО.....
Что мне делать HELP????
rosljk вне форума Ответить с цитированием
Старый 18.04.2012, 21:42   #7
rosljk
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 83
По умолчанию

Вот здесь как то просто и быстро http://youtu.be/vLAQUbkn8dQ
rosljk вне форума Ответить с цитированием
Старый 18.04.2012, 21:59   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Конечно просто и быстро, так как рассматривается простейший пример.
В случае сайта http://vsevo.16mb.com/index.php это не так.
Он использует изменяемые параметры, чтобы сложнее было залогиниться.
Cookies сами сохранятся в CookieManager, если настроить, так как я сказал выше (цитата: Для этого подключаем CookieManager и свойство AllowCookies).
Попробуйте скачать пример еще раз и проверьте, открывается ли вообще сайт (у меня все работает).
К вопросу для чего:
1) Вы хотите залогиниться на сайте (ваша цель)
2) Сайт старается оградиться от желающих на нем залогиниться с помощью программы
Непонятные цифро-буквенные сочетания сами наталкивают на мысль, что они являются динамическими.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 19.04.2012, 10:21   #9
rosljk
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 83
По умолчанию

Как подключить
CookieManager и свойство AllowCookies?
rosljk вне форума Ответить с цитированием
Старый 19.04.2012, 10:57   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Положить на форму idhttp и cookiemanager. Включить у idhttp свойство allowcookies в инспекторе объектов. В том же инспекторе объектов задать у idhttp cookiemanager. Можно сделать то же самое в событии oncreate формы, предварительно положив эти компоненты на форму
Код:
idhttp1.allowcookies:=true;
idhttp1.cookiemanager:=idcookiemanager1;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте gawrilowalex Работа с сетью в Delphi 3 25.06.2011 00:26
Авторизация на сайте Areostar Общие вопросы .NET 3 03.11.2010 17:22
Авторизация на сайте и.... quarty Общие вопросы Delphi 0 30.10.2010 03:22
Авторизация на сайте. Pliks Общие вопросы по Java, Java SE, Kotlin 5 08.06.2010 13:51