Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Web-sivun tarkkailu

Sivun loppuun

TapaniS [21.02.2019 16:38:13]

#

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?

peran [21.02.2019 18:10:59]

#

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.

TapaniS [22.02.2019 09:10:35]

#

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ä ...

Lebe80 [22.02.2019 09:38:50]

#

Näihin löytyy sitten myös ihan valmiita palveluita:

Esim.
https://visualping.io/

Metabolix [22.02.2019 10:14:42]

#

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);
}

TapaniS [22.02.2019 20:54:40]

#

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 ...

Metabolix [22.02.2019 21:14:14]

#

Kirjautumisesta on koodivinkki, koetapa etsiä se. Lisäys: Kirjautuminen toiselle sivustolle cURLilla.

TapaniS [23.02.2019 11:44:15]

#

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);

Metabolix [23.02.2019 11:48:17]

#

Sitten pitää opetella käyttämään selainta. F12:sta saa auki konsolin, josta voi katsoa, mitä dataa pyynnöissä lähetetään.

Koodi123 [23.02.2019 12:14:05]

#

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").

TapaniS [23.02.2019 18:35:11]

#

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));

Metabolix [23.02.2019 20:03:41]

#

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.

TapaniS [24.02.2019 15:59:25]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta