TWebBrowser

Veli Puolikuu

Nyt olen päässyt siihen vaiheeseen, että muodostan linkin, jolla Veikkaukselle voi jättää pelejä (esim. monivetorivejä) sisään. Siirrän linkin WebBrowseriin ja navigoin Veikkauksen tekstikäyttöliittymään ko. sivulle.

Tällä sivulla pitää tallentaa käyttäjätunnus ja salasana sekä painaa hyväksy-painiketta pelin hyväksymisen merkiksi. Tässä kohtaan kaksi ongelmaa.

Käyttäjätunnus ja salasana eivät välity koodilla:

EncodedDataString := 'username=' HTTPEncode(EditUname.Text) '&' 'password=' HTTPEncode(EditPword.Text);

PostData :=
VarArrayCreate([0, length(EncodedDataString)-1], varByte);
for i := 1 to length(EncodedDataString) do
PostData[i-1] := ord(EncodedDataString[i]);

Headers := 'Content-type: application/x-www-form-urlencoded'#10#13;

WebBrowser1.Navigate(Osoite, EmptyParam, EmptyParam, PostData, Headers);

Tuolta sivulta en pääse eteenpäin painamatta hyväksy-painiketta. Nähtävästi homma toimisi, jos teen nuo asiat käsin ja ilmoitan ohjelmalle, kun seuraava peli on valmis jätettäväksi. Tämä toimintatapa ei luonnollisesti kiinnosta, sillä hyväksymispainiketta pitäisi painaa kymmeniä, jopa satoja kertoja.

6

500

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • sillai et

      hiiri klikkaa sit nappulaa sillai virtuaalisest: hiirtähän voi helposti ohjata ohjelmallisesti niin, että niistä, joilla ei ole tilastotieteistä mitään hajua, näyttää siltä, että jätkällähän on tosinopee hiirinäppi. Tietysti tuota vastaan on kehitetty kaikenmaailman bustereita, jotka yrittävät antaa siitä ohjelmoidusta hiirihyvästä sulle banskui. Kannataa laittaa sihähen niin, että se alkorytmi muuttuu satunnaisesti tai muuten ne alkaa Veikkauksen päässä haisteleen palaneen käryä, kun ne on tilastotiede-experttei, varsinkin, jos alat voittaa silmittömästi ja sit ne haastaa sut oikeuteen ja yrittää saada sulta kivuista ja säryistäkin rahat takas, vaikka sulla ei mitään vilunkia ois ollutkaan, mutta kaikkien pioneerien tie on kivikkoinen juuri tuossa mielessä, sillä ennakkotapauksia ei heidän tapauksissaan vielä ole.

    • .-_._-.
      • just_coder

        Winhttp tai vanhempiin käyttiksiin winInet tai siihen suuntaan...


      • Delphiasiantuntija

        Kyllä tähän TWebBrowser on paras lähtökohta.

        Teoriassa tietysti voisit hoitaa hommman itse TCP/IP:llä ja olla käyttämättä graafisia kilkkeitä.

        Mutta tämäntapaisessa tehtävässä tuo TCP/IP:n päälle itse koodaus on tuhoontuomittu viritys. Kun nimittäin Veikkaus muuttaa palvelimellaan jonkin pienenkin yksityiskohdan, TCP/IP:llä saat koodata kaiken alusta alkaen uudelleen.

        Ja voin kokemuksesta kertoa: jotkut http -servereiden pitäjät tarkkailevat jopa sitä, missä järjestyksessä http GET -pyynnön eri header -rivit tulevat (standardien mukaan järjestyksellä ei ole mitään väliä). Ja estävät pääsyn palvelimelleen jos rivit tulevat eri järjestyksessä kuin esim MS Internet explorer ne antaa.

        Siksi TWebBrowser on paras ratkaisu: se kun sisäisesti käyttää MS Internet explorerin kanssa samaa webbi"moottoria", siksi kun käytät sitä oikein, niin webbisivuston omistajalla ei ole mitään keinoa erottaa MS Internet exploreria ja omatekoista delphiohjelmaasi toisistaan, sillä palvelimen pääsät katsottuna ne näyttävät täsmälleen samalta.

        Tuosta TWebBrowserista on olemassa "jalostetumpi" versio, TEmbeddedWB (ei ole delphissä vakiona vaan löytyy netistä).

        Varoitus: JOS käytät TEmbeddedWB:tä, niin ennen moisen virityksen kääntämistä: etsi koodista kaikki kohdat jotka kirjoittavat windowsin rekisteriin ja poista ne!

        Muussa tapauksessa TEmbeddedWB paljastaa itsensä web -palvelun ylläpitäjälle typerällä user-agent -rivillään, ja aiheuttaapa vielä senkin, että muokkaamatonta TEmbeddedWB:tä käyttävän delphiohjelman ollessa käynnissä, myös samaan aikaan käynnissä olevalla MS Internet explorerilla tehdyt sivuhaut myös näyttävät palvelmelle TEmbeddedWB:tä user-agent kentässä!

        Mutta jois poistat TEmbeddedWB:n koodista kaikki windows rekisteriin kirjoittavat kohdat ennen kääntöä ja ajoa, ongelmaa ei ole.

        Tuo komponentti siis kirjoittaa oman nimensä windows -rekisteriin käynnistettäessä ja pyrkii poistamaan sen sieltä Destroy -destruktoria kutsuttaessa (välillisesti siis myös Free ja FraaAndNil -kutsuilla).

        Mutta jos tehtävässä on tärkeää, ettei web -palvelimen omistaja voi erottaa ohjelmasi tekemiä sivuhakuja selaimella tehdyistä, niin TWebBrowser (tai muokattu TEmbeddedWB) on ainoa oikea ratkaisu.

        Suora TCP/IP:llä leikkiminen ei todellakaan kannata, syynä se, että kun palvelimen omistaja uudistaa sivustoaan, niin työmäärä jolla muutoksiin täytyy vastata, on huomattava, kun TWebBrowser:ia käytettäessä se on yleensä pieni.

        mm. ICS (Internet Component Suite):een kuuluva THttpCli tekee juuri tuota, että antaa palvelimelle GET -pyynnön header -kentät eri järjestyksessä kuin MS-IE, ja tästä palvelimen ylläpitäjän on helppo tunnistaa tuon käyttö.

        TWebBrowserissa taas state -kenttä on ystäväsi, samoin Delphin oma TTimer -komponentti, jolla voit luoda satunnaisia viiveitä, jottei haut näytä automatisoiduilta.

        Delphi sensijaan on kova sana ohjelmoinnissa ja Delphin käyttäjällä on pysyvä kilpailuetu.


    • just_coder

      HTTP- protokollan mukaisen tunnistuksen (authentication) mukaan kun toimit niin pelaa varmasti, ihan samoin kuten kaikki selaimetkin, sitä en tiedä kuinka delphin web..luokka toimii, mutta perus proton tasolla tuon saa vaivattomasti hoidettua.

    • 89101112

      Jos on vielä ongelmana, laita formin source näkyviin tai url.

      Tuosta puuttuu ainakin referer.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. SDP haluaa LISÄÄ veroja bensa-autoille!

      Sdp:n vaihtoehtobudjetti esittää polttomoottoriautoille lisää veroja Sdp esittää tuoreessa vaihtoehtobudjetissaan verot
      Maailman menoa
      185
      17555
    2. Riikka se jytkytti BKT:stä nyt 0,3 prosenttia pois

      Ja vain kolmessa kuukaudessa! Vuositasollahan tuo tarkoittaa reilun prosentin pudotusta. Pärjäisi varmaan lasketteluss
      Maailman menoa
      48
      10071
    3. Vasemmistoaate on aatteista jaloin

      Kaikki saavat ja kukaan ei jää ilman. Kuka tuollaista voisi vastustaa?
      Maailman menoa
      142
      6121
    4. Antti Lindtman kiitti valtiovarainministeri Purraa

      Ministeri Purra kertoi ottavasa vastuun EU:n alijäämämenettelyyn joutumisesta. Hän myös sanoi tietävänsä, että Lindtman
      Perussuomalaiset
      46
      3230
    5. Suomalaisten enemmistö on (ateisteja / fiksuja / sosialisteja)

      Tai jokin noiden yhdistelmä, koska S-ryhmän markkinaosuus päivittäistavarakaupasta on yli 50 prosenttia.
      Maailman menoa
      22
      2929
    6. Brittiläinen vasemmistolehti: Sanna Marin oli vihdoin rehellinen

      Nyt tulee pahasti lunta tupaan Seiskan tähtitytölle. Ex-pääministerin kirjaa arvostellaan latteuksista ja itsekehusta.
      Maailman menoa
      31
      2881
    7. "Purra löylytti oppositiota", sanoi naistoimittaja Pöllöraadissa

      Kyllä, Purra tekee juuri sitä työtä mitä hänen tuossa asemassa pitää tehdä, hän antaa oppositiolle takaisin samalla mita
      Maailman menoa
      59
      2721
    8. Henkilökohtaisia paljastuksia Dubaista - Kohujulkkis Sofia Belorf on äitipuoli ja puoliso!

      Tiesitkö, että Sofia on äitipuoli ja rakastava puoliso? Sofia Belorf saa oman sarjan, jossa seurataan hänen Bling Bling
      Kotimaiset julkkisjuorut
      87
      2665
    9. Kenen luo menisit nyt

      jos se olisi mahdollista?
      Ikävä
      140
      1932
    10. Alexander C. G. riisti demari-Veijolta arvonimen

      "Stubb myönsi 66 arvonimeä ja peruutti yhden arvonimen. Presidentti Tarja Halonen myönsi Baltzarille kulttuurineuvoksen
      Maailman menoa
      49
      1921
    Aihe