Ergebnis 1 bis 9 von 9
  1. #1
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    Umleitungslimit umgehen

    In meinem Browser kommt die ganze Zeit ein Fehler nach Aufruf meines Scripts
    HTML-Code:
    Umleitungslimit überschritten
    (So in der Art)
    In meinem Script werden halt ziemlich viele Weiterleitungen benutzt. Das Script ruft sich so selbst wieder auf, immer wieder (hat natürlich ein Ende, jedoch kann das unter Umständen erst nach 50-100 Umleitungen kommen).

    Habt ihr ne Idee ob ich da was in der Webserverconfig ändern muss oder wie ich das umgehen kann?

    Danke leute...
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  2. #2
    Avatar von rasputin
    rasputin ist offline Lounge-Member
    registriert
    31-10-2001
    Beiträge
    3.102

    AW: Umleitungslimit umgehen

    das limit wird nicht vom server, sondern vom browser definiert. es sollte funktionieren, wenn du an jeden redirect einen zufälligen teil ranhängst. ich meine sowas:
    PHP-Code:
    $redirect "index.php?".rand(); 

  3. #3
    Avatar von RoyalKnight
    RoyalKnight ist offline Foren-Gott
    registriert
    14-02-2003
    Ort
    Austria
    Beiträge
    3.270

    AW: Umleitungslimit umgehen

    Entweder du setzt das time_limit deines Scripts nach oben bzw. schaltest es aus, oder du machst es nach rasputins Vorschlag, dass du einen Counter einbaust und diesen mitübergibst. Ein Zeitlimit überschreitest du, wenn du für den Browser in einer "Endlosschleife" landest...



    Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.

  4. #4
    Harry Hunt ist offline Routinier
    registriert
    08-07-2005
    Ort
    Stuttgart, Baden-Württemberg
    Beiträge
    274

    AW: Umleitungslimit umgehen

    Oder du überlegst dir, ob es überhaupt nötig ist, so viele Weiterleitungen zu benutzen. Ich weiß ja nicht, woran du gerade arbeitest,aber ich glaube ich habe noch nie mehr als zwei Weiterleitungen benutzt.

  5. #5
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    AW: Umleitungslimit umgehen

    Royalknight, ich denke kaum dass das etwas mit time_limit zu tun hat...

    @rasputin: Dein Ansatz hat was... Es ist jedoch so, dass ich bei der Weiterleitung immer eine Variable mitgebe, die sich verändert...

    PHP-Code:
    $start "http://".$host;
    if (
    file("SPIDER_interne.txt") != FALSE) {
        
    $arr file("SPIDER_interne.txt");
        
    $passed $passed+1;
        
    $start .= $arr[$passed];
        
    set_time_limit(60);
        echo 
    "<!-- ".$_SERVER['PHP_SELF']."?start=".$start."&first_passed=".$passed." -->";
        
    header("Location: ".$_SERVER['PHP_SELF']."?start=".$start."&first_passed=".$passed."");
    }
    else {
        
    header("Location: ".$_SERVER['PHP_SELF']."?start=STATUS");

    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  6. #6
    Avatar von rasputin
    rasputin ist offline Lounge-Member
    registriert
    31-10-2001
    Beiträge
    3.102

    AW: Umleitungslimit umgehen

    tja, in dem fall wird der querystring vom mozilla nicht beachtet, wenn er die redirects zählt...
    da bleibt nur noch ein meta-redirect.

  7. #7
    Avatar von RoyalKnight
    RoyalKnight ist offline Foren-Gott
    registriert
    14-02-2003
    Ort
    Austria
    Beiträge
    3.270

    AW: Umleitungslimit umgehen

    Zitat Zitat von jeko
    Royalknight, ich denke kaum dass das etwas mit time_limit zu tun hat...
    Ich hatte mir gedacht du hast ein Script laufen, welches Daten auswertet, dann hättest du meine Möglichkeiten gehabt, aber das scheint mir in diesem Fall nicht so zu sein, deshalb befolge rasputins Vorschlag...



    Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.

  8. #8
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    AW: Umleitungslimit umgehen

    Grml...Ich habs mal so probiert wie rasputin gesagt hat... hat nix gebracht... Dann hab ich mir folgendes überlegt:
    PHP-Code:
    # .htaccess-Datei

    # Fix gegen Umleitungslimit
    # Format vom Script: /SPIDER/4/2/http://dmoz.org/World/Deutsch/Blub/
    # 4 ist eine Zufallsgenerierte Zahl; Zwei ist first_passed; http://...Blub/ ist die nächste URL
    RewriteEngine on
    RewriteRule 
    ^SPIDER/.*/(.*)/(.*)$ /jswelt-spider.php?start=$2&first_passed=$
    und dann im Script
    PHP-Code:
    $start "http://".$host;
    if (
    file("SPIDER_interne.txt") != FALSE) {
        
    $arr file("SPIDER_interne.txt");
        
    $passed $passed+1;
        
    $start $start.$arr[$passed];
        echo 
    "<!-- header('Location: http://"  $_SERVER["SERVER_NAME"]."/SPIDER/".rand()."/".$passed."/".$start.") -->";
        
    header("Location: http://" $_SERVER["SERVER_NAME"]."/SPIDER/".rand()."/".$passed."/".$start."");

    Aber es gibt immer noch Umleitungslimit...Das Rewrite funzt, seh ich in den logs (mod_rewrite ist natürlich auch geladen).

    @ HarryHunt: http://forum.jswelt.de/showthread.php?t=26691 (Webkataloge nach links/domains durchsuchen)

    Das ganze Script sieht so aus: (wahrscheinlich ein wenig chaotisch da ich alles schon viele Möglichkeiten für die Lösung des Problems getestet habe)
    PHP-Code:
    <?php
    $EXEC_TIME 
    time();
    set_time_limit(60);

    /*
    Copyright by. dominique sandoz. jeko@gmx.ch. http://jeko.homelinux.com. 22:17. 01.10.2005.
    Für: capi. @forum.jswelt.de.
    */


    // Aufruf durch: http://jeko.cwsurf.de/spider.php?start=http://jeko.cwsurf.de/index.php

    /*
    Aufgabe:
     - Verfolge interne Links (JEDEN und in unendlich Dimensionen)
     - Speichern der HOSTS der EXTERNEN Links in eine MYSQL-DB

    *** Interne Links
    Kennzeichnung durch * /world/deutsch/ *
    OHNE http://dmoz.org/World/Armenian/

    *** Externe Links
    Kennzeichnug durch
        - DE-Domain (*.de)
        - Links, welche nur aus Hostnamen bestehen und nicht auf explizite Dateien oder Verzeichnisse verweisen


    Algorithmen:

    n. Durchlauf
    Startseite = n.ter Link aus Textdatei
    1    -> Quellcode holen
    2    -> Alles bis auf Links entfernen
    3    -> Interne Links und Externe Links in 2 separate Arrays speichern
    4    -> Externe in DB schreiben
    4.2        -> Überprüfen ob Link nicht schon drin
    5    -> Interne Links in Textdatei schreiben
    5.2        -> Textdatei schon vorhanden?
    5.3        -> Link schon drin?
    5.4            -> Alle internen Links auf Seite in Textdatei?
                JA
    5.5                -> Script abbrechen
                    -> Textdatei löschen
                    -> ENDE DES DURCHLAUFS, ENDE VON SCRIPT
                NEIN
    5.5                -> nächster Durchlauf durch aufrufen von spider.php mit start = n+1 . Link in Textdatei
                    -> ENDE DES DURCHLAUFS

    */

    //DB-Connect

    include("datas.php");
    $connection=mysql_connect($host,$user,$pw) or die("Verbindung konnte nicht hergestellt werden");
    $dbco=mysql_select_db($db$connection) or die("Datenbank konnte nicht ausgewählt werden");


    // zuweisen von wichtigen Variablen
    $start_site $_REQUEST['start'];


    if (
    $_GET['start'] != STATUS) { // wird die STATUSSeite angefragt?


    ob_start();

    // Host filtern

    $host str_replace("http://","",$start_site);
    $host_arr explode("/",$host);
    $host $host_arr[0];
    unset(
    $host_arr[0]);

    $host "dmoz.org";

    // Verzeichnis filtern
    $verz array_reverse($host_arr);
    unset(
    $host_arr[0]);
    $verz implode("/",$host_arr);
    $verz rawurldecode("/".$verz);

    echo 
    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head><title>SPIDER - '
    .$start_site.'-'.date("d.m.Y H:I:s").'</title>
    </head>
    <body style="background-color:#333; color:#fff;">'
    ;

    // Prüfen ob Textdatei existiert
    if (! isset($_GET['first_passed']) ) {
        if (! 
    file_exists("SPIDER_interne.txt")) {
            
    $datei fopen("SPIDER_interne.txt",a);
            if (! 
    $datei || ! fwrite($datei"Diese Zeile bitte nicht loeschen!\r\n")) {
                die (
    "<p style='color:#f00'>Konnte Textdatei SPIDER_interne.txt nicht erstellen.</p>");
            }
            else {
                print 
    "<p>Datei SPIDER_interne.txt erstellt.</p>";
            }
            
    fclose($datei);
        }
        
    $tabellen mysql_list_tables("$db");
        
    $tabellen_zahl mysql_num_rows($tabellen);
        
    $ergebnis 0;
        for (
    $t 0$t $tabellen_zahl$t++){
             if (
    mysql_tablename($tabellen$t) == "links"){
                
    $ergebnis 1;
             }
        }
        if (! 
    $ergebnis) {
            
    $erg mysql_query("CREATE TABLE `links` (`name` varchar(254) collate latin1_general_ci NOT NULL default '', PRIMARY KEY  (`name`),    FULLTEXT KEY `name` (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;");
            if (
    $erg) {
                print 
    "<p>Datenbank erstellt</p>";
            }
            else {
                die(
    "<p style='color:#f00;'>Datenbank konnte nicht erstellt werden!</p>");
            }
        }
        
    set_time_limit(60);
        
    $passed 0;
    }
    else {
        
    $passed $_GET['first_passed'];
    }
            

    echo 
    "<p>$verz</p>\n";
    echo 
    "<p>$host</p>\n";


    /** 1 Quellcode holen **/

    // File lesen und inhalt $content zuweisen
    $before ob_get_contents();
    ob_clean();
    readfile($start_site);
    $content ob_get_contents();
    ob_clean();

    // Ausgabe an Benutzer
    echo $before;
    echo 
    "<p>Location: $start_site <br /> Gelesen...</p><br />";


    /** 2 Links von QT trennen **/

    $suchstring '/<a .*href="(.*)".*>.*<\/a>/U';
    preg_match_all($suchstring,$content,$treffer);
    unset(
    $treffer[0]); // Gesamte Übereinstimmungen löschen, nur den gematchten Ausdruck behalten (Werte in den href-Attributen der Links)

    // Doppelte Einträge löschen
    $treffer[1] = array_unique($treffer[1]);


    /** 3 Externe und interne Links in zwei separate Arrays speichern **/

    $externe = array();
    $interne = array();

        
    set_time_limit(60);

    foreach (
    $treffer[1] as $value) {
        if (
    $value == "/World/Armenian/") {
            continue;
        }
        elseif (
    substr($value,0,strlen($verz)) == $verz && ! in_array($value."\r\n",file("SPIDER_interne.txt")) ) {
            if (
    is_writable("SPIDER_interne.txt")) {
                if (!
    $handle fopen("SPIDER_interne.txt""a")) {
                    die (
    "<p style='color:#f00;'>Kann die Datei nicht öffnen (Leserechte?)");
                }
                if (!
    fwrite($handle$value."\r\n")) {
                    die( 
    "<p style='color:#f00;'>Kann nicht in die Datei schreiben (Schreibrechte?)</p>");
                }
                print 
    "<p style='color:#0f0;'>Interner Link $value in SPIDER_interne.txt geschrieben.</p>\n";
                
    fclose($handle);
            } else {
                die(
    "<p style='color:#f00;'>Die Textdatei SPIDER_interne.txt ist nicht beschreibbar oder existiert nicht!</p>\n");
            }
            
    $interne[] = $value;
        }
        elseif (
    preg_match("/^http:\/\/(.*)\.de\//U",$value,$ext_treffer)) {
            
    $query mysql_query("REPLACE links SET name='$ext_treffer[1].de'");
            if (
    $query) {
                print 
    "<p style='color:#0f0;'>Externer Link $value in Datenbank geschrieben.</p>\n";
            }
            else {
                print 
    "<p style='color:#f00;'>Konnte $value nicht in Datenbank schreiben!</p>\n";
            }
            
    $externe[] = $value;
        }
    }
    echo 
    '<pre>';
    print_r($interne);
    print_r($externe);
    echo 
    '</pre>';

    echo 
    "<p>Refresh abgeschlossen</p>
    </body></html>"
    ;


    $host str_replace("http://","",$start_site);
    $host_arr explode("/",$host);
    $host $host_arr[0];

    $host "dmoz.org";

    $start "http://".$host;
    if (
    file("SPIDER_interne.txt") != FALSE) {
        
    $arr file("SPIDER_interne.txt");
        
    $passed $passed+1;
        
    $start $start.$arr[$passed];
        echo 
    "<!-- header('Location: http://"  $_SERVER["SERVER_NAME"]."/SPIDER/".rand()."/".$passed."/".$start.") -->";
        
    header("Location: http://" $_SERVER["SERVER_NAME"]."/SPIDER/".rand()."/".$passed."/".$start."");
    }
    else {
        
    header("Location: http://" $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]."?start=STATUS");
    }


    } else { 
    // STATUSSeite wird angefragt

        
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head><title>SPIDER - '
    .$start_site.'-'.date("d.m.Y H:I:s").'</title>
    </head><body>
    <h1>Spider-Status</h1>
    <p>Hier sind die Einträge der Textdatei mit den internen Links und der Datenbank mit den externen Links</p>
    <h2>Interne Links</h2>
    <p>Folgenden Links wurde gefolgt</p>'
    ;
    $files_array file ('SPIDER_interne.txt');
    unset(
    $files_array[0]); // blind- Zeile nicht anzeigen
    echo '<ul style="border:1px solid #aaa;">';
    foreach (
    $files_array as $content) {
       echo 
    "<li>".htmlspecialchars($content)."</li>";
    }
    echo 
    '</ul>
    <h2>Externe Links</h2>
    <p>Folgende Links wurden als externe Links erkannt und in die Datenbank geschrieben</p>
    <ul style="border:1px solid #aaa;">'
    ;
    $ergebnisse mysql_query("SELECT * FROM links");
    while (
    $row mysql_fetch_row($ergebnisse)) {
        echo 
    "<li>$row[0]</li>";
    }
    echo 
    '</ul>
    <p>Spider by Dominique Sandoz</p>
    <p><a href="http://validator.w3.org/uri=referer">XHTML valid</a></p>
    </body>
    </html>'
    ;

    }


    ?>
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  9. #9
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    AW: Umleitungslimit umgehen

    Is ok, habs gelöst!

    Herzlichen Dank an Royalknight @#jswelt
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

Ähnliche Themen

  1. Ist .htaccess zu umgehen?
    Von jonas_kl im Forum Script-Check
    Antworten: 5
    Letzter Beitrag: 25-06-2008, 18:58
  2. Frameschutz anderer Seiten umgehen?
    Von Bjoern im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 16-02-2003, 18:16
  3. .htaccess umgehen
    Von Iltis im Forum Serverseitige Programmierung
    Antworten: 12
    Letzter Beitrag: 02-07-2002, 22:13
  4. body onload.. umgehen
    Von Giecksemaus im Forum JavaScript
    Antworten: 14
    Letzter Beitrag: 18-04-2002, 14:25
  5. 500 internal error umgehen ?!
    Von Drakar im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 18-11-2001, 18:09

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •