Selaimen automatisointi linuxissa

Selaimen automatisointi linuxissa (Mahdollisesti Firefox, jos ei, niin mikä?)

Windowsissa olen tehnyt Delphillä ohjelman, joka käyttää TWebBrowser -komponenttia, joka on tosiasiassa wrapperi MS Internet Explorer ActiveX -komponentille. Eli siis tuon avulla oma ohjelmani voi käyttää MS-IE:n ActiveX -versiota komponenttina lähes samoin kuin jos se olisi Delphi -komponentti.

Miten saman, tai edes jollain lailla vastaavan toiminnallisuuden voisi toteuttaa Linuxissa ?

Haluaisin siis ensisijaisesti tehdä Kylix -ohjelman, joka käyttäisi Firefoxia (tai jotain muuta linuxissa toimivaa selainta) komponenttina ja oma ohjemani voisi siis komentaa selaimen määrättyyn URLiin, joka voi olla yhtähyvin http tai https -alkuinen, ja jos ko.. sivulla on esim. joku formi, voisi tehdä esim tämäntapaista:

procedure HandlePageLoaded(Sender:TObject);
begin

//

(Sender as TWebBrowser).GetElementByID('Name').Value := 'Mika0800';


(Sender as TWebBrowser).GetElementByID( 'Password').Value := 'salainen007';

(Sender as TWebBrowser).GetElementByID('Button1').Click;

end;

Tuo siis esim. kirjautuisi automaattisesti sisään johonkin netissä olevaan palveluun. Tämä siis toimii siten, että selain ensin käsketään menemään palvelun sisäänkirjautumis-URLiin (voi olla siis myös https !)

Kun sivu on kokonaisuudessaan ladattu, selainkomponentti liipaisee OnPageLoaded -tapahtuman, johon tuo oma ylläoleva tapahtumakäsittelijä on liitetty. Ylläoleva koodi siis täyttää tekstikenttiin käyttäjätunnuksen ja salasanan, ja simuloi lopuksi kirjautumisnapin "Button1" klikkauksen. Tällöin selainkomponentti lähettää html -formin palvelimelle aivan kuin käyttäjä olisi antanut tunnuksen, salasanan ja klikannut "kirjaudu" -nappia, jonka ID siis on esimerkissä "Button1".

Jos Firefoxia tai muutakaan linuxiin saatavilla olevaa selainta ei saa suoraan toimimaan komponenttina omassa ohjelmassa, voiko normaalia selainta vaihtoehtoisesti kauko-ohjata omatekoisesta ohjelmasta, jos molempia ajetaan samalla käyttäjätunnuksella, ettei linuxin tietoturva estä tuollaista toisen ohjelman ohjaamista ?

Löytyykö jostain ohjeita, kuinka linuxissa toteutettaisiin tuollainen?

Olisi nimittäin paljon helpompi hoitaa asia em. tavalla.

Paljon työläämpi vaihtoehto toki on olemassa:

1. koodataan omaan sovellukseen SSL -tuki, jotta se osaa käsitellä SSL eli https -URLeja oikein.

2. Ladataan palvelimen palauttama data, ja parseroidaan se omalla koodilla alusta loppuun. Mahdollista kyllä, mutta työlästä. Varsinkin, kun ei edes riitä pelkkä html:n parserointi, vaan mukana on usein JavaScriptiä, CSS:ää jne.

Tuo JavaScript on ehkä suoraan "atomeista rakennettuna" hankalin, koska moni sivu on riippuvainen JavaScript -toiminnallisuudesta.

Tuohan tarkoittaa sitä, että tässä ratkaisussa joutuisin joko:

a) toteuttamaan oman JavaScript -tulkin

tai

b) aina palvelimen JavaScript -koodin muuttuessa selvittämään mitä ko. koodi tekee ja esimn. reimplementoimaan sen joko Kylixillä tai jos haluaa, jollain muulla kielellä, kääntämään se .so jaetuksi objektitiedostoksi ja ottaa tuo käyttöön Kylix -ohjelmassa.

Koska tämä lähestymistapa todellakin on työläs ja hankala, olisikin kiva jos jo olemassa olevaa selainkoodia (esim. Firefox) voisi tässä jotenkin hyödyntää.

Vai onko todella niin että suljetun lähdekoodin MS-IE on ActiveX -käyttömahdollisuutensa takia koodaajalle hyödyllisempi työkalu kuin avoimen koodin Firefox ???
5529
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Ois kyllä kiinnostavaa tietää, miksi iheessä haluat automatisoida selainta tekemään jotain? Mitä oikeastaan haluat tehdä, ts. mikä sovelluksesi on?

Kerro joku esimerkki, niin ehkä apujakin saattaa löytyä. Jotenkin kalskahtaa, että sulla on jotain hieman...hmmm... outoa mielessä.

Linuxissahan sinänsä voidaan toki tehdä vastaavat temput kuin windowsissa (siis tietoturvamielessä).

Äänestä
  • >...automatisoida selainta tekemään jotain?

    Olen aina ollut sitä mieltä että mitään niin hullua kuin ActiveX ei koskaan tule kenellekään mieleenkään muille kuin mikkiksen koodareille (johtajille?) mutta olin näköjään väärässä. :(

    Äänestä

kysy suoraan kehittäjiltä miten homma toimii, vai toimiiko lainkaan!?
Kun pikkusen epäilen että täältä löytyy mozilla foundationin kehittäjiä (tai mikä se nykyisin onkaan!?!?)!
;-)

Äänestä
  • No täältähän minä ne trendit vakoilen.


    ...

    Äänestä

ei nyt vastaa suoraan kysymykseesi, mutta konquerorin selaimen saa ainakin ihan komponenttina gambasilla ohjelmoitaessa.

eli samaan tapaan kuin ie:n saa win-puolella delphiin twebbrowser-komponenttina.

Äänestä

Kommentoi aloitusta


Mika0800 kirjoitti:

Selaimen automatisointi linuxissa (Mahdollisesti Firefox, jos ei, niin mikä?)

Windowsissa olen tehnyt Delphillä ohjelman, joka käyttää TWebBrowser -komponenttia, joka on tosiasiassa wrapperi MS Internet Explorer ActiveX -komponentille. Eli siis tuon avulla oma ohjelmani voi käyttää MS-IE:n ActiveX -versiota komponenttina lähes samoin kuin jos se olisi Delphi -komponentti.

Miten saman, tai edes jollain lailla vastaavan toiminnallisuuden voisi toteuttaa Linuxissa ?

Haluaisin siis ensisijaisesti tehdä Kylix -ohjelman, joka käyttäisi Firefoxia (tai jotain muuta linuxissa toimivaa selainta) komponenttina ja oma ohjemani voisi siis komentaa selaimen määrättyyn URLiin, joka voi olla yhtähyvin http tai https -alkuinen, ja jos ko.. sivulla on esim. joku formi, voisi tehdä esim tämäntapaista:

procedure HandlePageLoaded(Sender:TObject);
begin

//

(Sender as TWebBrowser).GetElementByID('Name').Value := 'Mika0800';


(Sender as TWebBrowser).GetElementByID( 'Password').Value := 'salainen007';

(Sender as TWebBrowser).GetElementByID('Button1').Click;

end;

Tuo siis esim. kirjautuisi automaattisesti sisään johonkin netissä olevaan palveluun. Tämä siis toimii siten, että selain ensin käsketään menemään palvelun sisäänkirjautumis-URLiin (voi olla siis myös https !)

Kun sivu on kokonaisuudessaan ladattu, selainkomponentti liipaisee OnPageLoaded -tapahtuman, johon tuo oma ylläoleva tapahtumakäsittelijä on liitetty. Ylläoleva koodi siis täyttää tekstikenttiin käyttäjätunnuksen ja salasanan, ja simuloi lopuksi kirjautumisnapin "Button1" klikkauksen. Tällöin selainkomponentti lähettää html -formin palvelimelle aivan kuin käyttäjä olisi antanut tunnuksen, salasanan ja klikannut "kirjaudu" -nappia, jonka ID siis on esimerkissä "Button1".

Jos Firefoxia tai muutakaan linuxiin saatavilla olevaa selainta ei saa suoraan toimimaan komponenttina omassa ohjelmassa, voiko normaalia selainta vaihtoehtoisesti kauko-ohjata omatekoisesta ohjelmasta, jos molempia ajetaan samalla käyttäjätunnuksella, ettei linuxin tietoturva estä tuollaista toisen ohjelman ohjaamista ?

Löytyykö jostain ohjeita, kuinka linuxissa toteutettaisiin tuollainen?

Olisi nimittäin paljon helpompi hoitaa asia em. tavalla.

Paljon työläämpi vaihtoehto toki on olemassa:

1. koodataan omaan sovellukseen SSL -tuki, jotta se osaa käsitellä SSL eli https -URLeja oikein.

2. Ladataan palvelimen palauttama data, ja parseroidaan se omalla koodilla alusta loppuun. Mahdollista kyllä, mutta työlästä. Varsinkin, kun ei edes riitä pelkkä html:n parserointi, vaan mukana on usein JavaScriptiä, CSS:ää jne.

Tuo JavaScript on ehkä suoraan "atomeista rakennettuna" hankalin, koska moni sivu on riippuvainen JavaScript -toiminnallisuudesta.

Tuohan tarkoittaa sitä, että tässä ratkaisussa joutuisin joko:

a) toteuttamaan oman JavaScript -tulkin

tai

b) aina palvelimen JavaScript -koodin muuttuessa selvittämään mitä ko. koodi tekee ja esimn. reimplementoimaan sen joko Kylixillä tai jos haluaa, jollain muulla kielellä, kääntämään se .so jaetuksi objektitiedostoksi ja ottaa tuo käyttöön Kylix -ohjelmassa.

Koska tämä lähestymistapa todellakin on työläs ja hankala, olisikin kiva jos jo olemassa olevaa selainkoodia (esim. Firefox) voisi tässä jotenkin hyödyntää.

Vai onko todella niin että suljetun lähdekoodin MS-IE on ActiveX -käyttömahdollisuutensa takia koodaajalle hyödyllisempi työkalu kuin avoimen koodin Firefox ???

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu