0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
1

Аутентификация на форуме phpBB

06.05.2016, 14:50. Показов 2086. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
почему вылезает ошибка?
Exception in thread "main" java.lang.NoSuchMethodException: com.company.Main.main([Ljava.lang.String
at java.lang.Class.getMethod(Class.java:1786)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:125)

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
      package com.company;
        import java.net.Authenticator;
        import java.net.PasswordAuthentication;
 
public class Main extends Authenticator {
    private String host;
    private String username;
    private String password;
 
    public Main(String host, String username, String password) {
        super();
        this.host = "http://sysadmins.ru";
        this.username = "Megatron666";
        this.password = "123456";
    }
 
    protected PasswordAuthentication getPasswordAuthentication() {
        if(host.equals(getRequestingHost())) {
            return new PasswordAuthentication(username, password.toCharArray());
        } else {
            return super.getPasswordAuthentication();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2016, 14:50
Ответы с готовыми решениями:

Отправка постов на форуме (phpbb)
Это должно отправлять пост в тему, но к сожалению ничего не происходит. хелпаните var PostData,...

Удаление списка юзеров в форуме phpBB
Удаление списка юзеров в форуме phpBB, защита от СПАМА Кто знает как можно список юзеров в...

Как исправить ошибку или отключить вывод [phpBB Debug] на phpbb 3.0.10?
Здравствуйте. Есть сайт, форум phpBB 3.0.10, простой календарик на php и общий модуль авторизации....

Профайлы phpbb
Добрый день. Предупрежу сразу, чтобы не кидались тухлыми помидорами, все что написано мое ИМХО :)...

28
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
06.05.2016, 15:19 2
NormalArs, может стоит прочитать что написано?

NoSuchMethodException: com.company.Main.main([Ljava.lang.String
НетТакогоМетода com.company.Main.main который принимает java.lang.String
0
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
06.05.2016, 22:27  [ТС] 3
и кому его передать?
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.05.2016, 00:57 4
Цитата Сообщение от NormalArs Посмотреть сообщение
и кому его передать?
что передать?
0
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
07.05.2016, 08:09  [ТС] 5
сделал так, выдается html код, но аутентификация не происходит
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
package com.company;
        import java.io.BufferedReader;
        import java.io.IOException;
        import java.io.InputStreamReader;
        import java.net.Authenticator;
        import java.net.InetAddress;
        import java.net.MalformedURLException;
        import java.net.PasswordAuthentication;
        import java.net.URL;
 
public class Main {
 
    public static void main(String[] args) {
 
        try {
 
            // Sets the authenticator that will be used by the networking code
            // when a proxy or an HTTP server asks for authentication.
            Authenticator.setDefault(new CustomAuthenticator());
 
            URL url = new URL("http://sysadmins.ru/login.php");
 
            // read text returned by server
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
 
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
            in.close();
 
        }
        catch (MalformedURLException e) {
            System.out.println("Malformed URL: " + e.getMessage());
        }
        catch (IOException e) {
            System.out.println("I/O Error: " + e.getMessage());
        }
 
    }
 
    public static class CustomAuthenticator extends Authenticator {
 
        // Called when password authorization is needed
        protected PasswordAuthentication getPasswordAuthentication() {
 
            // Get information about the request
            String prompt = getRequestingPrompt();
            String hostname = getRequestingHost();
            InetAddress ipaddr = getRequestingSite();
            int port = getRequestingPort();
 
            String username = "Megatron666";
            String password = "123456";
 
            // Return the information (a data holder that is used by Authenticator)
            return new PasswordAuthentication(username, password.toCharArray());
 
        }
 
    }
 
}
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.05.2016, 12:19 6
Цитата Сообщение от NormalArs Посмотреть сообщение
сделал так, выдается html код, но аутентификация не происходит
а с чего она должна происходить? Причем тут вообще Authenticator? Он для паролей прокси.
0
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
07.05.2016, 13:17  [ТС] 7
а как мне это сделать? в интернете инфа обрывочная, ничего не понятно.
можете посоветовать какую нибудь книгу или статью?
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.05.2016, 14:56 8
NormalArs, смотрите какие запросы шлет браузер на сайт и шлите тоже самое в своем коде.
0
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
07.05.2016, 15:13  [ТС] 9
где об этом можно прочесть?
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.05.2016, 16:27 10
NormalArs, о чем именно? Как посылать запросы на сайт? Или как смотреть какие запросы делает браузер?
Как посылать запросы
Чтобы посмотреть что шлет браузер, жмите F12 в хроме и смотрите
0
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
13.05.2016, 09:00  [ТС] 11
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
package com.company;
 
import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
public class Main {
 
    private final String USER_AGENT = "Mozilla/5.0";
 
    public static void main(String[] args) throws Exception {
 
        Main http = new Main();
 
        System.out.println("Testing 1 - Send Http GET request");
        http.sendGet();
 
        System.out.println("\nTesting 2 - Send Http POST request");
        http.sendPost();
 
    }
 
    // HTTP GET request
    private void sendGet() throws Exception {
 
        String url = "http://sysadmins.ru/login.php";
 
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
 
        // optional default is GET
        con.setRequestMethod("GET");
 
        //add request header
        con.setRequestProperty("User-Agent", USER_AGENT);
 
        int responseCode = con.getResponseCode();
        System.out.println("\nSending 'GET' request to URL : " + url);
        System.out.println("Response Code : " + responseCode);
 
        BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
 
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
 
        //print result
        System.out.println(response.toString());
 
    }
 
    // HTTP POST request
    private void sendPost() throws Exception {
 
        String url = "http://sysadmins.ru/login.php";
        URL obj = new URL(url);
        HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
 
        //add reuqest header
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", USER_AGENT);
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
 
        String urlParameters = "username=Megatron666&password=123456&redirect=&login=%C2%F5%EE%E4";
 
        // Send post request
        con.setDoOutput(true);
        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        wr.writeBytes(urlParameters);
        wr.flush();
        wr.close();
 
        int responseCode = con.getResponseCode();
        System.out.println("\nSending 'POST' request to URL : " + url);
        System.out.println("Post parameters : " + urlParameters);
        System.out.println("Response Code : " + responseCode);
 
        BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
 
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
 
        //print result
        System.out.println(response.toString());
 
    }
 
}
 Комментарий модератора 
Оформляйте код тегами языка на котором написан код

запрос правильный но ничего не работает. выкидывает на страницу авторизации
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
13.05.2016, 09:29 12
NormalArs, а с чего вы взяли что запрос правильный?
Может научитесь форматировать код правильным тегом? Или вы не понимаете на каком языке пишите?
0
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
13.05.2016, 10:06  [ТС] 13
я с++ знаю а java мне не совсем понятна.
я хочу получить рабочий код авторизации который можно будет ковырять и понимать что и зачем нужно.
запрос правильный потому что я делал по аналогии с обучающими материалами и получил примерно то что нужно.
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
13.05.2016, 12:58 14
NormalArs, зачем вы сначала шлете гет запрос? Какой в этом смысл? Вы вряд ли сможете написать что-либо вразумительное пока не будите понимать что делаете.
0
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
13.05.2016, 13:35  [ТС] 15
а как начать понимать? адекватной инфы нигде нет, идет какое нибудь повествование о джаве сайтах и запросах, а потом бах и кусок кода который работает на магии.

нигде никаких подробных инструкций с работающими примерами нет
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
13.05.2016, 13:50 16
Цитата Сообщение от NormalArs Посмотреть сообщение
а как начать понимать?
для этого надо учить последовательно, а не кусками. Изучите как работает HTTP протокол. Потом более конкретно почитайте про гет и пост запросы. Зачем они нужны и как применяются. Затем как работает авторизация на разных сайтах. После этого попробуйте выполнить авторизацию с помощью готового клиента (например Chrome Advanced Rest Client) и только затем уже пишите код на каком либо языке. Вы же сразу кинулись код писать....джава тут очень незначительная часть решения.
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
13.05.2016, 17:21 17
Лучший ответ Сообщение было отмечено NormalArs как решение

Решение

NormalArs,

Развлекайтесь =)

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
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
 
/**
 * Created by Igor Simagin on 13.05.2016.
 */
public class Authorization {
 
 
    private static final String SCHEME = "http";
    private static final String HOST = "sysadmins.ru";
    private static final String PATH = "/login.php";
    private static final String USERNAME = "Megatron666";
    private static final String PASSWORD = "123456";
    private static final String LOGIN = "%C2%F5%EE%E4";
 
 
    public static void main(String[] args) throws IOException, URISyntaxException {
 
 
        CookieStore cookieStore = new BasicCookieStore();
        String sid = null;
 
 
        try (CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build()) {
 
            URI uri = new URIBuilder()
                    .setScheme(SCHEME)
                    .setHost(HOST)
                    .setPath(PATH)
                    .build();
 
 
            HttpPost httpPost = new HttpPost(uri);
 
            List<NameValuePair> nvps = new ArrayList<>();
            nvps.add(new BasicNameValuePair("username", USERNAME));
            nvps.add(new BasicNameValuePair("password", PASSWORD));
            nvps.add(new BasicNameValuePair("login", LOGIN));
            httpPost.setEntity(new UrlEncodedFormEntity(nvps));
 
            try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
                HttpEntity entity = response.getEntity();
                EntityUtils.consume(entity);
            }
        }
 
        List<Cookie> cookies = cookieStore.getCookies();
        for (Cookie cookie : cookies) {
            if (cookie.getName().equals("sysadminsnew_sid")) {
                sid = cookie.getValue();
                break;
            }
        }
 
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            URI uri = new URIBuilder()
                    .setScheme(SCHEME)
                    .setHost(HOST)
                    .setPath(PATH)
                    .setParameter("sid", sid).build();
            System.out.println(uri);
            HttpGet httpGet = new HttpGet(uri);
 
            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
 
                try (BufferedReader br = new BufferedReader(
                        new InputStreamReader((response.getEntity().getContent()), "windows-1251"))) {
                    String output;
                    while ((output = br.readLine()) != null) {
                        System.out.println(output);
                    }
                }
            }
        }
    }
 
}
Для работы программы нужна дополнительная библиотека

XML
1
2
3
4
5
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>
1
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
13.05.2016, 19:45  [ТС] 18
Спасибо!)
я скачал библиотеку 4.5.2.zip https://hc.apache.org/downloads.cgi
запустил
вылезают ошибки
Information:Using javac 1.8.0_65 to compile java sources
Information:java: Errors occurred while compiling module 'untitled1'
Information:Module "untitled1" was fully rebuilt due to project configuration/dependencies changes
Information:13/5/2016 7:25 PM - Compilation completed with 2 errors and 0 warnings in 5s 865ms
C:\company\Main.java
Error: (47, 13) java: try-with-resources is not supported in -source 1.6
(use -source 7 or higher to enable try-with-resources)
Error: (58, 54) java: diamond operator is not supported in -source 1.6
(use -source 7 or higher to enable diamond operator)
>java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) Client VM (build 25.66-b18, mixed mode)

>mvn --version
Apache Maven 3.3.9
Maven home: C:\Javalib\apache-maven-3.3.9
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "dos"
я не могу понять на версию чего он ругается

Добавлено через 7 минут
наверное на JDK, переустановлю ее
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
13.05.2016, 20:05 19
Лучший ответ Сообщение было отмечено NormalArs как решение

Решение

NormalArs, он у вас ругается на такие конструкции

Java
1
2
try (CloseableHttpClient httpClient = HttpClients.createDefault()){
}
Эта штука появилась в 8й java помоему. А у вас он пытается компилить под 6ю...
если мавен проект у вас добавьте
XML
1
2
3
4
5
6
7
8
9
     <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
Еще может быть в настройках IDE стоять компилить под 6ю версию. В Идее это меняется File->Project Structure->Project

Добавлено через 2 минуты
Если хотите можно переделать по старинке =)
Java
1
2
3
4
5
6
CloseableHttpClient httpClient = HttpClients.createDefault()
try {
//code
}finally{
    httpClient.close();
}
1
0 / 0 / 1
Регистрация: 06.05.2016
Сообщений: 48
14.05.2016, 00:39  [ТС] 20
получилось, в настройках поставил 8 версию вместо 6

Добавлено через 46 минут
а как оно работает? это магия какая то
нету строчек которые браузер посылает, нету ничего кроме логина пароля и мелочей.
оно собирается в одну строку и шлется серверу. а он не плюется, и почему то пускает залогиниться.

Добавлено через 4 минуты
пытаюсь выполнить хоть что то другое (просмотр/создане/удаление сообщений) и просто не пойму с какой стороны подступиться

Добавлено через 15 минут
изучаю комменты https://hc.apache.org/httpcomp... Start.java

Добавлено через 1 час 23 минуты
изучаю html
HTML5
1
2
3
4
5
6
    <td><form action="http://sysadmins.ru/posting.php" method="post">
    <span class="gen">
    <input  name="p" value="1336844*" />
    <input type="hidden" name="mode" value="delete" />
    <input type="submit" name="confirm" value="del" class="mainoption" />
    </span></form></td>
при вводе ID сообщения его можно удалить по кнопке
0
14.05.2016, 00:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2016, 00:39
Помогаю со студенческими работами здесь

Блог на PHPBB 2
Доброго времени суток! Есть ли мод для PHPBB 2, добавляющий возможность ведения блогов? Перерыл...

Интеграция с PhpBB
Добрый день :) Прошу совета. Создал недавно форум на PhpBB, теперь есть идея к форуму сделать...

Wordpress и phpBB
Здравствуйте, задумал сделать сайт+форум, плюс хочу сделать так чтоб была одна база пользователей...

Проблемы с ПМ на phpbb
В общих чертах проблема в следующим. Набросал я код по авторизации и отправке сообщения на пхпбб. С...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru