ASP.NET képernyő kaparja Hozzászólás szimulálása

szavazat
1

Próbálom letölteni és elemezni a HTML egy internetes oldalon. A közelmúltban, a forrás honlapon költözött, amelyek rendelkeznek az információt az egyik oldalon rejtőzik része mögött javascript. Van egy „Show All” négyzetet, ami szükséges aktivált érdekében, hogy megtekinthesse a teljes oldalt.

Itt a honlapon: Source Website

Lényegében azt keresem, hogy automatizálják előhívási oldal után a négyzetet került kattintott. Jelenleg van egy C program, amely letölti a weboldal és kezeli a elemzés. Nem vagyok benne biztos, hogy el tudja fogadni a javascript az URL, ha ez lehet, hogy megoldja ezt a problémát (Próbáltam egy könyvjelző, hogy hívja a javascript az URL, de nem voltam képes, hogy azt kell kezelni a négyzetet), de képes a fájlokat, ha könnyebb levelet C # program, amely képes kezelni.

Inkább egy kódolni ezt magam helyett egy harmadik fél programot, hogy ne kelljen semmit telepíteni a szerver ezen fut. Minden segítséget nagyra értékelik.


Edit: Alapvetően hogyan tudom automatizálni a hívást a javascript, amely kapcsolódik, hogy a „Select All” négyzetet, így tudok megragad a HTML-oldalon mindent az, ami után megjelenik a jelölőnégyzet.


Szerkesztése 2: Itt a kimenet 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

Én jelenleg egyre 500 hibák a szerver. Muszáj, hogy tartalmazza az összes ilyen GenericWebUserControls utáni kérelmet is? Is van szükség, hogy tartalmazza a EVENTVALIDATION?


EDIT 3: Itt a legújabb kódot. Én is kapok szerver 500 hibákat.

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: I Megállapítottuk, hogy ez a POSTDATA karaktersorozat, amely okozza a kiszolgáló 500-as hiba. Ha teszem azt egy üres karakterlánc, kiadja az egész weboldalt. Tudja valaki, ha jól tudom az, hogy mindent, hogy jött Fiddler2, hogy volt egy értéket a POSTDATA húr? Azt is, hogy __VIEWSTATE egy hihetetlenül hosszú sora. Vannak határok, vagy bármi nem vagyok biztos?


EDIT 5: futottam az összes húrok használt POSTDATA keresztül URL jeladó, de én még mindig kapok szerver 500 hibákat. Van-e mód arra, hogy debug miért utáni test érvénytelen?


MEGOLDÁS: Ok, nem tudtam én POSTDATA húr helyes, de amikor beillesztette a nyers POST szervezet működik. Ez úgy néz ki, mint ez lesz elég jó, de a gond az, ha ez továbbra is működni.

A kérdést 23/07/2009 16:16
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
3

Ez egy asp.net oldalt. A jelölőnégyzet okozza, hogy az oldalról küldte vissza a szerver. Tehát ahelyett, hogy szimulálják a javascript mit szeretne csinálni, ahelyett, szimulált utáni kérelmet.

Ez közismerten trükkös ASP.Net oldalakon, mert általában kell feltöltenie a rejtett __ViewState bemenet. Azt ajánljuk, hogy a csomag szippantás mint Fiddler , hogy megtekinthesse a tényleges kérelmet az elküldés. Meg kell tudni, hogy másolja a ViewState onnan.

Válaszolt 23/07/2009 16:22
a forrás felhasználó

szavazat
1

Úgy néz ki, a JavaScript kezdeményez POST ugyanarra az oldalra. Firebug megmutatja a következő a POST adatokat.

__EVENTTARGET: ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox

Ez talán egy jó hely kezdeni.

Válaszolt 23/07/2009 16:25
a forrás felhasználó

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