Onkohan mahdollista tehdä ohjelma, joka tarkkailee esim. 5 min välein, onko tietty web-sivu muuttunut (tai sisältää tiettyjä elementtejä) ?
Miten tämmöisen voisi toteuttaa tai mistä voisi löytää lisäinfoa?
On toki mahdollista.
Esim. curl:lla tai linuxissa ihan yksinkertaisesti crontab:lla ja wget:llä.
Siis lukee sivun 5:min välein vertaa aikaisemman latauksen tietoihin. Jos ei halua koko sivua muistiin, niin sen voi sivun tiivistää esim. md5sum:lla ja vertaa tiivisteiden eroja.
Kiitos vinkistä! Tuo curl näyttäisi olevan oikea työkalu tällaiseen :)
Löytyisiköhän jostakin esimerkkiä, miten tuo toteutetaan win -ympäristössä? Helpottaisi kovasti, kun copy-paste -koodaus on aika hyvin näpeissä ...
Näihin löytyy sitten myös ihan valmiita palveluita:
Esim.
https://visualping.io/
Esimerkiksi PHP:llä voi helposti tehdä kyseisen koodin. Tämä täytyy tietenkin ajaa komentoriviltä (php skripti.php
), ei selaimesta.
<?php $data0 = null; $url = "https://example.com"; while (true) { $data = file_get_contents($url); if ($data === false) { echo "Haku epäonnistui\n"; } elseif ($data === $data0) { echo "Ei muutosta\n"; } else { if (strpos($data, '<!doctype html>') !== false) { echo "Löytyy haettu koodi.\n"; } else { echo "Ei löydy haettua koodia.\n"; } $data0 = $data; } sleep(5 * 60); }
PHP:llä esimerkki toimii annetulla esimerkkisivulla. Minulla on kuitenkin monimutkaisempi tapaus, kun sivulle pitää ensin kirjautua (minulla on tunnus ja salasana). Eli tuolle sivulle ei näyttäisi ihan toimivan, tulee ensin viesti, että Ei löydy haettua koodia, sitten 2x Ei muutosta ja sitten tämä toistuu uudestaan ja uudestaan.
(Olisi muuten kätevä, jos tähän voisi laittaa kuvan näkyviin.)
Kuvakaappaus
Vähän noloahan tämä on kysellä tämmöistä, mutta kun en ole ennen tämmöistä väsännyt ja jostakin pitäisi keksiä, miten tämän saisi pelaamaan ...
Kirjautumisesta on koodivinkki, koetapa etsiä se. Lisäys: Kirjautuminen toiselle sivustolle cURLilla.
Kiitokset hyvästä koodivinkistä!
Oma sovellukseni ei kuitenkaan onnistunut suoraan näin, sillä kirjautuminen on toteutettu eri tavalla ja tämä vaatii lisää paneutumista ja opiskelua.
-----
Lomakkeen tiedot palautetaan samalla sivulla olevaan funktioon:
onSubmit="return do_login(this);
Sitten pitää opetella käyttämään selainta. F12:sta saa auki konsolin, josta voi katsoa, mitä dataa pyynnöissä lähetetään.
Metabolix kirjoitti:
F12:sta saa auki konsolin, josta voi katsoa, mitä dataa pyynnöissä lähetetään.
Sen saa myös useissa selaimissa auki klikkamalla: Kehittäjätyökalut
(Firefoxissa sen saa auki painamalla "Web-työkalut (englanninkielisiä)" ja sitten vielä "Web Console").
No niin, nyt alkaa jo hiukan avautumaan!
Alla olevat rivit palauttavat tyhjän sivun!
$html = $this->get("https://xxxzzzyyy.com/login.pl"); $html = $this->postForm($url, $login_data);
Eli ei näin sitten voikaan toimia.
-----
Minulla täytyy olla jokin asetus tms. pielessä. Yritän selvitellä ...
-------
Nyt lähti toimimaan! php.ini tiedostoon piti lisätä rivi:
curl.cainfo = C:\curl\bin\cacert.pem
Ja k.o. tiedosto ensin ladata sivulta: cacert.pem
Ohjeita löytyi täältä ja täältä.
Niin - ja sitten piti asentaa vielä nämä ohjelmat:
- Microsoft Visual C++ 2008 Redistributable
- Microsoft Visual C++ 2010 x64 Redistributable
- OpenSSL 1.1.1a
Ja toisella koneella tämäkään ei auttanut vaan piti ottaa SSL -optioita pois käytöstä:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
tai näin:
$arrContextOptions=array( "ssl"=>array( "cafile" => "C:\curl\bin\cacert.pem", "verify_peer"=> false, "verify_peer_name"=> false, ), ); $data = file_get_contents($url, false, stream_context_create($arrContextOptions));
Mitähän yrität sanoa? Kyllä tuo GET-pyyntö koodivinkin luokalla palauttaa ihan saman etusivun kuin selain. POST-pyynnön oikeellisuudesta on mahdoton sanoa, kun et kerro, mistä $url ja $login_data koodiisi tulevat.
Minun pitää valitettavasti keskeyttää tämän sovelluksen kehittely. Tarkoituksena oli kehitellä ohjelmia, joiden avulla olisin voinut helposti löytää sopivia vastustajia shakkipeleihin, mahdollisimman nopeasti, kun heitä vapautuu.
Huomasin kuitenkin tänään, että k.o. sivuston säännöissä kielletään tällaisten ohjelmien käyttäminen.
Ote säännöistä kirjoitti:
You will not attempt to interfere with, or hack into xxxzzzyyy servers. You may not cause excessive load on xxxzzzyyy servers and/or excessive use of server resources (e.g. using bots or automated scripts to access xxxzzzyyy). You may not disrupt or intentionally interfere with the normal functionality of the website (e.g. disabling ads).
Olisi ollut kyllä hyvin mielenkiintoista toteuttaa sovellus, joka noutaa tiedot netistä ja niiden avulla sitten voisi helpottaa omaa toimintaa. No ehkä jokin mahdollisuus avautuu vielä myöhemmin.
Kiitokset vielä kaikille keskusteluun osallistuneille!
--------------
No nyt kun luin uudestaan tuon sääntökohdan, niin eihän siinä oikeastaan kielletäkään ohjelmien käyttöä vaan liiallinen (excessive) resurssien käyttö kielletään.
Aihe on jo aika vanha, joten et voi enää vastata siihen.