Logowanie nasza-klasa

Odpowiedz Nowy wątek
2009-06-26 18:28
N-Ker
0

Chciałbym się zalogować na naszą klasę za pomocą mojego programu. Niestety w odpowiedzi dostaję stronę startową i nie jestem zalogowany. Szukałem na forum, ale ne iznalazłem odpowiedzi.

    public static void main(String[] args) throws Exception
    {
        System.setOut(new PrintStream("nk_file.html"));

        CookieHandler.setDefault(new CookieManager());

        URL url = new URL("http://www.nasza-klasa.pl/login");
        String params = "login=" + URLEncoder.encode(LOGIN, "UTF-8") + "&password=" + URLEncoder.encode(PASS, "UTF-8");

        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("User-Agent", "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
        conn.setRequestProperty("Accept", "*/*");
        conn.setRequestProperty("Refferer", "http://nasza-klasa.pl");
        conn.setRequestProperty("Connection", "Keep-Alive");
        conn.setRequestProperty("Cookie", "");
        conn.setRequestProperty("Content-length", params.length() + "");
        conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
        conn.connect();

        OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
        out.write(params);
        out.close();

        Scanner in = new Scanner(conn.getInputStream());

        while (in.hasNext())
            System.out.println(in.next());

        in.close();
    }

Pozostało 580 znaków

2009-06-27 19:13
N-Ker
0

Usprawniłem to trochę, ale nadal nie działa xD

package app;

import java.util.*;
import java.io.*;
import java.net.*;

public class Main
{
    public static void main(String[] args) throws Exception
    {
        System.setOut(new PrintStream("nk_file.html"));

        CookieHandler.setDefault(new CookieManager());

        URL url = new URL("http://www.nasza-klasa.pl/login");
        String params = "login=" + URLEncoder.encode(LOGIN, "UTF-8") + "&password=" + URLEncoder.encode(PASS, "UTF-8");

        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("User-Agent", "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
        conn.setRequestProperty("Accept", "*/*");
        conn.setRequestProperty("Refferer", "http://nasza-klasa.pl");
        conn.setRequestProperty("Connection", "Keep-Alive");
        conn.setRequestProperty("Cookie", getCookies());
        conn.setRequestProperty("Content-length", params.length() + "");
        conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
        conn.connect();

        OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
        out.write(params);
        out.close();

        Scanner in = new Scanner(conn.getInputStream());

        while (in.hasNext())
            System.out.println(in.next());

        in.close();
    }

    public static String getCookies() throws Exception
    {
        URLConnection conn = new URL("http://www.nasza-klasa.pl/login").openConnection();
        String result = "";

        for (String cookie : conn.getHeaderFields().get("Set-Cookie"))
            result += cookie.replace(".nasza", "nasza") + "; ";

        return result;
    }

    private static final String LOGIN = "użytkownik";
    private static final String PASS = "hasło";
}

Jakieś pomysły, co zrobić by się logowało?

Pozostało 580 znaków

2009-06-28 12:06
0

Przypadkiem nie brakuje nowej linii pomiędzy parametrami żądania, a linią z loginem i hasłem?

Wireshark pokazuje, że Firefox w czasie logowania przekazuje coś takiego:

POST /login HTTP/1.1
Host: nasza-klasa.pl
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://nasza-klasa.pl/
Cookie: CIASTKO
Content-Type: application/x-www-form-urlencoded
Content-Length: 50

login=MOJ_LOGINl&password=MOJE_HASŁO

Spróbuj więc tak:

OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
out.write("\n"); /* Mozna tez sprobowac "\r\n" */
out.write(params);
out.close();

Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5

Pozostało 580 znaków

2009-06-28 13:05
N-Ker
0

Nie działa ani "\n" ani "\r\n" :(

Pozostało 580 znaków

2009-07-08 13:44
Raf..
0

Nie wiem czy jeszcze potrzebujesz pomocy ale możliwe ze podajesz źle login, sprawdzałem w WireSharku i on nie przekazuje @ tak jak jest tylko zamienia ją na %40

Pozostało 580 znaków

2009-09-23 01:04
rah
0

czy zna ktoś rozwiązanie powyżej opisanego problemu i mógłby udzielić wskazówek?

Pozostało 580 znaków

2010-05-29 18:19
gawel
0

coś nowego??

Pozostało 580 znaków

2010-05-29 19:31
Ktoś taki
0

Rozwiązaniem problemu jest nie logowanie się do nk dla własnego zdrowia.

Pozostało 580 znaków

2010-05-29 19:58
0
Ktoś taki napisał(a)

Rozwiązaniem problemu jest nie logowanie się do nk dla własnego zdrowia.

ale on bota pisze, może będzie zakładał spam konta, może będzie na chleb zarabiał? a ty mu od razu takie .. :(

a poważnie i do autora:
nasza-klasa umożliwia logowanie wg loginu LUB maila. Loguj wg loginu. Ominięcie problemu, ale będzie działać.


Pozostało 580 znaków

2010-10-09 13:04
gjjyjg
0

[???] [!!!] ;-(

Pozostało 580 znaków

2010-10-09 14:53
0

Sprawdź, czy nie ma literówek w żądaniu. W pierwszych postach masz Refferer zamiast Referer

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych 0, gości 1, botów: 0