Страница 1 из 1

POST запрос

Добавлено: 19 янв 2015, 04:43
Tumbermory
Доброго времени суток, помогите пожалуйста. Ситуация такая. После авторизации на сайте появляется необходимая информация которую я хочу спарсить чем либо. Я отправляю POST запрос на авторизацию а возвращается html с ошибкой.
Вопрос 1: Почему возвращается такой html?
Вопрос 2: Не совсем понимаю что вообще должно вернутся, куки?
Вопрос 3: Как с помощью того что вернется мне быть авторизированным и получить необходимую информацию со страницы?
Заранее спасибо, тема новая, разбираюсь плохо :(

form со страницы:

Код: Выделить всё

<form action="" method="post" name="auth">
			<input type="hidden" name="redirect" value="/main.html">
				<div border="0" align="left">
					<p>Логин:</p>
					<div class="login_field"><input style="width:300px; height: 25px;" type="text" name="oper_user" id="oper_user" maxlength="30"></div>
                             <script type="text/javascript">
                                 $(document).ready(function(){
                                $(':text').keyboardLayout();
						});
						</script>
					<p>Пароль:</p>
					<div class="login_field"><input style="width: 300px; height: 25px" type="password" name="passwd" maxlength="32"></div>
						<script type="text/javascript">
                            $(document).ready(function(){
						$(':password').keyboardLayout();
						});
						</script>





                <br>
				<a href="/forgetpass.html">Забыли пароль?</a>
				<br><br>	
				<div class="center"><input type="submit" style="display:inline" class="btn" value="Войти">
				</div>
			</div>
			</form>
Код запроса:

Код: Выделить всё

HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("https://issa.beltelecom.by/main.html");

            try {
                // определяешь элементы массива POST
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                nameValuePairs.add(new BasicNameValuePair("oper_user", "**********"));
                nameValuePairs.add(new BasicNameValuePair("passwd", "*******"));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                // выполняешь POST-запрос
                HttpResponse response = httpclient.execute(httppost);
                String s = EntityUtils.toString(response.getEntity());
                Log.d("My", s);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
            } catch (IOException e) {
                // TODO Auto-generated catch block
            }
Вот содержание String s:

Код: Выделить всё

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>403 Forbidden</title>
    </head><body>
    <h1>Forbidden</h1>
    <p>You don't have permission to access /main.html
    on this server.</p>
    </body></html>

Re: POST запрос

Добавлено: 19 янв 2015, 12:24
Foenix
ахаха
вы в этом телекоме не работаете, я так поняла
так просто там не авторизуешься))

Re: POST запрос

Добавлено: 19 янв 2015, 13:35
Tumbermory
Foenix писал(а):ахаха
вы в этом телекоме не работаете, я так поняла
так просто там не авторизуешься))
Вы бы лучше объяснили чем смеятся, я же говорю, тема новая. Почему нельзя авторизироватся? По средством браузера можно, а так нельзя? Или нужно использовать не POST запрос?

Re: POST запрос

Добавлено: 19 янв 2015, 13:58
Foenix
потому что если бы так все авторизовывались..
И как я бы могла объяснить - если я не понимаю что именно вы хотите?

в общем - видите там замочек такой в адресной строке?
Так просто там не авторизоваться. для этого нужен API, правила авторизации и прочее, прочее, прочее. Если этого всего у вас нет (или вы там не работаете) то думаю, что это невозможно. Сервер просто вас не пустит туда.
Можете почитать, к примеру, про авторизацию у гугла.. там песня целая с получением токенов и прочее прочее

Re: POST запрос

Добавлено: 19 янв 2015, 14:45
Tumbermory
Foenix писал(а):потому что если бы так все авторизовывались..
И как я бы могла объяснить - если я не понимаю что именно вы хотите?

в общем - видите там замочек такой в адресной строке?
Так просто там не авторизоваться. для этого нужен API, правила авторизации и прочее, прочее, прочее. Если этого всего у вас нет (или вы там не работаете) то думаю, что это невозможно. Сервер просто вас не пустит туда.
Можете почитать, к примеру, про авторизацию у гугла.. там песня целая с получением токенов и прочее прочее
Простите, может я не был точен в вопросе, через эту форму логинятся все пользователи и после этого попадают в личный кабинет.
То есть если на пальцах - так же как в браузере я логинюсь на сайте и имею доступ к ЛК, хочу залогинится через пост запрос и распарсить страницу личного кабинета, поправьте меня если я запутался

Re: POST запрос

Добавлено: 19 янв 2015, 14:54
Foenix
я вижу, что все логинятся, но и в гугл, и в майл-ру и вк - все "логинятся"
вот, почитайте как это делает ВК
http://vk.com/dev/auth_mobile

Re: POST запрос

Добавлено: 19 янв 2015, 15:14
Tumbermory
Foenix писал(а):я вижу, что все логинятся, но и в гугл, и в майл-ру и вк - все "логинятся"
вот, почитайте как это делает ВК
http://vk.com/dev/auth_mobile
И на том спасибо, буду искать..

Re: POST запрос

Добавлено: 19 янв 2015, 15:16
Foenix
а что искать? или есть там API или нет. Если нет - то не войдете никак из приложения. Для приложений выдается еще ключ отдельный - чтоб сервер понимал, для доп. защиты кто авторизуется с какого приложения.
Для этого все это и задумано - чтоб нельзя было так просто все делать :)

Re: POST запрос

Добавлено: 19 янв 2015, 15:29
Mikhail_dev
Авторизоваться можно, и скорее всего POST запросом и делается. Возьмите какой-нибудь сниффер пакетов, посмотрите куда уходит POST запрос и посмотрите что туда передаётся в параметры. В хроме - консоль разработчика, она уже как сниффер, можно видеть что за пакеты и куда ушли.

Re: POST запрос

Добавлено: 19 янв 2015, 15:32
Tumbermory
Foenix писал(а):а что искать? или есть там API или нет. Если нет - то не войдете никак из приложения. Для приложений выдается еще ключ отдельный - чтоб сервер понимал, для доп. защиты кто авторизуется с какого приложения.
Для этого все это и задумано - чтоб нельзя было так просто все делать :)
Спасибо, я просто задумался о том, что браузер тоже по факту приложение, ну да ладно :D

Re: POST запрос

Добавлено: 19 янв 2015, 15:37
Tumbermory
Mikhail_dev писал(а):Авторизоваться можно, и скорее всего POST запросом и делается. Возьмите какой-нибудь сниффер пакетов, посмотрите куда уходит POST запрос и посмотрите что туда передаётся в параметры. В хроме - консоль разработчика, она уже как сниффер, можно видеть что за пакеты и куда ушли.
Я в принципе через хромовую панель структуру и смотрел, но как отловить ей обмен пакетами чет не смекаю

Re: POST запрос

Добавлено: 19 янв 2015, 16:44
Mikhail_dev
найти в панели вкладку с просмотром отправленных пакетов, дальше зайти на сайт и авторизоваться через браузер. он отправит запрос на сервер, его и проанализировать.

Re: POST запрос

Добавлено: 19 янв 2015, 16:58
Foenix
и что, а дальше?
это все равно будет авторизация через браузер - ну покажите все в вебвью, дальше-то что? тупик.
Получается так можно любому - взять и попросить пользователя ввести логин с паролем в программу и цапнуть их, затем ввести в браузере и делай ты с аккаунтом что хочешь?
не все так просто..

Хотя, если вы надеетесь на огромную ДЫРУ в этом потрале..)

Re: POST запрос

Добавлено: 19 янв 2015, 17:44
Mikhail_dev
Через какой браузер? Делается обычный POST запрос с необходимыми параметрами. Он возвращает скорее всего кукисы
Получается так можно любому - взять и попросить пользователя ввести логин с паролем в программу и цапнуть их, затем ввести в браузере и делай ты с аккаунтом что хочешь?
Интересно, а если юзер вводит в программу логин и пароль, то чего жаловаться если программа начала использовать его данные в других целях?
Хотя, если вы надеетесь на огромную ДЫРУ в этом потрале..)
И в чем дыра тут будет? Что авторизация происходит посредством программы? ничего дырного тут не вижу

Re: POST запрос

Добавлено: 19 янв 2015, 18:09
Foenix
для этогг и делают авторизацию, чтоб другие проги не могли этого делать)

Re: POST запрос

Добавлено: 19 янв 2015, 19:52
Tumbermory
Foenix писал(а):для этогг и делают авторизацию, чтоб другие проги не могли этого делать)
А какая принципиальная разница между любым сторонним браузером и приложением?

Re: POST запрос

Добавлено: 19 янв 2015, 20:27
Foenix
я думаю что почти никакой, факт - откуда идет запрос. Со странички самого предприятия, где нету зловредного кода, или с другой странички - тоже не даст зайти.
А так вы сделаете прогу по подбору паролей, или любой может сделать прогу для доступа к банку, забрав себе все пароли. Такое низя делать)
Т.е. можно делать - к незащищенным сайтам. А не к таким, как у вас.
Вообще я в тонкостях веба не разбираюсь, если честно, поэтому не могу точно ответить на данный вопрос.

Re: POST запрос

Добавлено: 19 янв 2015, 22:03
Mikhail_dev
для этогг и делают авторизацию, чтоб другие проги не могли этого делать)
до официального приложения хабра, было немало кастомных, которые юзеры делали сами, с авторизацией и прочим. И да, без API
я думаю что почти никакой, факт - откуда идет запрос. Со странички самого предприятия, где нету зловредного кода, или с другой странички - тоже не даст зайти.
Нету разницы откуда идёт запрос. Сервер не может знать что это вообще. он только знает, что ему пришел пост запрос, хоть с браузера, хоть с холодильника. Серьёзно, есть уже холодильники и микроволновки с андроидом, можно и там авторизацию сделать.
А так вы сделаете прогу по подбору паролей, или любой может сделать прогу для доступа к банку, забрав себе все пароли.
Сервер заблокирует тебя с большой долей вероятности, если POST запросов придёт слишком много, во-вторых капчу никто не отменял, в третьих - брутфорс будет идти очень долго, ибо это не локальный подбор пароля.
А так вообще да, можно сбрутить пароль и многие это делали и делают. Я лет так 10 назад и аську брутил, и почтовые ящики. Брутил через программу, написанную на делфи, которая не залазит в браузер, а сразу шлет пакеты с целью залогиниться.