Logowanie nasza-klasa

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();
    }
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?

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();
0

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

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

0

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

0

coś nowego??

0

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

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ć.

0

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

0

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

0

Ja piszę jeden program i mam w nim moduł logujący się do nk. Dziś juz pewnie nie zdążę (uczelnia), ale jutro po południu zamieszczę kod.

0

Przy logowaniu do nk nie jest wymagane uzywanie SSL ?

0

Nie jest wymagane. Zresztą ja jako "bardzo początkujący w javie", na razie nie mogę zmusić mojego programu aby logował się po https i na razie udało mi się go zmusić za pomocą logowania po http.
Oto obiecany kod:

import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.JOptionPane;

public class Polaczenie {

	Polaczenie(String log, String haslo) {

		try {

			CookieManager cookieManager = new CookieManager();
			cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
			CookieHandler.setDefault(cookieManager);
			CookieStore cookieJar = cookieManager.getCookieStore();

			URL url = new URL("http://nk.pl/login");
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			Object obj = conn.getContent();

			url = new URL("http://nk.pl/login");
			conn = (HttpURLConnection) url.openConnection();
			List<HttpCookie> cookies = cookieJar.getCookies();
			String ciasteczko = "";
			for (HttpCookie cookie : cookies) {
				ciasteczko += cookie;
				System.out.println("Cookie: " + cookie);
			}

			String login = log;
			String password = haslo;
			String params = URLEncoder.encode("login", "UTF-8") + "="
					+ URLEncoder.encode(login, "UTF-8") + "&"
					+ URLEncoder.encode("password", "UTF-8") + "="
					+ URLEncoder.encode(password, "UTF-8");

			conn.setDoOutput(true);
			conn.setRequestMethod("POST");
			conn.setRequestProperty(
					"User-Agent",
					"Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8");
			conn.setRequestProperty("Accept",
					"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
			conn.setRequestProperty("Accept-Charset",
					"ISO-8859-2,utf-8;q=0.7,*;q=0.7");
			conn.setRequestProperty("Refferer", "http://nk.pl");
			conn.setRequestProperty("Connection", "Keep-Alive");
			conn.setRequestProperty("Cookie", ciasteczko);
			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();

			BufferedReader in = new BufferedReader(new InputStreamReader(
					conn.getInputStream()));
			String inputLine;
			PrintWriter plik = new PrintWriter("nk.html");

			while ((inputLine = in.readLine()) != null) {
				plik.println(inputLine);
			}
			in.close();

			JOptionPane.showMessageDialog(null, "Zakończono!");
			System.exit(0);
		} catch (Exception e) {
			System.err.println("Error Logging In: " + e);
		}
	}
}

Plik nk.html jest tworzony w celach testowych aby można było sprawdzić poprawność logowania.

Jak zaznaczyłem wcześniej dopiero zacząłem naukę Javy i wszelkie uwagi/poprawki/krytyka są bardzo mile widziane.

0
Afish napisał(a)

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

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