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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2016, 10:56   #1
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию delphi авторизация + капча

Ни как не могу авторизоваться
Вот оригинал пост запроса
Код:
POST / HTTP/1.1
Host:site.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Referer: https://site.ru/
Cookie: ASP.NET_SessionId=gtsbmcd5qi1zxluxpki00xhk; _ga=GA1.2.1531168980.1476513804; _gat=1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 209
NeedShowBlockWithServiceProviderAndCountry=True&CountryId=253ca433-0ff2-93c3-889f-6e7a0824b13e&ServiceProviderId=674696fb-6dcd-0970-3320-aff714dab43d&Email=mail.ru&Captch
Вот мой проект
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TMemoryStream;
JPEG: TJPEGImage;
s:string;
begin
 Stream:=TMemoryStream.Create;
idhttp1.Get('https://site/ru/Account/CaptchaImage',Stream);
 Stream.Position:=0; //устанавливаем ОБЯЗАТЕЛЬНО на ноль
        JPEG:=TJPEGImage.Create;   //создаем jpeg
        JPEG.LoadFromStream(Stream);//загружаем данные из потока
        Image1.Picture.Assign(JPEG);//выводим в Image
end;

procedure TForm1.Button2Click(Sender: TObject);
var
bufer: string;
LoginData:Tstringlist;
begin
LoginData := TStringList.Create;
LoginData.Add('NeedShowBlockWithServiceProviderAndCountry=True&CountryId=253ca433-0ff2-93c3-889f-6e7a0824b13e&ServiceProviderId=674696fb-6dcd-0970-3320-aff714dab43d&Email=0mail.ru&CaptchaValue='+edit1.text+'&Password=r8H3Fg');
idhttp1.post('https://site/',LoginData);
sleep(10000);
bufer := IdHTTP1.Get('https://site/ru/Home/Index');
if Pos('Выйти', bufer) > 1 then
begin
ShowMessage('Все ок'); // Если она есть - все ок
end
else
ShowMessage('Проверьте Логин/пароль'); // Если не все - то не ок
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
IdHTTP1.Request.Referer:='https://site.ru/';
IdHTTP1.Request.AcceptEncoding:='gzip, deflate, br';
IdHTTP1.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
IdHTTP1.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
idhttp1.Request.UserAgent:='Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0'
end;
То есть я сначала получаю капчу,пишу ее в edit1 потом отправляю пост.
mitiay вне форума Ответить с цитированием
Старый 15.10.2016, 11:02   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так в TStringList параметры наверно по одному надо добавлять.

Что в ответ приходит?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.10.2016, 11:05   #3
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

302 found
mitiay вне форума Ответить с цитированием
Старый 15.10.2016, 11:12   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

это ж просто редирект.

Гугл говорит, что у инди есть свойство HandleRedirects для их автоматической обработки.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.10.2016, 11:49   #5
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Да кстати,там после авторизации стоит редикет на https://site/ru/Home/Index
А как "подождать" или самому перейти?
mitiay вне форума Ответить с цитированием
Старый 15.10.2016, 11:56   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Чего ждать? Вы о чем?
В 302 обычно нет никакого содержимого, только заголовок Location с адресом для перехода (браузеры сразу автоматически переходят туда).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.10.2016, 11:59   #7
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Чего ждать? Вы о чем?
В 302 обычно нет никакого содержимого, только заголовок Location с адресом для перехода (браузеры сразу автоматически переходят туда).
Ну вот я авторизовался пытаюсь спарсить site/ru/Home/Index.Опять ошибка 302.Хм мне кажется проблема с авторизацией(
mitiay вне форума Ответить с цитированием
Старый 15.10.2016, 12:02   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

302 это не ошибка, читайте сообщения выше до понимания.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.10.2016, 12:38   #9
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
302 это не ошибка, читайте сообщения выше до понимания.
Влючил редикет в idhttp.Выяснилось что проблема с авторизацией(перекидывается на главную).Мне кажется что проблема с капчей.То есть я просто беру картинку от сюда /ru/Account/CaptchaImage.Как бы так сказать то есть капча не так что требуется.Подскажите как быть.
А просто перейти по ссылке и спарсить картинку не получится(
<div class="registerForm topUpDown">
<img style="width: 200px;" id="imgCaptcha" src="/ru/Account/CaptchaImage" alt="captcha" />
<br />
<a href="javascript:RefreshCaptcha();" >Обновить</a>
mitiay вне форума Ответить с цитированием
Старый 15.10.2016, 13:05   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Если вы о том, что при переходе в браузере по ссылке /ru/Account/CaptchaImage показывается новая капча, то это нормально, она просто генерируется новая каждый раз при запросе на /ru/Account/CaptchaImage (старая возможно становится недействительной, но не важно), какие-либо привязки формы к конкретной капче вряд ли есть.

Вы же просто выполняете один запрос к /ru/Account/CaptchaImage и эту капчу и вводите, так что все нормально с ней.

В коде RefreshCaptcha оно тоже не делает ничего кроме перезаписи адреса в img, чтоб браузер выполнил запрос.

Код:
function RefreshCaptcha() {
    countOfPushOnGetPassowrdButton = 0;
    $('#CaptchaValue').val('');
    $('#imgCaptcha').attr("src", $("#CaptchaImage_Account").val());
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация в Delphi Streb БД в Delphi 3 16.04.2014 10:40
Delphi и авторизация на сайте borockov Общие вопросы Delphi 2 04.06.2013 12:04
[Delphi] Авторизация на одноклассниках rafffkaaa Фриланс 2 13.04.2012 20:57
Delphi и капча sanello1977 Работа с сетью в Delphi 1 24.05.2011 12:50
Авторизация в Delphi KiRiLl13 Общие вопросы Delphi 3 27.02.2009 07:57