Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
#1

POST авторизация с использованием JSOUP - Программирование Android

04.04.2015, 15:17. Просмотров 2743. Ответов 16
Метки нет (Все метки)

Вот собственно и у меня дедлок случился))

Ситуация следующая, пытаюсь залогиниться на joy.reactor.cc


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package com.noxx.joyreactor.Net;
 
 
import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
 
import com.noxx.joyreactor.Global;
 
import org.jsoup.Connection;
import org.jsoup.helper.HttpConnection;
import org.jsoup.nodes.Document;
 
import java.io.IOException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Auth {
    Activity activity;
    Global global;
    int DEFAULT_TIMEOUT = 7000;
 
    public Auth(Activity activity) {
        this.activity = activity;
        this.global = (Global) activity.getApplication();
    }
 
    public void doAuth() {
        new AuthTask().execute();
    }
 
    void makeAuth() {
        Document doc = null;
        try {
 
 
            String loginURL = "http://joy.reactor.cc" + "/login";
            String itemURL = "http://joy.reactor.cc";
            String useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36";
            String login = "login";
            String pass = "pass";
 
            //получаем страницу входа
            Connection.Response response1 = HttpConnection.connect(loginURL)
                    .ignoreHttpErrors(true)
                    .userAgent(useragent)
                    .execute();
            //цапаем оттуда токен
            String token = "";
            Matcher matcher = Pattern.compile("token = '(.*)'").matcher(response1.parse().select("html").html());
            if (matcher.find()) {
                token = matcher.group(1);
                Log.d("token", token);
            }
            for (Map.Entry<String, String> cookie : response1.cookies().entrySet()) {
                Log.d("cookie1", cookie.getKey() + " : " + cookie.getValue());
            }
            for (Map.Entry<String, String> head : response1.headers().entrySet()) {
                Log.d("headers1", head.getKey() + " : " + head.getValue());
            }
 
            //делаем пост запрос
            Connection connection2 = HttpConnection.connect(loginURL).cookies(response1.cookies())
                    .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
                    .header("Accept-Encoding", "gzip, deflate")
                    .header("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
                    .header("Cache-Control", "max-age=0")
                    .header("Connection", "keep-alive")
                    .header("Content-Length", "114")
                    .header("Content-Type", "application/x-www-form-urlencoded")
                    .header("Host", "joy.reactor.cc")
                    .header("Origin", "http://joy.reactor.cc")
                    .header("Referer", "http://joy.reactor.cc/login")
                    .data("signin[username]", login)
                    .data("signin[password]", pass)
                    .data("signin[_csrf_token]", token)
                    .userAgent(useragent)
                    .method(Connection.Method.POST)
                    .followRedirects(true);
 
            Connection.Response response2 = connection2.execute();
            for (Map.Entry<String, String> cookie : response2.cookies().entrySet()) {
                Log.d("cookie2", cookie.getKey() + " : " + cookie.getValue());
            }
            for (Map.Entry<String, String> head : response2.headers().entrySet()) {
                Log.d("headers2", head.getKey() + " : " + head.getValue());
            }
 
            // получаем страницу (уже должны быть авторизованы
            Connection connection3 = HttpConnection.connect(itemURL + "/all").userAgent(useragent).cookies(response2.cookies());
            Connection.Response response3 = connection3.execute();
            for (Map.Entry<String, String> cookie : response3.cookies().entrySet()) {
                Log.d("cookie3", cookie.getKey() + " : " + cookie.getValue());
            }
            for (Map.Entry<String, String> head : response3.headers().entrySet()) {
                Log.d("headers3", head.getKey() + " : " + head.getValue());
            }
            Document tt = response3.parse();
            String t = tt.select(".login").html();
            System.out.println(t);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    class AuthTask extends AsyncTask<Void, Void, Void> {
 
        @Override
        protected Void doInBackground(Void... params) {
            makeAuth();
            return null;
        }
    }
}


в логах имеем

Кликните здесь для просмотра всего текста
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/token﹕ 37293b9efea7edb5a4a5b7d950bc46dc
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/cookie1﹕ joyreactor : ver305319a4a97f6b9f5a285ae6834fd86ff:8f564790953b1891ba64b6b0c86f8d0f36435f0f
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ Cache-Control : private
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ Connection : keep-alive
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ Content-Encoding : gzip
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ Content-Type : text/html; charset=utf-8
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ Date : Fri, 03 Apr 2015 16:03:11 GMT
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ Server : nginx/1.6.2
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ Transfer-Encoding : chunked
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ Vary : Accept-Encoding
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ X-Android-Received-Millis : 1428076991209
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ X-Android-Response-Source : NETWORK 401
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ X-Android-Sent-Millis : 1428076990976
04-03 19:03:12.676 26529-26553/com.noxx.joyreactor D/headers1﹕ X-Powered-By : PHP/5.4.37

04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ Cache-Control : private
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ Connection : keep-alive
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ Content-Encoding : gzip
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ Content-Type : text/html; charset=utf-8
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ Date : Fri, 03 Apr 2015 16:03:13 GMT
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ Server : nginx/1.6.2
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ Transfer-Encoding : chunked
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ Vary : Accept-Encoding
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ X-Android-Received-Millis : 1428076992941
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ X-Android-Response-Source : NETWORK 200
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ X-Android-Sent-Millis : 1428076992689
04-03 19:03:13.003 26529-26553/com.noxx.joyreactor D/headers2﹕ X-Powered-By : PHP/5.4.37

04-03 19:03:13.403 26529-26553/com.noxx.joyreactor D/cookie3﹕ joyreactor : ver37016d7b2fd70acb1f79bc904751a05d6:9b9dd710f5dc9d4ac948fe03aaa31ce1385be0a5
04-03 19:03:13.444 26529-26553/com.noxx.joyreactor D/headers3﹕ Cache-Control : private
04-03 19:03:13.444 26529-26553/com.noxx.joyreactor D/headers3﹕ Connection : keep-alive
04-03 19:03:13.444 26529-26553/com.noxx.joyreactor D/headers3﹕ Content-Encoding : gzip
04-03 19:03:13.444 26529-26553/com.noxx.joyreactor D/headers3﹕ Content-Type : text/html; charset=utf-8
04-03 19:03:13.444 26529-26553/com.noxx.joyreactor D/headers3﹕ Date : Fri, 03 Apr 2015 16:03:13 GMT
04-03 19:03:13.444 26529-26553/com.noxx.joyreactor D/headers3﹕ Server : nginx/1.6.2
04-03 19:03:13.467 26529-26553/com.noxx.joyreactor D/headers3﹕ Transfer-Encoding : chunked
04-03 19:03:13.467 26529-26553/com.noxx.joyreactor D/headers3﹕ Vary : Accept-Encoding
04-03 19:03:13.467 26529-26553/com.noxx.joyreactor D/headers3﹕ X-Android-Received-Millis : 1428076993259
04-03 19:03:13.467 26529-26553/com.noxx.joyreactor D/headers3﹕ X-Android-Response-Source : NETWORK 200
04-03 19:03:13.467 26529-26553/com.noxx.joyreactor D/headers3﹕ X-Android-Sent-Millis : 1428076993004
04-03 19:03:13.467 26529-26553/com.noxx.joyreactor D/headers3﹕ X-Powered-By : PHP/5.4.37

04-03 19:03:13.657 26529-26553/com.noxx.joyreactor I/System.out﹕ <a href="/register">Регистрация</a>
04-03 19:03:13.657 26529-26553/com.noxx.joyreactor I/System.out﹕ <a href="/login">Вход</a>


результатом будут две последние строки, содержащие логин (в любой из них)


Что делаю не так? уже 4й день завис на этом

Добавлено через 9 минут
Получение страницы входа

Кликните здесь для просмотра всего текста
General
Remote Address:50.7.136.178:80
Request URL:http://joy.reactor.cc/login
Request Method:GET
Status Code:401 Unauthorized

Response Headers
Cache-Controlrivate
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Fri, 03 Apr 2015 16:13:55 GMT
Server:nginx/1.6.2
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.4.37

Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Cookie:joyreactor=ver31e757874556261564de818ca53f1ae24:6ab955bd16ab4a4feb7cb6b0e3a929a5d6398557
Host:joy.reactor.cc
Referer:http://joy.reactor.cc/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36


POST запрос авторизации

Кликните здесь для просмотра всего текста
General
Remote Address:50.7.136.178:80
Request URL:http://joy.reactor.cc/login
Request Method:POST
Status Code:302 Found

Response Headers
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Fri, 03 Apr 2015 16:15:35 GMT
Location:http://joy.reactor.cc/
Server:nginx/1.6.2
Set-Cookie:joyreactor=ver3c1eea151beeddca27c28749be16b3b17:240e601ecb17d1888dd936aacea17655a0e80ddf; expires=Mon, 06-Apr-2015 16:15:35 GMT; path=/; domain=.joy.reactor.cc; httponly
Set-Cookie:remember=f94b3b22e111f911f66de52c9fa2e257; expires=Sat, 18-Apr-2015 16:15:35 GMT; path=/; domain=.joy.reactor.cc; httponly
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.4.37

Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:138
Content-Type:application/x-www-form-urlencoded
Cookie:joyreactor=ver31e757874556261564de818ca53f1ae24:6ab955bd16ab4a4feb7cb6b0e3a929a5d6398557
Host:joy.reactor.cc
Origin:http://joy.reactor.cc
Referer:http://joy.reactor.cc/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36

Form Data
signin[username]:$@#$@#
signin[password]:$@#$@#
signin[remember]:on
signin[_csrf_token]:b53e85f61369b60fb247687a9e96b43c


Страница после авторизации

Кликните здесь для просмотра всего текста
General
Remote Address:50.7.136.178:80
Request URL:http://joy.reactor.cc/
Request Method:GET
Status Code:200 OK

Response Headers
Cache-Controlrivate
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Fri, 03 Apr 2015 16:15:36 GMT
Server:nginx/1.6.2
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.4.37

Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:joyreactor=ver3c1eea151beeddca27c28749be16b3b17:240e601ecb17d1888dd936aacea17655a0e80ddf; remember=f94b3b22e111f911f66de52c9fa2e257
Host:joy.reactor.cc
Referer:http://joy.reactor.cc/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36


Добавлено через 19 часов 58 минут
Путем болей и мучений нашел в чем дело, на 2 response мне возвращается страница, содержащая кое что интересное

"csrf token: CSRF attack detected."

Копаю далее
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2015, 15:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос POST авторизация с использованием JSOUP (Программирование Android):

Авторизация через jsoup - Программирование Android
Пытаюсь авторизоваться на сайте программно. Форма на странице вот такая: &lt;form action=&quot;http://site.com/user/login&quot; method=&quot;post&quot;...

JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных - Программирование Android
Делаю пост запрос к апи сайта. Назад должен получить json, однако получаю разметку страницы с полями для ввода данных. Т.е. как будто...

Retrofit 2, POST запрос, авторизация - Программирование Android
Добрый день! На собеседовании (Junior Android Dev) мне дали задание написать приложение с авторизацией. Вот текст задачи: Все методы...

jsoup - Программирование Android
Здрасьте. Вопрос по поводу этой замечательной библиотеке:) Есть html следующего содержания: &lt;span class=&quot;aaa&quot;&gt;Всем привет!&lt;br /&gt; ...

Jsoup - Программирование Android
Помогите пожалуйста. При нажатии на строку с заголовком приложение вылетает. Подскажите в чем дело и как потом это исправить. public...

Jsoup и https - Программирование Android
Здравствуйте есть вопрос. Есть сайт на https на котором нужно залогиниться чтобы получить инфу. вопрос в том как с этим работать с...

16
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
05.04.2015, 03:46  [ТС] #2
Спасибо всем тем, кто откликнулся помочь.. никому собственно.

Работающее решение следующее:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.noxx.joyreactor.Net;
 
 
import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
 
import com.noxx.joyreactor.Global;
 
import org.jsoup.Connection;
import org.jsoup.helper.HttpConnection;
import org.jsoup.nodes.Document;
 
import java.io.IOException;
import java.util.Map;
 
public class Auth {
    Activity activity;
    Global global;
    int DEFAULT_TIMEOUT = 7000;
 
    public Auth(Activity activity) {
        this.activity = activity;
        this.global = (Global) activity.getApplication();
    }
 
    public void doAuth() {
        new AuthTask().execute();
    }
 
    void makeAuth() {
        Document doc = null;
        try {
            String loginURL = global.getJoy_url() + "/login";
            String itemURL = global.getJoy_url();
            String useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36";
            String login = "username";
            String pass = "password";
 
            //получаем страницу входа
            Connection connection1 = HttpConnection.connect(loginURL)
                    .ignoreHttpErrors(true)
                    .userAgent(useragent);
            Connection.Response response1 = connection1
                    .execute();
            //цапаем оттуда токен
            String token = response1.parse().getElementById("signin__csrf_token").attr("value");      
            Log.d("token", token);
 
            for (Map.Entry<String, String> cookie : response1.cookies().entrySet()) {
                Log.d("cookie1", cookie.getKey() + " : " + cookie.getValue());
            }
            for (Map.Entry<String, String> head : response1.headers().entrySet()) {
                Log.d("headers1", head.getKey() + " : " + head.getValue());
            }
            Log.d("headers1", " .... ");
            //делаем пост запрос
            Connection connection2 = connection1.url(loginURL)
                   // .timeout(7000)
                    .cookies(response1.cookies())                 
                    .ignoreHttpErrors(true)
                    .data("signin[username]", login)
                    .data("signin[password]", pass)
                    .data("signin[remember]", "on")
                    .data("signin[_csrf_token]", token)
                    .method(Connection.Method.POST)
                    .followRedirects(true);
 
            Connection.Response response2 = connection2.execute();
            for (Map.Entry<String, String> cookie : response2.cookies().entrySet()) {
                Log.d("cookie2", cookie.getKey() + " : " + cookie.getValue());
            }
            for (Map.Entry<String, String> head : response2.headers().entrySet()) {
                Log.d("headers2", head.getKey() + " : " + head.getValue());
            }
            Log.d("headers2", " .... ");
 
            Document tt2 = response2.parse();
            String t2 = tt2.select(".login").html();
            Log.d("login tag2", t2);
            String error2 = tt2.select(".error_list").text();
            Log.d("error tag2", error2);           
            // получаем страницу (уже должны быть авторизованы)  
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    class AuthTask extends AsyncTask<Void, Void, Void> {
 
        @Override
        protected Void doInBackground(Void... params) {
            makeAuth();
            return null;
        }
    }
}


В чем была суть моей ошибки:
  • Во-первых на странице присутствовало 2 csrf token, один это сгенерированный для текущей страницы, второй для непосредсвенной авторизации необходим. И я пихал не то и не туда.
  • Во-вторых надо использовать 1 объект connection для всех манипуляций
  • В-третьих куки, их необходимо пихать в каждый коннект из предыдущего response


P.s. тему можно закрывать, задача решена
3
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
09.04.2015, 22:34 #3
Цитата Сообщение от fgtmenow Посмотреть сообщение
//цапаем оттуда токен
* * * * * * String token = response1.parse().getElementById("signin__csrf_token").attr("value");
у меня на этой строчке

Код
NullPointerException
До этого в консоли проверяю значение response1 (response1 != null)

Код
response1 = org.jsoup.helper.HttpConnection$Response@a06ba3c0

В чем причина?
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
10.04.2015, 01:16  [ТС] #4
посмотри мои импорт, я другие классы использовал

Добавлено через 4 минуты
у тебя респонс есть, но пустой видимо

Добавлено через 49 секунд
ну и вообще, где код?!

Добавлено через 10 минут
а если ты используешь мой код, то там немного адрес сервера поменялся.
вместо http://joy.reactor.cc стало снова http://joyreactor.cc . у них там сбой был, поэтому я зеркало использовал для данного теста
1
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
10.04.2015, 08:30 #5
Цитата Сообщение от fgtmenow Посмотреть сообщение
посмотри мои импорт, я другие классы использовал
вот мои импорт, те же, что и у тебя
Java
1
2
import org.jsoup.Connection;
import org.jsoup.helper.HttpConnection;
Цитата Сообщение от fgtmenow Посмотреть сообщение
ну и вообще, где код?!
объявление переменных класса:

Java
1
2
String requestTokenUrl = "http://myUrl.com/oadmin/oauth_authorize?oauth_token=e8f7df32d4f7d465a56a3902b8b72fe6";
Connection.Response response = null;
метод doInBackground():

Java
1
2
3
4
5
6
7
Connection connection = HttpConnection.connect(requestTokenUrl);
        try {
            response = connection.execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
String token = response.parse().getElementById("oauth_token").attr("value");
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
10.04.2015, 10:57  [ТС] #6
странная у тебя авторизация. ты переходишь на страницу, используя токен и хочешь там найти еще один токен?

мой пример для csrf token авторазации, твоя авторизация oauth. вероятно и механизм авторизации там иной
1
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
10.04.2015, 12:55 #7
Цитата Сообщение от fgtmenow Посмотреть сообщение
ты переходишь на страницу, используя токен и хочешь там найти еще один токен?
согласен, это неправильно, но.

Промониторив запросы HTTP Debugger Pro, вижу, что в теле пост запроса авторизации есть 4 параметра:
логин, пароль, токен(полученный в начале) и form_key.
я так понимаю, что form_key нужно достать из полученного сервером ответа и положить в формируемый пост.

строчка
Java
1
String formKey = response.parse().getElementById("form_key").attr("value");
тоже вызывает nullpointer exception.

Появился еще один нюанс.
До этого анализировал http трафик программой HTTP Analyzer. Но она оказалась очень конфликтной -- убивала страницы chrome, скайп закрывался, а virtual box вообще проходилось переустанавливать, причины пока не установил, но, перейдя на HTTP Debugger Pro, проблемы убитых программ и станиц исчезли.

Но. HTTP Debugger Pro, в отличие от HTTP Analyzer не видит запросы из doInBackground() Android Studio. Запросы, выполняемые в java-application (NetBeans) видит. Буду еще искать надежный и простой в изучении сниффер.
мой пример для csrf token авторизации
Надеюсь, ты не против, что не создаю новую тему со своими вопросами, а спрашиваю здесь.
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
10.04.2015, 13:01  [ТС] #8
да не, моя задача решена же. так что мне всеравно

по теме:

1. для анализа трафика советую wireshark. мне с ним как-то привычнее работать, и не конфликтный ни разу

2. повторяй в точности то, что пользователь делает в браузере чтобы авторизироваться. я ну думаю, что самым первым его действием идет пост запрос.

вероятно ты заходишь на главную страницу куда-то, там и будет твой токен. берешь его, берешь кукисы, берешь коннект, и создаешь на основе этого новый коннект для пост запроса на страницу авторизации. и все. получаешь кукисы авторизованные, коннект авторизованный... и работаешь с этим всем на всех остальных страницах. не знаю как еще проще объяснить


>>String formKey = response.parse().getElementById("form_key").attr("value");
>>тоже вызывает nullpointer exception

а это вероятно потому что не найден элемент с таким id, он будет null, а ты пытаешься вытащить из него еще attr
вот и получается. тут я уж извини, без кода страницы помочь не смогу
1
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
10.04.2015, 13:11 #9
Цитата Сообщение от fgtmenow Посмотреть сообщение
для анализа трафика советую wireshark
wireshark позволяет отфильтровать пакеты и просматривать только http? ответы сервера он тоже позволяет просматривать?
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
10.04.2015, 13:12  [ТС] #10
гугл у тебя есть? вот и ищи ответы а так да, это очень мощный инструмент
1
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
10.04.2015, 13:40 #11
Цитата Сообщение от fgtmenow Посмотреть сообщение
гугл у тебя есть? вот и ищи ответы
ок, согласен, виноват ))

Добавлено через 25 минут
похоже, wireshark тоже не видит, что doInBackground() отправляет. может такое быть?
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
10.04.2015, 13:54  [ТС] #12
врядли, wireshark весь трафик палит, не зависимо от приложения
1
dimitriy951
2 / 2 / 0
Регистрация: 15.11.2013
Сообщений: 109
23.05.2015, 18:30 #13
Подскажите пожалст

пробую за логинится так

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            String useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36";
            Connection.Response res = null;
            try {
                res = Jsoup.connect("http://michurinsk-film.ru/auth/authenticate")
                        .data("login", login, "password", parol)
                        .method(Connection.Method.POST)
                        .userAgent(useragent)
                        .execute();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Document doc =null;
            try {
                doc = res.parse();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Log.d("TTT",doc.toString());
как я понял doc должен показать какие то данные для авторизации(id или ёще штото)

только похоже не срабатывает штото и возврашает туже страницу с вводом логина и пороля

вот эт

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
<head>
    <title>Кинотеатр &laquo;Октябрь&raquo; - г. Мичуринск</title>    <!-- Le styles -->
    <link href="/css/bootstrap.min.css" media="screen" rel="stylesheet" type="text/css">
<!--[if lt IE 8]> <link href="/css/style-ie.css" media="screen" rel="stylesheet" type="text/css"><![endif]-->
<link href="/css/bootstrap-responsive.min.css" media="screen" rel="stylesheet" type="text/css">
<link href="/css/bootstrap-switch.min.css" media="screen" rel="stylesheet" type="text/css">
<link href="/js/jqueryUI/themes/base/minified/jquery-ui.min.css" media="screen" rel="stylesheet" type="text/css">
<link href="/css/admin.css" media="screen" rel="stylesheet" type="text/css">
<link href="/images/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon">
    <!-- Scripts -->
    <script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript" src="/js/jqueryUI/ui/minified/jquery-ui.min.js"></script>
<script type="text/javascript" src="/js/jqueryUI/ui/minified/jquery.ui.core.min.js"></script>
<script type="text/javascript" src="/js/jqueryUI/ui/minified/jquery.ui.widget.min.js"></script>
<script type="text/javascript" src="/js/jqueryUI/ui/minified/jquery.ui.mouse.min.js"></script>
<script type="text/javascript" src="/js/jqueryUI/ui/minified/jquery.ui.sortable.min.js"></script>
<script type="text/javascript" src="/js/bootstrap-switch.min.js"></script>
<script type="text/javascript" src="/js/tinymce.js"></script>
<script type="text/javascript" src="/js/admin.js"></script>
<script type="text/javascript" src="/js/tinymce.all.min.js"></script>
<!--[if lt IE 9]><script type="text/javascript" src="/js/html5.js"></script><![endif]--></head>
 
<body>
 
<div class="admin-wrapper">
    <div class="admin-content">
        
        <form action="/auth/authenticate" method="POST" name="LoginFormModel" id="LoginFormModel">    <input type="hidden" name="redirect" value="/auth" />
<label><span>Имя пользователя</span><input type="text" name="login" required="required" value=""></label><label><span>Пароль</span><input type="password" name="password" required="required" value=""></label><label><span>Запомнить меня</span><input type="hidden" name="rememberme" value="0"><input type="checkbox" name="rememberme" value="1"></label><input type="submit" name="submit" class="btn" value="Войти"></form><div class="login-links">
    <a href="/user-register/">Регистрация</a><br>
    <a href="/user-forget/">Забыли пароль?</a>
</div>
    </div>
</div>
<div class="break"></div>
<div class="loader"></div>
<footer>
    <p>&copy; 2005 - 2015 ООО &laquo;Мичуринск-Фильм&raquo;. Копирование материалов сайта допускается только с письменного разрешения администрации сайта. <br>
        Автоматизированное извлечение информации запрещено</p>
</footer>
 
 
</body>
</html>

Што исправить ?
0
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
23.05.2015, 19:00 #14
Думаю, куки нужны и, возможно, form id.
1
dimitriy951
2 / 2 / 0
Регистрация: 15.11.2013
Сообщений: 109
23.05.2015, 21:09 #15
Как приблизительно ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2015, 21:09
Привет! Вот еще темы с ответами:

AsyncTask и Jsoup - Программирование Android
Не работает вот такой код: package com.example.projecta; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import...

JSOUP парсинг - Программирование Android
Код парсит в textView1 с сайта class=&quot;30&quot; Как переписать/дописать код, чтоб он парсил еще и в textView2 класс=&quot;31&quot; Классы 30, 31 на...

Парсинг на jsoup - Программирование Android
Добрый всем день! Заминка такая, уже весь гугл перелопатил, синих ссылок в браузере не осталось. Есть пример парсинга сайта: import...

Parsing with Jsoup - Программирование Android
Итак, пробую написать очень простое тестовое приложение, для чтения html-файлов. Вот файл JsoupDemoActivity.java: package...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
23.05.2015, 21:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru