Socket verbinding
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
www.barafranca.nl
Address: 67.213.67.11
Edit: nslookup 67.213.67.11
;; connection timed out; no servers could be reached
DNS is vast niet helemaal in orde.
Name: Address: 67.213.67.11
Edit: nslookup 67.213.67.11
;; connection timed out; no servers could be reached
DNS is vast niet helemaal in orde.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Hoe kan ik het oplossen dan?
Het zou geen verschil moeten maken. Die naam en dat ip horen bij elkaar.
probeer eens zonder het www record, dus gewoon barafranca.nl
Jurgen schreef op 14.05.2008 14:38:
probeer eens zonder het www record, dus gewoon barafranca.nl
Zelfde ip-nummer.
Dat weet ik, maar misschien wat problemen met de records?
Het werkte eerst dus wel maar ze hebben iets aangepast waardoor ik niet meer op deze manier kan verbinden.
Iemand anders nog een idee?
Ik denk gewoon dat ze geen remote toegang (meer?) toe staan.
En ik ken iemand die kan er wel mee verbinden maar hij wil alleen niet vertellen hoe...
heb je überhaupt wel toegang tot die server?
WireShark (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.
Je kan met bijvoorbeeld 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.
404 - Not Found
1.0 heb ik geprobeerd
hier is het script waarmee ik het even probeer
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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;
?>
$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=/
<!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>
Gewijzigd op 01/01/1970 01:00:00 door Ilja
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.
Het werkte inderdaad.