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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2017, 11:33   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию Вход в аккаунт МТС - кто может объяснить что к чему?

Здравствуйте!
Надеюсь, мне кто-нибудь сможет помочь...
Хочу войти в свой аккаунт на МТСе. Смотрю через Network у Хрома, но там как-то всё очень путано... Может, найдётся кто-нибудь, кто поймёт там что к чему и поможет разобраться как залогиниться программно на сайте МТС?
Ship_1 вне форума Ответить с цитированием
Старый 22.05.2017, 11:39   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А что там путанного? Обычный хттпс + форма с пару скрытых токенов против взлома.
p51x вне форума Ответить с цитированием
Старый 22.05.2017, 11:50   #3
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Я в пост-запросах ещё не разбираюсь пока и с куками не работал. Здесь не понимаю нужны они или нет, не пойму где и как узнать что отправлять. Какие данные нужные из тех, что выводится в Networks у Login, или вообще не у него данные смотреть, а у lk.ssl.mts.ru? или ещё что-то другое? Обнаружил что есть https://oauth.mts.ru. Может, с ним как-то надо взаимодействовать?
Ship_1 вне форума Ответить с цитированием
Старый 22.05.2017, 12:30   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А открыть исходник страницы и посмотреть какую форму и куда она отправляет религия не позволяет?

Если вы ни с пост-запросами не работали, ни с куками, ни ссл (судя по тому, что пишите), зачем взялись сразу такую сложную для вас задачу решать?
p51x вне форума Ответить с цитированием
Старый 22.05.2017, 12:33   #5
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Две ссылки, которые, может, помогут кому-то разобраться...
Авторизация не знаю через что
Получение баланса на python
p51x, потому что мне нужно решить эту задачу. Недостаточное знание вопроса не позволяет.
Открыл. Вот код формы, если я правильно понял.
Код:
<form method="post" name="Login" onsubmit="return doSubmit();" autocomplete="on">
					<div class="b-form-login-v2-row">
							<div class="col-label">Номер телефона:</div>
							<div class="col-value">
								<div class="g-pr">
									<span class="input_prefix">+7</span>
									<input id="phone" type="tel" class="input input_mask_phone2" autocomplete="on" value="">
								</div>
								<div class="b-error_hint" for="phone" style="display: none;"></div>
							</div>
						
					
				</div>
				<div class="b-form-login-v2-row">
					<div class="col-label">Пароль:</div>
					<div class="col-value">
						<input id="password" type="password" name="IDToken2" class="input" value="" autocomplete="on">
						<!--div class="login_hint">Вам отправлено сообщение с&nbsp;паролем, дождитесь его и&nbsp;введите в&nbsp;поле &laquo;пароль&raquo;.</div-->
						<div class="b-error_hint" for="password" style="display: none;"></div>
					</div>
					
				</div>
				<div class="b-form-login-v2-row">
					<div class="col-label col-label_str2">
						
							
							
							
								<a class="get-pass get-password" href="/amserver/UI/Login?service=smspassword&amp;srcsvc=default">Получить пароль по&nbsp;SMS</a>
							
						
						
					</div>
					<div class="col-value">
						<button class="btn btn_red btn_big btn_login"><span>Войти</span></button>
					</div>
				</div>
				<input type="hidden" id="IDButton" name="IDButton" value="Submit">
				<input type="hidden" id="IDToken1" name="IDToken1" value="">
				<input type="hidden" name="encoded" value="false">
				<input type="hidden" name="loginURL" value="/amserver/UI/Login?gx_charset=UTF-8">
			<input type="hidden" name="csrf.sign" value="4822a9790722d5289202fd1e3d70861a5bc1dd58ea2f2ed4195587258d98a42b"><input type="hidden" name="csrf.ts" value="1495445924326"></form>
Наверное, меня интересует эта часть:
Код:
				<input type="hidden" id="IDButton" name="IDButton" value="Submit">
				<input type="hidden" id="IDToken1" name="IDToken1" value="">
				<input type="hidden" name="encoded" value="false">
				<input type="hidden" name="loginURL" value="/amserver/UI/Login?gx_charset=UTF-8">
Но где тут понять куда она это отправляет?

Последний раз редактировалось Ship_1; 22.05.2017 в 12:49.
Ship_1 вне форума Ответить с цитированием
Старый 22.05.2017, 14:27   #6
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Подключил IdSSLIOHandlerSocketOpenSSL1 и IdCookieManager1.
Код:
  TmpStrL:=TStringList.Create;
  TmpStrL.Text:=IdHTTP1.Get('https://login.mts.ru/amserver/UI/Login');
  TmpStrL.SaveToFile('mts_result1.txt');
  TmpStrL.Free;
В ответе
Цитата:
Request Error
.
Ship_1 вне форума Ответить с цитированием
Старый 22.05.2017, 15:20   #7
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Попробовал добавить
Код:
  IdHTTP1.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
  IdHTTP1.Request.AcceptEncoding:='gzip, deflate, sdch, br';
  IdHTTP1.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4';
  IdHTTP1.Request.CacheControl:='max-age=0';
  IdHTTP1.Request.Connection:='keep-alive';
  IdHTTP1.Request.Host:='login.mts.ru';
  IdHTTP1.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36';
Получил ошибку программы:
Цитата:
Exception class EIdHTTPProtocolException with message 'HTTP/1.1 401 Unauthorized'
Ship_1 вне форума Ответить с цитированием
Старый 23.05.2017, 09:25   #8
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Неужели никто не может помочь в этом?
Ship_1 вне форума Ответить с цитированием
Старый 23.05.2017, 09:32   #9
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Ну как вариант, поменять Мозиллу в своём пост-запросе на какую-нибудь оперу.

Как-то читал на форуме, что из-за встроенного дефекта в idHTTP одной из версий индейки на любой запрос сервер возвращал ошибку 403, и как раз тоже для Mozilla. Помогла как раз смена идентификации на Opera.

Сорри, но времени искать пруф на тот форум сейчас нет

Update

А где в Вашем коде, который выше, данные для авторизации прописаны?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 23.05.2017 в 09:34.
Sciv вне форума Ответить с цитированием
Старый 23.05.2017, 10:48   #10
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Ну судя по примеру авторизации на Python (если он работает) кроме парогля и номера надо ещё два токена передавать, а они берутся при парсинге страницы авторизации. И эту-то страницу я и пытаюсь получить.
Попробовал так:
Код:
IdHTTP1.Request.UserAgent:='Opera/9.50 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36';
Всё равно та же ошибка (к слову, 401 а не 403)

Попробовал просто загрузить в веб-браузере
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  Flags, TargetFrameName, PostData, Headers: OleVariant;
begin
  WebBrowser1.Navigate('https://login.mts.ru/amserver/UI/Login', Flags,
    TargetFrameName, PostData, Headers);
end;
Нормально грузится.... Почему же не грузится в idHTTP?..

Последний раз редактировалось Ship_1; 23.05.2017 в 10:56.
Ship_1 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Может кто объяснить что происходит в этих двух строках. pompiduskus Общие вопросы C/C++ 7 01.11.2015 00:42
Что означает void setup, кто может объяснить, напишите(((((( yulja-uk Помощь студентам 1 21.12.2011 10:58
Кто нибудь может объяснить почему это так? Fedor111 Общие вопросы C/C++ 1 24.09.2011 20:12
кто может объяснить??? Надежда Карунова Помощь студентам 1 25.11.2010 17:38
дойти не может что к чему if-soft Паскаль, Turbo Pascal, PascalABC.NET 7 07.10.2008 10:45