Vinnaren i pepparkakshustävlingen!
2017-05-23, 09:13
  #1
Avstängd
Vi har en länk: https://www.game-state.com/212.76.128.77:27015/
Jag kan höger klicka och trycka view source så ser jag massa kod text.

Jag känner till php kommandot.
Kod:
$url file_get_contents('https://www.game-state.com/35.154.1.167:27015/');
echo 
$url

Men då hämtas hela hemsidan.

Går det att hämta själva källan? Vet att .php inte går men går det att hämta själva källan det jag ser när jag trycker view source?
Kod:
view-source:https://www.game-state.com/212.76.128.77:27015/ 

Sen en annan fråga.
Går det att hämta just detta från källan eller just den hemsidan som jag länkade till?
Kod:
<td class="field"><b>Players</b>:</td>
<
td class="value" id="players">32/32</td

Jag googlar som fan men är total noob inom området men behöver lösa pusslet som jag håller på med.
Jag fortsätter googla och försöka lösa det men hoppas jag kan få hjälp här med.

Hittade en länk så ni ser att jag försöker och googlar ungefär det jag söker efter.
Vet inte riktigt vad jag ska googla mm.
Länken: https://stackoverflow.com/questions/...without-jquery
__________________
Senast redigerad av B5iK4D3Li5K 2017-05-23 kl. 09:15.
Citera
2017-05-23, 09:34
  #2
Medlem
EckiEckis avatar
Citat:
Ursprungligen postat av B5iK4D3Li5K
Men då hämtas hela hemsidan.

Går det att hämta själva källan?
Jag googlar som fan men är total noob inom området men behöver lösa pusslet som jag håller på med.
Jag fortsätter googla och försöka lösa det men hoppas jag kan få hjälp här med.


Nu tänker du väl ändå galet? Det är källan sim hämtas. Det är din webbläsare som renderar den. Så, vad är problemet?

Du har källan i din variabel. Vad du gör med den sen är upp till dig.
Citera
2017-05-23, 09:36
  #3
Avstängd
Citat:
Ursprungligen postat av EckiEcki
Nu tänker du väl ändå galet? Det är källan sim hämtas. Det är din webbläsare som renderar den. Så, vad är problemet?

Du har källan i din variabel. Vad du gör med den sen är upp till dig.

Tror jag är mest ute efter att hämta just detta endast. Men hur?
Kod:
<td class="field"><b>Players</b>:</td
<
td class="value" id="players">32/32</td

Hittar en länk men lite snack om nåt som kallas jQuery. Fattar inte vad eller hur jag ska gör med jQuery är det några scripts som jag måste ha på min sida eller vad?
https://stackoverflow.com/questions/...rnal-html-site
Citera
2017-05-23, 09:42
  #4
Medlem
EckiEckis avatar
Citat:
Ursprungligen postat av B5iK4D3Li5K
Tror jag är mest ute efter att hämta just detta endast. Men hur?
Kod:
<td class="field"><b>Players</b>:</td
<
td class="value" id="players">32/32</td

Hittar en länk men lite snack om nåt som kallas jQuery. Fattar inte vad eller hur jag ska gör med jQuery är det några scripts som jag måste ha på min sida eller vad?
https://stackoverflow.com/questions/...rnal-html-site

Du ska definitivt inte "ersätta nåt med nåt annat".

Förlåt, men du ställer inte ens rätt frågor.

Börja med att berätta I DETALJ vad det är du vill göra.


(Ja, jQuey är ett ramverk du kan använda i din applikation)
Citera
2017-05-23, 09:47
  #5
Avstängd
Ramverk osv fattar jag inte vad det är. Är jätte okunnig inom området så avancerad prat funkar inte så bra.

Vad jag vill göra är helt enkelt är att hämta detta: Players: 22/32 men helst endast 22 eller 22/32.
Allra helst endast nummer på spelarna online dvs i den stunden jag skriver 22.

Från https://www.game-state.com/212.76.128.77:27015/
Citera
2017-05-23, 13:55
  #6
Medlem
lasternassummas avatar
Jag uppfattar som att det du vill göra är vad som ofta kallas HTML Scraping eller web scraping.

En sökning som hittar en del:
fetch information from web page

scraping
ger också en hel del.

Det är inte en absolut vetenskap eftersom sidan du hämtar från kan förändras när det gäller struktur.
Om du t.ex. söker på en formatkod eller en css-referens och källan ändrar namn, då måste du också ändra.

Läs på lite om scraping, så får du se om det kan ge vad du vill ha.

Citera
2017-05-23, 16:54
  #7
Medlem
Kolla in simple html dom parser. Den kan du använda för att scrapa sidan och hämta ut den information du vill ha.
Citera
2017-05-23, 17:52
  #8
Avstängd
Jag löste det själv.

Kod:
<?
function query_source($address
  { 
    
$array explode(":"$address); 

    
$server['status'] = 0
    
$server['ip']     = $array[0]; 
    
$server['port']   = $array[1]; 

    if (!
$server['ip'] || !$server['port']) { exit("EMPTY OR INVALID ADDRESS"); } 

    
$socket = @fsockopen("udp://{$server['ip']}"$server['port'], $errno$errstr1); 

    if (!
$socket) { return $server; } 

    
stream_set_timeout($socket1); 
    
stream_set_blocking($socketTRUE); 
    
fwrite($socket"\xFF\xFF\xFF\xFF\x54Source Engine Query\x00"); 
    
$packet fread($socket4096); 
    @
fclose($socket); 

    if (!
$packet) { return $server; } 

    
$header                substr($packet04); 
    
$response_type         substr($packet41); 
    
$network_version       ord(substr($packet51)); 

    
$packet_array          explode("\x00"substr($packet6), 5); 
    
$server['name']        = $packet_array[0]; 
    
$server['map']         = $packet_array[1]; 
    
$server['game']        = $packet_array[2]; 
    
$server['description'] = $packet_array[3]; 
    
$packet                $packet_array[4]; 
    
$app_id                array_pop(unpack("S"substr($packet02))); 
    
$server['players']     = ord(substr($packet21)); 
    
$server['playersmax']  = ord(substr($packet31)); 
    
$server['bots']        = ord(substr($packet41)); 
    
$server['status']      = 1
    
$server['dedicated']   =     substr($packet51);  
    
$server['os']          =     substr($packet61);  
    
$server['password']    = ord(substr($packet71));  
    
$server['vac']         = ord(substr($packet81));  

    return 
$server
  } 
$query query_source("8.17.250.90:1337"); 
echo 
"hostname:";  
echo 
$query['name'];  
echo 
"<br/>players:";  
echo 
$query['players'];  
echo 
"<br/>playersmax:";  
echo 
$query['playersmax'];  
echo 
"<br/>vac(?):";  
echo 
$query['vac'];  
echo 
"<br/>passowrd(?):";  
echo 
$query['password'];  
?>
Citera
2017-05-25, 12:39
  #9
Medlem
studioxswes avatar
Citat:
Ursprungligen postat av B5iK4D3Li5K
Jag löste det själv.

Fast det sättet du löste det på har ju inget som helst med din fråga att göra, och om man läser koden så var det nog inte du som skrev den
Citera
2017-05-29, 01:25
  #10
Medlem
Citat:
Ursprungligen postat av B5iK4D3Li5K
Jag löste det själv.

Kod:
<?
function query_source($address
  { 
    
$array explode(":"$address); 

    
$server['status'] = 0
    
$server['ip']     = $array[0]; 
    
$server['port']   = $array[1]; 

    if (!
$server['ip'] || !$server['port']) { exit("EMPTY OR INVALID ADDRESS"); } 

    
$socket = @fsockopen("udp://{$server['ip']}"$server['port'], $errno$errstr1); 

    if (!
$socket) { return $server; } 

    
stream_set_timeout($socket1); 
    
stream_set_blocking($socketTRUE); 
    
fwrite($socket"\xFF\xFF\xFF\xFF\x54Source Engine Query\x00"); 
    
$packet fread($socket4096); 
    @
fclose($socket); 

    if (!
$packet) { return $server; } 

    
$header                substr($packet04); 
    
$response_type         substr($packet41); 
    
$network_version       ord(substr($packet51)); 

    
$packet_array          explode("\x00"substr($packet6), 5); 
    
$server['name']        = $packet_array[0]; 
    
$server['map']         = $packet_array[1]; 
    
$server['game']        = $packet_array[2]; 
    
$server['description'] = $packet_array[3]; 
    
$packet                $packet_array[4]; 
    
$app_id                array_pop(unpack("S"substr($packet02))); 
    
$server['players']     = ord(substr($packet21)); 
    
$server['playersmax']  = ord(substr($packet31)); 
    
$server['bots']        = ord(substr($packet41)); 
    
$server['status']      = 1
    
$server['dedicated']   =     substr($packet51);  
    
$server['os']          =     substr($packet61);  
    
$server['password']    = ord(substr($packet71));  
    
$server['vac']         = ord(substr($packet81));  

    return 
$server
  } 
$query query_source("8.17.250.90:1337"); 
echo 
"hostname:";  
echo 
$query['name'];  
echo 
"<br/>players:";  
echo 
$query['players'];  
echo 
"<br/>playersmax:";  
echo 
$query['playersmax'];  
echo 
"<br/>vac(?):";  
echo 
$query['vac'];  
echo 
"<br/>passowrd(?):";  
echo 
$query['password'];  
?>


Så här kan du också göra:

Kod:
<?php
$url 
"https://www.game-state.com/212.76.128.77:27015";
$ch curl_init();
curl_setopt($chCURLOPT_AUTOREFERERTRUE);
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_FOLLOWLOCATIONTRUE);
$data curl_exec($ch);
curl_close($ch);
libxml_use_internal_errors(true);
$dom = new DOMDocument();
if(
$dom->loadHTML($data)){
    
$xpath = new \DOMXPath($dom);
    
$players $xpath->query('//*[@id="players"]');
    echo 
$players->item(0)->nodeValue;
}else{
    echo 
'nothing in line';
}

Detta hämtar spelar antalet, men det är bara att bygga på queryen efter behov =)
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback