• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

fsockopen - ip gesperrt, gegenmittel?

  • Ersteller Ersteller FoXMorayn
  • Erstellt am Erstellt am
F

FoXMorayn

Guest
hallo,

ich bekomme mit fsockopen einen timeout bei einer seite, wenn ich den request vom server aus sende. über meinen pc funktioniert es gut.
ich gehe davon aus, dass die ip gesperrt ist. habe ich noch eine andere möglichkeit inhalt der seite abzufragen, außer einem proxy server?

gruß,
foxmorayn
 
Ein paar zusätzliche Informationen wären ganz hilfreich. Um welche Seite handelt es sich und zeige doch am besten deinen Code um zu sehen, ob du nicht einen Flüchtigkeitsfehler gemacht hast.
 
der erzeugte request funktioniert ja, von meinem pc aus. auf dem server läuft zwar linux, aber der request ist identisch. andere seiten kann ich problemlos abrufen. vermutlich wurde die ip gesperrt, aber wie kommt jemand darauf die ip eines servers zu sperren? woher hat er die ip? oder gibs noch etwas, an das ich nicht gedacht habe?

hier nochmal eine andere frage. hab ich per php die möglichkeit die client ip zu ändern? also einen request mit einer "dummy" ip zu senden? in manchen fällen wär die antwort egal, es reicht wenn der server das php script ausführt.
auf der anderen seite, kann ich als server solche requests erkennen?
 
Man kann in der php.ini die Verbindung per URL verbieten.
Code:
allow_url_fopen = on
ist die Einstellung, die da wohl probleme macht. Steht da off, geht fsocks nicht.
 
Ausserdem ist die Frage, ob du den timeout wirklich vom Verbindungsaufbau bekommst oder ob nicht in Wirklichkeit dein Server eine Laufzeitbeschränkung hat
 
zu 99,x% funtioniert das script.
zuerst würd ich gern herausfinden, ob die ip wirklich gesperrt ist. hat jemand ne idee? ohne antwort vom server steh ich da ziemlich auf dem schlauch.
 
Wie gesagt, die erste Frage die zu klären ist, ist: woher kommt der timeout?
 
Zuletzt bearbeitet von einem Moderator:
Dazu muss er auch die Rechte haben.

Was spricht den gegen?
PHP:
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    echo "Verbindung ok";
    fclose($fp);
}
 
PHP:
<?PHP

function ping($host, $port)
{
   $timeout = 20;
   $handle = @fsockopen($host = "udp://".$host, $port, &$errno, &$errstr, $timeout);
   if (!$handle)
   {
        return false;
        exit();
   }
   else
   {
         fclose($handle);
         return true;        
   }
}


$server = array("87.164.113.57 ", "77.95.25.166","mn-portal.at", "html.de", "turilau.hu");
foreach ($server as $webserver)
{
    if (ping($webserver,80))
    {
        echo $webserver.": online"."<br>";

    }
    else
    {
        echo $webserver.": offline"."<br>";
    }
}
?>
Geht ein Server und deine IP nicht, ist sie gesperrt.
Ersetze den tirilau.hu-Server durch deine IP und dann sieht man of fsocksopen klappt und nur die IP dicht ist.
 
Zuletzt bearbeitet von einem Moderator:
Was sollen den die Funktionen hinter den return Anweisungen?
In meinem Beispiel (ist von der php.net Seite) hätte er auch die Chance eine Fehlermeldung zu sehen
 
Jep, vertauscht und Code korrigiert....

Ich würde übrigens die IP und nicht den Namen verwenden, er wollte ja wissen, ob die IP gesperrt ist. Den error könnte er übrigens auch bei mir auflisten.

Der Unterschied unserer Codes ist ja eigentlich nur der, dass ich gleich mehrere Server abfragen kann..

Ich tipp ja immernoch darauf, dass der Server restriktiver eingestellt ist als der Rechner zuhause. Der Fehler ist also nicht im Script sondern in der Konfiguration des Servers zu suchen.

Anhang anzeigen 1820
 
Zuletzt bearbeitet von einem Moderator:
Das ist alle im Prinzip das Gleiche, aber zum testen ob du die Verbindung aufbauen darfst, reichen die drei Zeilen, die ich dir gezeigt habe aus
 
ein phpinfo() auf dem Server, auf dem es dann laufen soll, wäre mal eine tolle Sache, dass man PHP-Konfigurationsfehler ausschliessen kann.
 
welche einstellungen wären dafür interesannt? muss diesmal leider nen bisschen knauserig mit code und informationen sein -.-
 
Bitte beantworte doch mal das bisherige. Was passiert, wenn du den von mir geposteten Code mit der entsprechenden URL ausprobierst?
 
sorry :) ja der ping funktioniert, aber die verbindung auf port 80 oder 21 funktoniert nicht. damit hab ich nicht gerechnet.
noch eine kleine frage. warum muss man udp angeben, aber kein tcp? wird tcp als standard verwendet?
 
Was kommt denn als Fehlermeldung?
Wie gesagt, wenn du den von mir geposteten Code ausprobierst, bekommst du auch eine Meldung angezeigt.
PHP:
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    echo "Verbindung ok";
    fclose($fp);
}
 
Zurück
Oben