Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/56: Рейтинг темы: голосов - 56, средняя оценка - 4.75
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167

Авторизация на сайте, Java парсинг

09.07.2014, 15:10. Показов 11068. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача парсить один сайт(не с интернета, наш корпоративный, к сожалению к базе не имею доступа, поэтому придется парсить) В общем данные которые мне нужны можно взять только авторизовавшись.

Начала читать книгу Jeff Heaton "HTTP Programming Recipes for Java Bots", разбиралась в примерах полной уверенностью что это то что мне нужно. Так вот по этому примеру я сделала:

CookieUtility и FormUtility я взяла из книги

CookieUtility.java

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
import java.net.*;
    import java.util.*;
    public class CookieUtility {
        // Map that holds all of the cookie values.
        private Map<String, String> map = new HashMap<String, String>();
 
        public Map<String, String> getMap() {
            return this.map;
        }
 
        /**
        * Load any cookies from the specified URLConnection
        * object. Cookies will be located by their Set-Cookie
        * headers. Any cookies that are found can be moved to a
        * new URLConnection class by calling saveCookies.
        * 
        * @param http
        * The URLConnection object to load the cookies from.
        */
        public void loadCookies(URLConnection http) {
            String str;
            int n = 1;
            do {
                str = http.getHeaderFieldKey(n);
                if ((str != null) && str.equalsIgnoreCase("Set-Cookie")) {
                    str = http.getHeaderField(n);
                    StringTokenizer tok = new StringTokenizer(str, "=");
                    String name = tok.nextToken();
                    String value = tok.nextToken();
                    this.map.put(name, value);
                }
                n++;
            } while (str != null);
        }
 
        /**
        * Once you have loaded cookies with loadCookies, you can
        * call saveCookies to copy these cookies to a new HTTP
        * request. This allows you to easily support cookies.
        * 
        * @param http
        * The URLConnection object to add cookies to.
        */
        public void saveCookies(URLConnection http) {
            StringBuilder str = new StringBuilder();
            Set<String> set = this.map.keySet();
            for (String key : set) {
                String value = this.map.get(key);
                if (str.length() > 0) {
                    str.append("; ");
                }
                str.append(key + "=" + value);
            }
            http.setRequestProperty("Cookie", str.toString());
        }
    }
FormUtility.java

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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import java.io.*;
import java.net.*;
import java.util.*;
public class FormUtility {
    // The charset to use for URL encoding. should always be UTF-8.
    private final static String encode = "UTF-8";
    private static Random random = new Random();
 
    //Generate a boundary for a multipart form.
    public static String getBoundary() {
        return "---------------------------" + randomString() + 
                 randomString()
                 + randomString();
    }
 
    /**
     * Parse a URL query string. Return a map of all of the
     * name value pairs.
     * 
     * @param form
     * The query string to parse.
     * @return A map of name-value pairs.
     */
     public static Map<String, String> parse(String form) {
         Map<String, String> result = new HashMap<String, String>();
         StringTokenizer tok = new StringTokenizer(form, "&");
         while (tok.hasMoreTokens()) {
             String str = tok.nextToken();
             StringTokenizer tok2 = new StringTokenizer(str, "=");
             if (!tok2.hasMoreTokens()) {
                 continue;
             }
             String left = tok2.nextToken();
             if (!tok2.hasMoreTokens()) {
                 left = encode(left);
                 result.put(left, null);
                 continue;
             }
 
             String right = tok2.nextToken();
             right = encode(right);
             result.put(left, right);
        }
         return result;
     }
 
     private static String encode(String str) {
         try {
             return URLEncoder.encode(str, encode);
         } catch (UnsupportedEncodingException e) {
             return str;
         }
     }
 
     protected static String randomString() {
         return Long.toString(random.nextLong(), 36);
     }
 
    /*
     * The boundary used for a multipart post. This field is
     * null if this is not a multipart form and has a value if
     * this is a multipart form.
     */
     private String boundary;
     private OutputStream os;
     private boolean first;
 
    /**
     * Prepare to access either a regular, or multipart, form.
     * 
     * @param os
     * The stream to output to.
     * @param boundary
     * The boundary to be used, or null if this is
     * not a multipart form.
     */
     public FormUtility(OutputStream os, String boundary) {
         this.os = os;
         this.boundary = boundary;
     }
 
     //Add a file to a multipart form.
     public void add(String name, File file) throws IOException {
         if (this.boundary != null) {
             boundary();
             writeName(name);
             write("; filename=\"");
             write(file.getName());
             write("\"");
             newline();
             write("Content-Type: ");
             String type = URLConnection.guessContentTypeFromName(file.getName());
             if (type == null) {
                 type = "application/octet-stream";
             }
             writeln(type);
             newline();
             byte[] buf = new byte[8192];
             int nread;
             InputStream in = new FileInputStream(file);
             while ((nread = in.read(buf, 0, buf.length)) >= 0) {
                 this.os.write(buf, 0, nread);
             }
             newline();
         }
     }
 
     // Add a regular text field to either a regular or multipart form.
     public void add(String name, String value) throws IOException {
         if (this.boundary != null) {
             boundary();
             writeName(name);
             newline();
             newline();
             writeln(value);
         } else {
             if (!this.first) {
                 write("&");
             }
             write(encode(name));
             write("=");
             write(encode(value));
         }
         this.first = false;
     }
     //Complete the building of the form.
     public void complete() throws IOException {
         if (this.boundary != null) {
             boundary();
             writeln("--");
             this.os.flush();
         }
     }
 
     // Generate a multipart form boundary.
     private void boundary() throws IOException {
         write("--");
         write(this.boundary);
     }
 
     // Create a new line by displaying a carriage return and linefeed.
     private void newline() throws IOException {
         write("\r\n");
     }
 
     // Write the specified string, without a carriage return and line feed.
     private void write(String str) throws IOException {
         this.os.write(str.getBytes());
     }
 
     // Write the name element for a multipart post.
     private void writeName(String name) throws IOException {
         newline();
         write("Content-Disposition: form-data; name=\"");
         write(name);
         write("\"");
     }
 
     //Write a string, with a carriage return and linefeed.270 HTTP Programming Recipes for Java Bots
     protected void writeln(String str) throws IOException {
         write(str);
         newline();
     }
}
И собственно мой парсер

Parser.java
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
package parser;
 
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
 
public class Parser {
    private CookieUtility cookies = new CookieUtility();
 
      private boolean login(String username, String password) throws IOException {
          URL url = new URL("http://10.10.10.90/Account/Login.aspx?ReturnUrl=%2fdefault.aspx");
          HttpURLConnection http = (HttpURLConnection) url.openConnection();
          http.setInstanceFollowRedirects(false);
          http.setDoOutput(true);
          OutputStream os = http.getOutputStream();
          FormUtility form = new FormUtility(os, null);
          form.add("login_name", URLEncoder.encode(username));
          form.add("login_password", URLEncoder.encode(password));
          form.complete();
          http.getInputStream();
          cookies.loadCookies(http);
 
          return (cookies.getMap().containsKey("ASP.NET_SessionId"));
      }
 
      public String downloadPage(URL url, int timeout) throws IOException {
          StringBuilder result = new StringBuilder();
          byte buffer[] = new byte[8192];
          URLConnection http = url.openConnection();
          http.setConnectTimeout(10000);
          InputStream s = http.getInputStream();
          int size = 0;
          do {
              size = s.read(buffer);
              if (size != -1)
                  result.append(new String(buffer, 0, size));
          } while (size != -1);
 
          return result.toString();
      }
 
      public void process(String username, String password) throws IOException {
          if(login(username,password)) {
              URL url = new URL("http://10.10.10.90/default.aspx");
              String buffer = downloadPage(url,10000);
              System.out.println(buffer);
          } else {
              System.out.println("Authorization error..");
          }
      }
 
      public static void main(String args[]) {
          try {
              Parser p = new Parser();
              p.process("d.aim", "432545");
          } catch (Exception e) {
              e.printStackTrace();
          }
      }        
  }
Вроде все есть, ловим куки, передаем POST запрос, но все равно получаю страницу с запросом авторизации. Может дело в том что авторизация на этом сайте реализована на джаваскрипте? Но вроде если читать ту вышеупомянутую книгу это не должно быть проблемой. Так в чем я ошиблась? Что сделала не так? Или может я вообще неправильно делаю? Помогите решить, уже не первую неделю бьюсь с этой авторизацией
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.07.2014, 15:10
Ответы с готовыми решениями:

Авторизация на сайте
Здравствуйте, подскажите пожалуйста, как авторизоваться на сайте с помощью POST - запроса. Перерыл интернет, но так ничего и не вышло. С...

Авторизация на сайте, а затем парсинг, как сделать?
Здравствуйте Столкнулся с такой проблемой, пишу парсер товаров с сайта, но цены на нем отображаются лишь только при авторизации на...

Авторизация на сайте: "java.lang.Exception: http error : 401"
Добрый день. Подскажите пожалуйста, что не так делаю. Отправляю запрос на авторизацию к серверу, а он мне в ответ 401 код ошибки (error =...

18
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
09.07.2014, 17:09
Пойдите на сайт, авторизуйтесь и посмотрите какие запросы куда идут. Затем сделайте тоже самое
0
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
10.07.2014, 14:51  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Пойдите на сайт, авторизуйтесь и посмотрите какие запросы куда идут. Затем сделайте тоже самое
Сделала тоже самое, теперь вопрос пост и гет запрос должна быть абсолютно идентичной, строчка за строчкой?
Тогда куда вставлять такие строчки вроде этой?
Code
1
2
3
4
5
X-Coolite: delta=true\r\n
Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n
Accept: */*\r\n
User-Agent: Mozilla/5.0
Referer:
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
10.07.2014, 15:00
olea, вам сначала нужно понять какие запросы отпраыляются, какие методы для этого используются и какие данные передаются.
То что вы написали это какой-то кусок вырванный из контекста. По нему мало что понять можно.lp_4eva,
0
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
10.07.2014, 15:34  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
olea, вам сначала нужно понять какие запросы отпраыляются, какие методы для этого используются и какие данные передаются.
То что вы написали это какой-то кусок вырванный из контекста. По нему мало что понять можно.lp_4eva,
KEKCoGEN, отправляются 2 запроса(определила по снифферу), первой посылают пост запрос, там 1 куки, sessionid, затем гет запрос с двумя куками, sessionid и authentication. Пароль и логин передаются в Line-based text data, но там куча всего да еще и зашифровано как их отправлять? Если пароль и логин передаются в Line-based text data, зачем тогда куки, для чего sessionid и authentication?
Я делаю так отправляю гет запрос с одним кукисом, я прямо взяла зашифрованное значение и вставила, затем сделала пост запрос с двумя куками, только вот у меня пароль и логин разделены не знаю как слить, то ли тоже вставить зашифрованную строку.
Не совсем поняла ваше какие методы используется и какие данные передаются, вроде только логин пароль и айди сессий.

Что еще странно, у меня 2 сниффера и они показывают разные данные, первый показывает 1 пост 1 гет запрос, а второй 2 гет запроса.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
10.07.2014, 18:28
lp_4eva, sessionid есть вне зависимости от того залогинен юзер или нет. Пароли обычно передают в закодированной форме (Content-Type: application/x-www-form-urlencoded и обычно методом POST
Что такое Line-based text data я без понятия. Вам нужны следующие данные о запросе
Method: GET\POST
Host: куда посылается запрос
Content-Type: например application/x-www-form-urlencoded;
Cookie: куки
Headers: заголовки запроса
Body: тело запроса (тут обычно передаются данные такие как логин и пароль)

После того как у вас будет вся эта информация, вы сможете составить свой запрос и послать его на сервер.

Насчет двух запросов, обычно по url можно определить что это за запросы.
1
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
11.07.2014, 09:23  [ТС]
KEKCoGEN, спасибо за ответ
Можно еще вопрос, зашифрованный пароль и логин можно как нибудь дешифровать? Просто у меня передается лишь логин, что то пароль я не вижу, хотела посмотреть что там не так.
Еще вопрос в куках может передаваться пароль/логин?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
11.07.2014, 14:15
lp_4eva, пароль на клиенте редко зашифровывают насколько я знаю. Иногда делают base64.
Я бы посоветовал вам поставить Fiddler2 и кинуть сюда скриншоты того что вы там увидели, тогда все будет более ясно.
0
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
11.07.2014, 14:54  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
p_4eva, пароль на клиенте редко зашифровывают насколько я знаю. Иногда делают base64.
Я бы посоветовал вам поставить Fiddler2 и кинуть сюда скриншоты того что вы там увидели, тогда все будет более ясно.
О Fiddler2 впервые слышу, я что то не поняла разные снифферы по разному показывают? У меня был wireshark и там точно не было никакого пароля и логина а тут он есть. Только во вкладке TextView, значит мне надо вот всю эту огромную зашифрованную строку передать?
Но что плохо Fiddler2 не ловит мои запросы, когда компилирую обычно в wireshark выходил, а тут только то что на браузере набираешь. Поэтому свой результат показать не смогла.
А вот с браузера вот скрины:
http://savepic.org/5779799.jpg
http://savepic.org/5773655.jpg
http://savepic.org/5772631.jpg
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
11.07.2014, 17:02
Лучший ответ Сообщение было отмечено reisal78 как решение

Решение

lp_4eva, теперь вам надо посмотреть html код формы логина чтобы определить имена полей (логин и пароль)
На сервер отправляется POST запрос в виде закодированной формы на адрес /Account/Login.aspx и как параметр передается ссылка по которой нужно сделать редирект после логина. От этого и есть второй запрос GET.

То что вам нужно сделать это послать POST запрос (что-то типа того http://www.coderanch.com/t/377... -html-form)
на адрес /Account/Login.aspx с логином и паролем с именами, которые вы нашли в html. После этого вы будите авторизованны на сайте.

ЗЫ. Чтобы проверить что это работает, рекомендую сначала послать запрос из Chrome Advanced REST plugin. Это аддон к браузеру, который умеет посылать всякие запросы и получать ответы. Как только вы сможете залогиниться используя этот аддон, переходите к коду в java
1
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
14.07.2014, 13:41  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
lp_4eva, теперь вам надо посмотреть html код формы логина чтобы определить имена полей (логин и пароль)
На сервер отправляется POST запрос в виде закодированной формы на адрес /Account/Login.aspx и как параметр передается ссылка по которой нужно сделать редирект после логина. От этого и есть второй запрос GET.
То что вам нужно сделать это послать POST запрос (что-то типа того http://www.coderanch.com/t/377... -html-form)
на адрес /Account/Login.aspx с логином и паролем с именами, которые вы нашли в html. После этого вы будите авторизованны на сайте.
ЗЫ. Чтобы проверить что это работает, рекомендую сначала послать запрос из Chrome Advanced REST plugin. Это аддон к браузеру, который умеет посылать всякие запросы и получать ответы. Как только вы сможете залогиниться используя этот аддон, переходите к коду в java
Спасибо Вам, Вы мне очень помогли! Все таки прошла через авторизацию, замучилась но прошла
А теперь у меня еще трудности, Вы бы не могли мне подсказать? Данные которые мне нужны оказываются отправляются JSON текстом, не могла понять почему на исходном коде который я получаю нет данных, оказалось так;( Теперь не могу понять как читать данные из JSON? Никогда раньше с таким не сталкивалась, а то что в интернете, все примеры для андроида.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
14.07.2014, 13:43
есть много библиотек работающих с JSON. Например
GSON
Jackson

погуглите примеры. При получании строки json эти технологии позволяют на основе строки построить объект.
0
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
14.07.2014, 13:52  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
есть много библиотек работающих с JSON. Например
GSON
Jackson
погуглите примеры. При получании строки json эти технологии позволяют на основе строки построить объект.
А эти библиотеки для парсинга уже полученного json верно? А я не знаю как получить этот json, я сейчас получаю только исходный код нужной мне страницы, а json вижу только по снифферу.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
14.07.2014, 15:32
обычно json приходит в ответ на какой то запрос. Вам надо поймать что это за запрос и послать такой же. В ответ получите тот же json
0
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
14.07.2014, 16:59  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
обычно json приходит в ответ на какой то запрос. Вам надо поймать что это за запрос и послать такой же. В ответ получите тот же json
Ну понимаете, получаю я json от post запроса, дело в том что надо вводить некий айди и нажать поиск, на что мне высылают json. Но когда я отправляю этот айди я получаю лишь код страницы поиска. А json не получаю, я то думала уже в исходниках будет содержаться результаты запроса, не знала что он еще и отдельно json-ом отправляется. Еще пробовала через advanced rest client, получаю код страницы а на вкладке json пишет вот это Unexpected token <

P.S:Я правда сама ищу и читаю, но там в основном про то как парсить уже пришедший json. Я б спарсила видела бы этот json, а я лишь код страницы вижу.
Не могу понять что я делаю не так.

Добавлено через 1 час 19 минут
Когда делаю через advanced rest client, случается странная вещь. Я беру и копирую весь request из fiddler и ставлю на value и ставлю urlencoded. Затем это работает, то есть я вижу данные введенного айди, но когда нажимаю на json все так же пишет Unexpected token. Но затем я там же меняю айди другого человека, а он все равно показывает айди того первого человека, как будто это какая та сохраненная сессия.
Блин не получается у меня
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
14.07.2014, 21:03
если rest client json не показывает, значит вы что-то неправильно отсылаете. Например вы незалогинены когда этот запрос отправляете или ещё что-нибудь.
покажите пример запроса в фидлер на который в ответ вы получаете json
0
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
15.07.2014, 09:02  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
если rest client json не показывает, значит вы что-то неправильно отсылаете. Например вы незалогинены когда этот запрос отправляете или ещё что-нибудь.
Я залогинена, иначе эту страницу вообще бы не показывал и перенаправлял в страницу с авторизацию
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
покажите пример запроса в фидлер на который в ответ вы получаете json






Отправляет текстом, громадное количество данных, среди которых я только свой айди и другие данные увидела, остальное не пойми зачем и для чего. Но когда копирую этот текст на advanced rest client работает, но работает только для одного айди а для других показывает айди первого человека, а программно вообще не работает
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
15.07.2014, 10:34
Да уж....чёта действительно кучу всего отправляет.
Точно нескажу, раньше такого невидел да и сервер написан у вас на .Net похоже, но думаю имеет место какой то алгоритм дигитальной подписи реквестов. Посмотрите в коде html страницы не сидит ли там в hidden блоке такой вот кусок текста непонятный тоже.

Лучше всего конечно спросить разработчиков самого сайта но думаю эта возможность недоступна.
1
Учусь...
 Аватар для lp_4eva
60 / 3 / 2
Регистрация: 20.03.2010
Сообщений: 167
15.07.2014, 16:17  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Посмотрите в коде html страницы не сидит ли там в hidden блоке такой вот кусок текста непонятный тоже.
Да этот текст есть в самом html, но не hidden, а как value input-а.
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Лучше всего конечно спросить разработчиков самого сайта но думаю эта возможность недоступна.
В принципе есть возможность связаться с ними, только чем они могут помочь?

Добавлено через 1 час 58 минут
О, я сделала
Правда разработчики ничем помочь не смогли так как легче самой разбираться чем им дозвониться))))
Сидела разбирала огромный кусок текста и все таки поняла где что находится, что куда отправляется, остается теперь парсить json))))
KEKCoGEN , огромное вам спасибо, без вас бы не получилось
Тема закрыта))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.07.2014, 16:17
Помогаю со студенческими работами здесь

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

Авторизация в вк . парсинг куки
привет, состряпал код авторизации в вк, получаю ответ от сервера с заголовками кук, но не получается спаристь куку и выдать MsgBox = True...

Авторизация и парсинг PHP (CURL)
Доброе время суток форумчане, Столкнулся с нуждою спарсить контент контент из закрытой части сайта https://lk.cinemapark.ru/ мне...

Авторизация на сайте
Вообщем ничего сложного нет в авторизации. https://my.gamexp.ru/ вот ссылка отправляю пост получаю ответ все хорошо, но мне нужно попасть...

Авторизация на сайте
Я как новечек столкнулась с необходимость написать авторизацию на сайте. Но не знаю как это корректно сделать. Есть код для авторизации...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru