Goedemiddag allemaal,

Ik probeer met een socket script verbinding te maken met een website zodat ik via een php script stats kan ophalen uit een spel.

Hiervoor gebruik ik het volgende om de socket te openen:

[script]
fsockopen("www.barafranca.nl", 80, $errno, $errstr, 30);
[/script]

Zoals je kunt zien probeer ik verbinding te maken met www.barafranca.nl.
Maar zodra ik dat probeer kom ik er achter dat het script verbinding zoekt met http://67.213.67.11/
Alleen dat is niet wat ik zoek... Want daar kan ik niet inloggen of krijg ik geen index ervoor of iets dergelijks.

Ben ik misschien iets vergeten? Of moet ik wat mee in de header sturen?


Alvast bedankt,

Ilja
Je kan met bijvoorbeeld [google]WireShark[/google] (of een simpeler winpcap achtig programmaatje) je netwerkverkeer van je browser onderscheppen, en zo zien welke headers die opstuurt. Verstuur exact diezelfde headers over je socket, en het zou moeten werken - de server zou geen onderscheidt moeten kunnen maken.

Echter, gebruik je HTTP/1.1 (als het goed is staat dit in de eerste regel die je verstuurt) dan kan je chunked content terugverwachten. En dat is redelijk lastig. Het is gemakkelijker om 1.0 te gebruiken, maar misschien is dit iets waar Omerta op afknapt. Moet je even uitproberen.

Overigens, welk deel lukt niet? Vaalt de fsockopen aanroep? Kom je daarna niet verder? Lukt het inloggen niet, wat is de foutmelding of het antwoord dat je uit de socket trekt? Hoe ziet de rest van je script eruit? (En dan vooral de stukjes die je naar je socket schrijft en waar je hem uitleest.
Ik kan niet bij de inlog pagina komen dat is game-login.php want als ik dat meestuur in de header dan krijg ik
404 - Not Found


1.0 heb ik geprobeerd

hier is het script waarmee ik het even probeer


<?php

$website = fsockopen('barafranca.com', 80);

// check if the website is found
if(!$website) {

echo'Could\'t open google!';

} else {
// write to the http server

fwrite($website, "GET /game-login.php HTTP/1.0\r\n");
fwrite($website, "Host: www.google.com\r\n";);



fwrite($website, "Connection: Close\r\n\r\n");

// a variable for storing the html code
$html = '';

// read the website
while(!feof($website)) {
// store the html into a variable
$html .= fgets($website, 1280000);

}

// when we're done we'll close the socket
fclose($website);

}

echo $html;
?>

output:

HTTP/1.0 404 Not Found
Connection: close
Content-Type: text/html
Content-Length: 345
Date: Wed, 14 May 2008 17:59:44 GMT
Server: lighttpd
Set-Cookie: OMERTASID=appsrv3; path=/

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
<head>
<title>404 - Not Found</title>
</head>
<body>
<h1>404 - Not Found</h1>
</body>
</html>

Iemand?
Je stuurt headers van google naar de webserver.
Host is barafranca.com lijkt mij :/
Jelmer schreef op 15.05.2008 23:14
Host is barafranca.com lijkt mij :/

Als ik bovenstaand script test met www.barafranca.com i.p.v. google dan krijg ik dit:
HTTP/1.0 200 OK Connection: close Set-Cookie: PHPSESSID=c1bc601005a19b91548a8ebf03a73cc9; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-type: text/html; charset=iso-8859-1 Content-Length: 24647 Date: Thu, 15 May 2008 21:24:35 GMT Server: lighttpd Set-Cookie: OMERTASID=appsrv3; path=/

En daaronder een hele site met:
Massive Multiplayer Text-Based RPG Gangster Game

Dus het lijkt mij dat het werkt.
Bedankt!!

Het werkte inderdaad.

Reageren