Проверяване на линкове по целият форум ?

  • Автор Автор Marik
  • Начална дата Начална дата

Marik

Registered
Искам да попитам имали някакъв начин или мод по който да може да се проверяват всички линкове по целият форум за да се види кой работи и кой не , нещо като бот който да проверява през мойто акаунт да речем през админ панела , защото имам раздели които са с регистрация .

Благодаря :wink:
 
Marik каза:
Искам да попитам имали някакъв начин или мод по който да може да се проверяват всички линкове по целият форум за да се види кой работи и кой не , нещо като бот който да проверява през мойто акаунт да речем през админ панела , защото имам раздели които са с регистрация .

Благодаря :wink:

Много трудна работа.
Защо ти е това?
 
Ами защото доста от линковете ми се скапват :? и искам да се подържат по един начин а нз дали тоя начин който описах въобще е възможен .... :roll: смисъл искам поне да ги отваря там да си проверява ... линковете във всички постове във всички раздели.
 
Скоро в една книга видях такова нещо, наричат го паяк който проверява линкове и страници.Трябва да имаш PEAR библиотека за да работи...Не знам дали ще ти свърши работа

Код:
<?php
require_once 'HTTP/Client.php';
require_once 'HTTP/Llistener.php';
$baseurl ="......index.html";
$pages = array();

add_urls( $baseurl );
while( ( $page = next_page() )!=null)
{
add_urls( $page);
}
function next_page()
{
	global $pages;
	foreach(array_keys( $pages) as $page)
		{
			if ($pages[ $page ] == null )
				return $page;
		}
		return null;
}
function add_urls( $page )
{
	global $pages;
	$start = microtime();
	$urls = get_urls( $page );
	$resptime = microtime() - $start;
	print "page...\n";
	$pages[ $page ] = array( 'resptime' => floor ($resptime * 1000), 'url' => $page );

	foreach ($urls as $url)
	{
		if (!array_key_exists($url,$pages))
			$pages[ $url] = null;
	}
}
function get_urls( $page)
{
	$base = preg_replace("/\/([^\/]*?)$/", "/", $page);
	
	$client = new HTTP_Client();
	$client->get( $page );
	$resp = $client->currentResponse ();
	$body - $resp['body'];
	$out = array();
	preg_match_all("/(|<a.*?\/is", $body, $matches );
	foreach($matches[0] as $match)
	{
		preg_match("/href=(.*?)[]\s|\>]/i", $match, $href);
		if ($href !=null)
		{
			$href = $href[1];
			$href = preg_replace("/^\"/", "", $href);
			$href = preg_replace("/\"$/", "", $href);
			if (preg_match("/^mailto:/", $href))
			{
			}
			elseif (preg_match( "/^http:\/\//", $href))
			{
				if (preg_match( '/^$base/', $href))
					$out [ ] = $href;
			}
			else
			{
			$out [] = $base.$href;
			}
		}
	}
	return $out;
}

ob_start();
?>

<html>
<head>
<title>Spider report</title>
</head>
<body>
<table width="600">
<tr>
<th>URL</th>
<th>Response Time (ms)</th>
</tr>
<?php foreach (array_values ($pages) as $page) { ?>
<tr>
<td><?php echo ($page['url']); ?></td>
<td><?php echo ($page['resptime']); ?></td>
</tr>
<?php } ?>
</table>
</body>
</html>
<?php
$html = ob_get_clean();
$fh = fopen("report.html", "w");
fwrite ( $fh, $html);
fclose($fh);
?>
 
Breaker каза:
Marik каза:
А поне можеш ли да ми кажеш с кой браузер мога да отварям много URL -та едно времено и какви са начините да стане номера :lol:


примерно искам да отворя едновремено

http://dada.com
http://dada1.com
http://dada2.com
Аз използвам IE 7 :wink:


е ок и аз си инсталирах IE 7 и как отваряш многото линкове имаш ли нещо като MULTI Open Links или кво е там , че аз нещо не виждам няква разлика :roll:
 
Marik каза:
Breaker каза:
Marik каза:
А поне можеш ли да ми кажеш с кой браузер мога да отварям много URL -та едно времено и какви са начините да стане номера :lol:


примерно искам да отворя едновремено

http://dada.com
http://dada1.com
http://dada2.com
Аз използвам IE 7 :wink:


е ок и аз си инсталирах IE 7 и как отваряш многото линкове имаш ли нещо като MULTI Open Links или кво е там , че аз нещо не виждам няква разлика :roll:
Ами като отвориш някоя страница и след това ти излиза прозорче със сайта в който си влязъл.След прозорчето има едно друго малко квадратче.Натискаш го веднъж и ти се отваря друга преградка.И от там можеш да отваряш. :?:
 
е аз имах предвид примерно виждаш в един форум 100 линка и да речеме ги маркираш по някъв начин и да се отворят и 100-те в такива пгредки и това да е :shock: доса такова нещо не видях в смисъл все трябва да ги натискам 1 по 1 за да се отварят
 
Няма ли начин да си създам някъв бот който да ползва примерно моя браузер с мойте настройки и глупости и аз само да му въведа примерно 30 линка и той да ги отваря там за известно време един след друг и така .
:roll:
 
ето ти един линк чекер.

Код:
<?php 
//error_reporting(E_ALL); 
set_time_limit(300); // ако не е свършил след колко секънди да прекъсне
// Gets urls 
function GetUrls( $html,  $url ) { 
  // Gets url ready to use 
  $info  = @parse_url( $url ); 

  // Splits the headers from the html 
  $pieces = explode( "\r\n\r\n",  $html, 2 ); 
  $html   =  $pieces[1]; 
  unset( $pieces ); 

  // Finds any links in the HTML 
  $matches = array(); 
  preg_match_all("|href\=\"?'?`?([[:alnum:]:?=&@/;._-]+)\"?'?`?|i",  $html,  & $matches); 
  $links = array(); 
  $ret = $matches[1]; 
  for($i=0;isset($ret[$i]);$i++) { 
     if(preg_match("|^http://(.*)|i", $ret[ $i])) { 
         $links[] = $ret[$i]; 
     } elseif(preg_match("|^/(.*)|i", $ret[$i])) { 
         $links[] = "http://".$info["host"]."". $ret[$i]; 
     } 
  } 
  return $links; 
} 

// Gets Unique Urls 
function GetUniqueUrls( $html,  $url ) { 

  if ( !$html ){ 
    return false; 
  } 

  // Gets the list of urls 
  $urls = GetUrls ( $html,  $url ); 
  $uurls = array(); 
  for( $i=0;isset($urls[$i]);$i++ ) { 

    // Checks if the url is in the array 
    if(!in_array($urls[$i],  $uurls )) { 

      // If it's not it adds it 
      $uurls[] = $urls[$i]; 
    } 
  } 
  return $uurls; 
} 

// Gets everything headers and HTML 
function geteverything($url) { 
  // Gets url ready to use 
  $info  = @parse_url( $url ); 

  // Opens socket 
  $fp    = @fsockopen( $info["host"],  80,  $errno,  $errstr,  10 ); 

  // Makes sure the socket is open or returns false 
  if ( !$fp ) { 
     return false ; 
  } else { 

     // Checks the path is not empty 
     if( empty( $info["path"] ) ) { 

        // If it is empty it fills it 
        $info["path"] = "/"; 
     } 
     $query = ""; 

     // Checks if there is a query string in the url 
     if( isset( $info["query"] ) ) { 

          // If there is a query string it adds a ? to the front of it 
          $query = "?".$info["query"].""; 
     } 

     // Sets the headers to send 
     $out  = "GET ".$info["path"]."".$query." HTTP/1.0\r\n"; 
     $out .= "Host: ".$info["host"]."\r\n"; 
     $out .= "Connection: close \r\n"; 
      $out .= "User-Agent: link_checker/1.0\r\n\r\n"; 

     // writes the headers out 
     fwrite( $fp,  $out ); 
     $html = ''; 

     // Reads what gets sent back 
     while ( !feof( $fp ) ) { 
          $html .= fread( $fp,  8192 ); 
     } 

     // Closes socket 
     fclose( $fp ); 
  } 
  return $html; 
} 

// Gets everything headers 
function gethead($url) { 
  // Gets url ready to use 
   $info  = @parse_url( $url ); 

  // Opens socket 
  $fp    = @fsockopen( $info["host"],  80,  $errno,  $errstr,  10 ); 

  // Makes sure the socket is open or returns false 
  if ( !$fp ) { 
     return false; 
  } else { 

     // Checks the path is not empty 
     if( empty( $info["path"] ) ) { 

        // If it is empty it fills it 
        $info["path"] = "/"; 
     } 
     $query = "";  

     // Checks if there is a query string in the url 
     if( isset( $info["query"] ) ) { 

          // If there is a query string it adds a ? to the front of it 
          $query = "?".$info["query"].""; 
     } 

     // Sets the headers to send 
      $out  = "HEAD ".$info["path"]."".$query." HTTP/1.0\r\n"; 
     $out .= "Host: ".$info["host"]."\r\n"; 
     $out .= "Connection: close \r\n" ; 
     $out .= "User-Agent: link_checker/1.0\r\n\r\n"; 

     // writes the headers out 
     fwrite( $fp,  $out ); 
     $html = ''; 

     // Reads what gets sent back 
     while ( !feof( $fp ) ) { 
          $html .= fread( $fp,  8192 ); 
     } 

     // Closes socket 
     fclose( $fp ); 
  } 
  return $html; 
} 

// Gets status code 
function getstatuscode( $header ) { 

  // Splits the headers into an array 
  $headers = explode( "\r\n",  $header ); 
  unset( $header ); 
  for( $i=0;isset( $headers[$i] );$i++ ) { 

    // Checks if the header is the status header 
    if( preg_match( "/HTTP\/[0-9A-Za-z +]/i" , $headers[$i] ) ) { 

      // If it is save the status 
      $status = preg_replace( "/http\/[0-9]\.[0-9]/i", "", $headers[$i] ); 
    } 
  } 
  return $status; 
} 

if(isset($_GET['url'])) { 

   // Print the url were checking 
   print "Checking link: <a href=\"".$_GET['url']."\">".$_GET['url']."</a> ...<br />\n"; 
   ob_flush(); 
   flush(); 

   // Check it 
   $html = geteverything ( $_GET['url'] ); 
   if(!$html) { 
     print "Sorry that link appears not to exist.<br /><br />\n"; 
   } else { 

      // Get status code 
      $done = getstatuscode( $html ); 

      // Print results 
      print "". $done."<br /><br />\n"; 

      // Get urls from main page 
      $urls = GetUniqueUrls( $html,  $_GET['url'] ); 
      for($i=0;isset($urls[$i]);$i++) { 

          // Print the link were checking 
         print "Checking link: <a href=\"".$urls[$i]."\">".$urls[$i]."</a> ...<br />\n"; 
         ob_flush(); 
         flush(); 

         // Get everything 
          $html = gethead($urls[$i]); 

         // Check it 
         if(!$html) { 
            $done = "Sorry that link appears not to exist.<br /><br />\n"; 
         } else { 
            // Get status code 
             $done = getstatuscode( $html ); 
         } 
         // Show the results 
         print "".$done."<br /><br />\n"; 

         ob_flush(); 
         flush(); 

         // Sleep so we don't send requests to the same server to fast 
         sleep(3); 
      } 
   } 

} else { 

    print "PHP link checker to help get rid of any dead links on your web pages.<br />\n"; 
    print "To use this free online like checker,  Just type in the box below the page\n"; 
    print "uri you want to check then click the \"Check links\" button. Then the link\n"; 
    print "checker will crawl your web page and get the links out of it and check them.\n"; 
    print "It will return a list of links it has checked and tell you the status i.e.\n"; 
    print "404 NOT FOUND,  200 OK,  ect.</p>\n"; 
    print "<form action=\"linkchecker.php\" method=\"get\">\n"; 
    print "<p><input type=\"text\" name=\"url\" value=\"http://\" size=\"40\" />\n"; 
    print "<input type=\"submit\" value=\"Check links\" />\n"; 
    print "</p></form><p>\n"; 
    print "<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />\n"; 
    print "<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />\n"; 

} 
?>
 

Back
Горе