ASP.NET οθόνη Ξύστε Δημοσίευση Προσομοίωση

ψήφοι
1

Προσπαθώ να κατεβάσετε και να αναλύσει τον κώδικα HTML μιας ιστοσελίδας. Πρόσφατα, η ιστοσελίδα πηγή μετακινηθεί από το να έχουν όλες τις πληροφορίες τους σε μία σελίδα για να κρύβει μέρος της πίσω javascript. Υπάρχει μια «Εμφάνιση όλων» πλαίσιο ελέγχου που χρειάζεται ενεργοποιημένη για να δείτε ολόκληρη τη σελίδα.

Εδώ είναι η ιστοσελίδα: Πηγή Ιστοσελίδα

Ουσιαστικά Ψάχνω για την αυτοματοποίηση ανάκτησης αυτών σελίδα μετά το πλαίσιο ελέγχου έχει πατηθεί. Αυτή τη στιγμή, έχουμε ένα πρόγραμμα C που κατεβάζει την ιστοσελίδα και να χειρίζεται την ανάλυση μας. Δεν είμαι σίγουρος αν μπορεί να δεχθεί javascript στο URL αν αυτό μπορεί να χρησιμοποιηθεί για να λύσει αυτό το πρόβλημα (έχω δοκιμάσει χρησιμοποιώντας ένα σελιδοδείκτη για να καλέσετε το javascript από τη διεύθυνση URL, αλλά δεν ήμουν σε θέση να το πάρει για να χειριστεί το πλαίσιο ελέγχου), αλλά μπορεί να χειριστεί τα αρχεία αν είναι πιο εύκολο να γράψει ένα C # πρόγραμμα που μπορεί να χειριστεί αυτό.

Θα προτιμούσα έναν τρόπο για να κωδικοποιήσει αυτό ο ίδιος αντί να χρησιμοποιήσετε ένα πρόγραμμα τρίτων για να μην χρειάζεται να εγκαταστήσετε τίποτα στον server αυτό τρέχει σε. Κάθε βοήθεια είναι ευπρόσδεκτη.


Επεξεργασία: Βασικά, πώς μπορώ να αυτοματοποιήσει την κλήση προς το javascript που συνδέεται με την «Επιλογή όλων» πλαίσιο ελέγχου ώστε να μπορώ να αρπάξει την html σελίδα που περιέχει τα πάντα, είναι ότι εμφανίζεται πατώντας το πλαίσιο ελέγχου.


Επεξεργασία 2: Εδώ είναι η έξοδος από Fiddler2:

__EVENTTARGET ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox
__EVENTARGUMENT
__LASTFOCUS
__VIEWSTATE (REMOVED DUE TO LENGTH)
__EVENTVALIDATION (REMOVED DUE TO LENGTH)
ctl00$ContentPlaceHolder1$GenericWebUserControl$Organization0 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Initial or Amendment1 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Relief Requested2 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Country3 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Status4 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$StartDate5  
ctl00$ContentPlaceHolder1$GenericWebUserControl$EndDate5    
ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox on

Είμαι σήμερα να πάρει 500 ΛΑΘΗ από το διακομιστή. Χρειάζεται να συμπεριλάβει όλες αυτές τις GenericWebUserControls στην αίτηση θέση, καθώς; Επίσης, χρειάζεται να περιλαμβάνουν την EVENTVALIDATION;


EDIT 3: Εδώ είναι η τελευταία κώδικα. Είμαι ακόμα να πάρει διακομιστής 500 λάθη.

private void CreateRequest()
{
    HttpWebRequest httpWebRequest;
    HttpWebResponse httpWebResponse;
    StreamWriter streamWriter;
    Stream webResponseStream;
    StreamReader streamReader;
    string postData;
    string outputHTML;

    postData = String.Format(&__EVENTTARGET={0} + &__VIEWSTATE={1} + &__EVENTVALIDATION=(2)+&ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox=on +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Organization0=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Initial+or+Amendment1=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Relief+Requested2=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Country3=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Status4=ALL,EVENTTARGET, VIEWSTATE, EVENTVALIDATION);

    httpWebRequest = (HttpWebRequest)WebRequest.Create(http://services.cftc.gov/sirt/sirt.aspx?Topic=ForeignPart30Exemptions);
    httpWebRequest.Method = POST;
    httpWebRequest.ContentType = application/x-www-form-urlencoded;
    httpWebRequest.ContentLength = postData.Length;

    streamWriter = new StreamWriter(httpWebRequest.GetRequestStream(), System.Text.Encoding.ASCII);
    streamWriter.Write(postData);
    streamWriter.Close();

    httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

    webResponseStream = httpWebResponse.GetResponseStream();
    streamReader = new StreamReader(webResponseStream);
    outputHTML = streamReader.ReadToEnd();

    Console.WriteLine(outputHTML);
}

EDIT 4: Έχω διαπιστώσει ότι είναι η σειρά PostData που προκαλεί το σφάλμα διακομιστή 500. Αν το κάνω μια κενή συμβολοσειρά, που εξάγει το σύνολο της ιστοσελίδας. Ξέρει κανείς αν είμαι σωστός στο να πρέπει να θέσει τα πάντα που ήρθε από Fiddler2 που είχε μια τιμή στο κορδόνι PostData; Επίσης, ότι __VIEWSTATE είναι μια απίστευτα μακρά σειρά. Τα όρια υπάρχουν ή οτιδήποτε δεν είμαι σίγουρος για;


EDIT 5: Έτρεξα όλα τα έγχορδα που χρησιμοποιούνται σε PostData μέσω ενός κωδικοποιητή URL, αλλά είμαι ακόμα να πάρει διακομιστής 500 λάθη. Υπάρχει κάποιος τρόπος για μένα να διορθώσετε γιατί η θέση του σώματος είναι άκυρη εκεί;


ΛΥΣΗ: Εντάξει, δεν θα μπορούσα να πάρει εγχόρδων PostData μου σωστά, αλλά όταν επικολληθεί στην πρώτη σώμα POST λειτουργεί. Αυτό φαίνεται ότι θα είναι αρκετά καλή, αλλά η ανησυχία μου είναι αν αυτό θα συνεχίσει να εργάζεται.

Δημοσιεύθηκε 23/07/2009 στις 16:16
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
3

Αυτή είναι μια σελίδα asp.net. Κάνοντας κλικ στο πλαίσιο ελέγχου προκαλεί η σελίδα που θα αναρτηθεί στο διακομιστή. Έτσι, αντί να προσπαθούν να προσομοιώσουν την javascript τι θέλετε να κάνετε αντ 'αυτού είναι η προσομοίωση της αίτησης θέση.

Αυτό είναι εμφανώς δύσκολο με τις σελίδες ASP.Net, επειδή συνήθως πρέπει να συμπληρώσετε την κρυφή είσοδο __VIEWSTATE. Θα ήθελα να συστήσω χρησιμοποιώντας ένα πακέτο sniffer όπως το Fiddler για να δείτε το πραγματικό αίτημα, δεδομένου ότι έχει σταλεί. Θα πρέπει να μπορείτε να αντιγράψετε το ViewState από εκεί.

Απαντήθηκε 23/07/2009 στις 16:22
πηγή χρήστη

ψήφοι
1

Φαίνεται το Javascript για ξεκινά μια POST στην ίδια σελίδα. Firebug δείχνει την ακόλουθη στα δεδομένα POST.

__EVENTTARGET: ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox

Αυτό είναι πιθανώς ένα καλό μέρος για να αρχίσετε να ψάχνετε.

Απαντήθηκε 23/07/2009 στις 16:25
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more