Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: galleria.suomi24 selaaja

Sahrah [28.04.2008 09:02:53]

#

Tämä skripti selailee galleria.suomi24.fi tunnuksia. Ideana on jättäytyä vieraslistan 10 viimeisimpään kävijään. Tarvitsee toimiakseen kirjautumisevästeet, jotka galleria.suomi24.fi antaa.

Toiminta: hakee aloitustunnuksen profiilisivun ja erottelee lähdekoodista 10 viimeisintä kävijää. Sen jälkeen arpoo niistä yhden ja hakee taas sen käyttäjän sivun ja käy jokaisen sivulla ja niistä taasen arvotaan uusi haettava sivu... jne jne

HUOM!!! Tehty toimimaan komentoriviltä, tosin kyllä selaimellakin toimii mutta vähintäänkin <pre> tagien sisälle pitäisi koodi laittaa, taikka sitten muokata br kaikkiin echoihin tai sitten vain poistaa ne.

Toimivuuden voi helposti todeta menemällä toisella selaimella (selaisella, joka ei ole kirjautuneena) jonkun käyttäjän sivulle, jossa skripti sanoo käynneen ja katsoa onko tunnuksesi viimeeksi käynneissä. Älä kuitenkaan kirjaudu ulos selaimella, jolla kirjauduit sisään, kun en ole varma poistaako suomi24 sessionisi sieltä ja silloin skriptikään ei toimisi.

<?php
set_time_limit(0);
function kay($tunnus) { //KÄY käyttäjäsivulla
	global $evaste;
	$uudestaan = false;

	do {
		$yhteys = fsockopen("galleria.suomi24.fi", 80, $errno, $errstr, 10);
		if (!$yhteys) {
			echo "Yhteyden muodostamisen aikaraja!\n";
			echo "Odotetaan 30sek.....\n\n";
			$uudestaan = true;
			sleep(30);
		}
	} while ($uudestaan);

	if (!$yhteys) {

		sleep(30);
		return NULL;
	}

	$paketti = "GET /$tunnus HTTP/1.1\n";
	$paketti .= "Host: galleria.suomi24.fi\n";
	$paketti .= "Cookie: $evaste\n";
	$paketti .= "Keep-Alive: 300\n";
	$paketti .= "Connection: close\n\n";

	fputs($yhteys, $paketti);
	fclose($yhteys);
}

function hae($tunnus) { //KÄY sivulla ja HAE myös sivulla käynneet muut käyttäjät
	global $evaste;
	global $alku;
	$uudestaan = false;

	do {
		$yhteys = fsockopen("galleria.suomi24.fi", 80, $errno, $errstr, 10);
		if (!$yhteys) {
			echo "Yhteyden muodostamisen aikaraja!\n";
			echo "Odotetaan 30sek.....\n\n";
			$uudestaan = true;
			sleep(30);
		}
	} while ($uudestaan);

	$paketti = "GET /$tunnus HTTP/1.1\n";
	$paketti .= "Host: galleria.suomi24.fi\n";
	$paketti .= "Cookie: $evaste\n";
	$paketti .= "Keep-Alive: 300\n";
	$paketti .= "Connection: keep-alive\n\n";

	fputs($yhteys, $paketti);

	while(!feof($yhteys)) {
		$vastaus = fgets($yhteys, 2048);
		//echo $vastaus;
		if (preg_match('/\<a href="\/.{0,}"\>[a-z|A-Z|0-9|\_]{0,}\<\/a\>/', $vastaus) AND !preg_match('/'.$alku.'/i', $vastaus)) {
			$m = preg_replace('/(\<a href=".{0,}"\>)(.{0,})(\<\/a\>)/', "$2", $vastaus);
			$m = trim($m);
			$tunnukset[] = $m;
		}
		elseif (preg_match('/Tämä Galleria-sivu ei ole julkinen./', $vastaus)) {
			fclose($yhteys);
			$m = array($alku, $alku);
			return $m;
			break;
		}
	}
	fclose($yhteys);
	return $tunnukset; // 10 viimeisintä kävijää taulukossa
}

//Monenko tunnuksen kaikki kävijät silmukoidaan läpi, eli lopullisia käyntejä tulee $maara * käyttäjäsivulla olevat käyttäjät
$maara = 6000;

//OMA tunnus (huomioi kirjainkoko)
$alku = '';

//Kirjautumiseväste tarvitsee JSESSIONID, USERID ja SOLauth näkee todenäköisesti selaimen asetuksista, itse kuitenkin käytän firefoxiin erilista pluginia jolla muokata evästeitä.
$JSESSIONID = '';
$USERID = '';
$SOLauth = '';

$evaste = "JSESSIONID=$JSESSIONID;USERID=$USERID;SOLauth=$SOLauth;";

for ($i = 0; $i < $maara; $i++) {

	if ($sattuma == NULL) { //Virheenkorjausmekanismia
		$sattuma = $alku;
	}

	$taulu = hae($sattuma);
	$rand = rand(0, count($taulu)); //Arvotaan tunnustaulukosta kävijä
	$sattuma = $taulu[$rand];

	foreach ($taulu As $a) {
		kay($a);
		echo "K\x84yty: $a\n";
	}
	echo "****** Seuraava kierros nro $i *********\n\n";
	echo "Arpaonni: $sattuma @ $rand\n\n";
}

?>

tsuriga [29.04.2008 13:53:58]

#

Sahrah kirjoitti:

Älä kuitenkaan kirjaudu ulos selaimella, jolla kirjauduit sisään, kun en ole varma poistaako suomi24 sessionisi sieltä ja silloin skriptikään ei toimisi.

Mitä luultavammin poistaa.

Tämä, kuten edellinenkin vinkkisi, on melko arveluttava jo perusidealtaan. Erityisen ongelmallisia tässä ovat nuo kierrosmäärät - tämäkin ohjelma heittää 12000 kyselyä suomi24:n sivuille sitä mukaa kun koneesta löytyy potkua. Luultavasti tämän vuoksi osa socketeista (suom. vastakkeista, kuka kehtaa väittää tietäneensä tämmoisen termin entuudestaan?:)) ei yhdisty ja joudut odottelemaan. Aika äkkiä saa tällaisella hammerointiskriptillä sivuston ylläpitäjien vihat niskaan.

Sahrah [30.04.2008 09:05:40]

#

tsuriga kirjoitti:

Tämä, kuten edellinenkin vinkkisi, on melko arveluttava jo perusidealtaan. Erityisen ongelmallisia tässä ovat nuo kierrosmäärät - tämäkin ohjelma heittää 12000 kyselyä suomi24:n sivuille sitä mukaa kun koneesta löytyy potkua. Luultavasti tämän vuoksi osa socketeista (suom. vastakkeista, kuka kehtaa väittää tietäneensä tämmoisen termin entuudestaan?:)) ei yhdisty ja joudut odottelemaan. Aika äkkiä saa tällaisella hammerointiskriptillä sivuston ylläpitäjien vihat niskaan.

Olet varmasti oikeassa siinä, että tämä ilmeisesti rasittaa palvelinta hyvinkin paljon. Huomioidaan kuitenkin suomi24 palvelun suuri käyttäjäkunta ja se, kuinka monia tuhansia hakuja sinne tulee muutekin per minuutti. Varmasti olisi kuitekin ystävällisempää lisätä tähän jokin sleep toiminto, joka odottelisi joitakin sekunnin sadasosia ennenkuin siirtyy seuraavaan.

Socketin avaamisen jumittuminen ei ole ongelma, odotellaan 30s ja yhdistetään uudelleen, jos 10s timeout menee yli. Antaa palvelimelle aikaa toipua.

Ideallisesti vinkkini on varmaan monenkin ihmisen mielestä arveluttavia, mutta meitä, jonka ajatusmaailman mukaan tämä on hyväksyttävää taitaa olla vain muutama prosentti väestöstä.

Vastaus

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

Tietoa sivustosta