Προς το περιεχόμενο

POST, Cookies, Java


Evangeli

Προτεινόμενες αναρτήσεις

Καλησπέρα σε όλους.

 

Θα ήθελα να ρωτήσω για ένα κάπως όχι και τόσο συνηθισμένο θέμα. Θα προσπαθήσω όμως να γίνω όσο περισσότερο σαφής μπορώ. Για αρχή, θα ρωτήσω το εξής. Έχει κανείς από εδώ ασχοληθεί ποτέ με το πως θα μπορούσαμε να συνδεθούμε μέσω μιας java εφαρμογής, σε έναν διαδικτυακό τόπο, ο οποίος όμως απαιτεί αυθεντικοποίηση (username και password) με την φόρμα υποβολής των στοιχείων να είναι τύπου POST και την δε web σελίδα γραμμένη σε PHP;

 

Βαγγέλης.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Παίδες, καλησπέρα!

 

Σας ευχαριστώ πάρα πολύ για τις απαντήσεις!

 

@ΠάρηςΓ: Δεν κατάλαβα την μεθοδολογία!

@παπι: προφανώς ναι! Αλλά, θα παρακαλούσα να ήσουν λίγο πιο σαφής αν είναι εύκολο!

@virxen75: το είχα βρει ήδη το παράδειγμα κι εγώ, ευχαριστώ πολύ για την προσπάθεια όμως!

 

Λοιπόν, κατάφερα να συνδεθώ σε ένα δικό μου php site με βάση τον παρακάτω κώδικά (πρώτο μέρος). Το θέμα είναι, πως όταν προσπαθώ να ξανά διαβάσω την σελίδα χωρίς να υποστείλω εκ νέου το user και pass, πολύ απλά, δεν μου επιστρέφει την ίδια σελίδα αλλά εκείνη που λέει πως δεν έχω συνδεθεί στο/ταυτοποιηθεί από το σύστημα (προφανώς!)

 

Με την βοήθεια του firefox, βρήκα πως δημιουργούνται 4 διαφορετικά cookies (τρία αρχικά και 1 κατά την επιτυχημένη σύνδεση). Πραγματικά πρωτοφανές για εμένα, το πως δημιουργούνται αυτόματα αυτά τα cookies, από την στιγμή που δεν είχα ασχοληθεί ποτέ στο παρελθόν με κάτι σχετικό και ενώ “έγγραφα” την php σελίδα (εκτός από την χρήση PHP sessions).

 

Anyway. Θα ήθελα (έχω κάνει ήδη μια προσπάθεια στο τρίτο μέρος), να με βοηθήσετε να βρω έναν τρόπο ώστε να μην χρειάζεται κάθε φορέα να στέλνω με την μέθοδο POST, τα username, password και τα διάφορα άλλα hidden fields ώστε να περιηγούμαι με ευκολία από σύνδεσμο σε σύνδεσμο...

 

Θα μπορούσε να πραγματοποιηθεί αυτό απλά και μόνο με τον χειρισμό των cookies ή ενδεχομένως να αντιμετωπίσουμε πολλά κολλήματα στην συνέχεια? Ποιοι “κίνδυνοι” και “θέματα” ανακύπτουν από την την προσέγγιση;

 

 

>package test;

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

public class Main {
 public static void main(String[] args) throws Exception {
   String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode("", "UTF-8");
   data += "&" + URLEncoder.encode("passwd", "UTF-8") + "=" + URLEncoder.encode("", "UTF-8");

   URL url = new URL("");
   URLConnection conn = url.openConnection();
   conn.setDoOutput(true);
   OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
   wr.write(data);
   wr.flush();

   BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
   String line;
   while ((line = rd.readLine()) != null) {
     System.out.println(line);
   }
   wr.close();
   rd.close();
   
   System.out.println("--------------------");

   String urltext = "";
   url = new URL(urltext);
   BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
   String inputLine;

   while ((inputLine = in.readLine()) != null) {
           // Process each line.
           System.out.println(inputLine);
   }
   in.close();

   
   System.out.println("--------------------");

   System.out.println("---");
   CookieManager cm = new CookieManager();
   cm.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
   CookieHandler.setDefault(cm);

   new URL("").openConnection().getContent();

   List<HttpCookie> cookies = cm.getCookieStore().getCookies();
   System.out.println(cookies.size());
   for (HttpCookie cookie : cookies) {
     System.out.println("Name = " + cookie.getName());
     System.out.println("Value = " + cookie.getValue());
     System.out.println("Lifetime (seconds) = " + cookie.getMaxAge());
     System.out.println("Path = " + cookie.getPath());
   }
   System.out.println("---");
   }
}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 4 εβδομάδες αργότερα...

Καλησπέρα και πάλι μετά από μια μεγάλη περίοδο αποχής από το θέμα... Αρχικά, μπορείτε να μου πείτε τι ακριβώς θα θέλατε από το wireshark (ρωτώ διότι υπάρχουν καμία 300 πακέτα που έγιναν capture απο αυτήν την διαδικασία...); Επίσης, δεν ξέω γιατί - κι εδώ θα ήθελα την γνώμη σας - ενώ για ένα δικό μου site μπορώ και κάνω κανονικά login, στο site που με ενδιαφέρει δεν γίνεται τίποτα... Θέλω να πω, τι τεχνικές κρύβονται πίσω από το εν λόγω site, και πως μπορούμε να τις παρακάμψουμε. Σημειώστε ότι α) αν και η υλοποίηση έγινε τόσο σε Java όσο και σε Python, στο δεύτερο site παρατηρούνται τα ίδια ακριβώς πρόβλημα... β) ίσως ο λόγος να οφείλετε και σε ένα redirect που φαίνεται πως (θα πρέπει...) να πραγματοποιείται από το δεύτερο site και το οποίο δυστυχώς δεν γνωρίζω πώς να χειριστώ... Όλες οι προτάσεις και οι καθοδηγήσεις για την πραγματοποίηση του emulation του site, είναι καλοδεχούμενες!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...