0

私は cURL リクエストを実行していますが、ほとんどの場合は機能しますが、一部のサイトでは何も返されず、cURL エラーも発生しません。誰か助けてくれませんか?

ここに私の小さなアプリがあります: http://www.convurgency.com/tools/googlebot.php

そこに行き、このサイトに入ります: http://www.beemak.com

ご覧のとおり、多くのサイトが機能していますが、一部のサイトは機能していません... 何かアイデアはありますか?

これが私のコードです:

<?php
//Bot Curl Request  


$handle = curl_init();

curl_setopt_array($handle,array(
         CURLOPT_URL => $_GET['site'],
         CURLOPT_USERAGENT => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
         CURLOPT_RETURNTRANSFER => true,
         CURLOPT_FOLLOWLOCATION => true
      ));

    $output = curl_exec($handle);

    $httpcode = curl_getinfo($handle, CURLINFO_TOTAL_TIME);
    $connecttime = curl_getinfo($handle, CURLINFO_CONNECT_TIME);
    $downloadtime = curl_getinfo($handle, CURLINFO_SPEED_DOWNLOAD);
    $downloadsize = curl_getinfo($handle, CURLINFO_SIZE_DOWNLOAD);

    if(curl_errno($handle)){
        echo '<img class="errorlogo" src="http://www.convurgency.com/images/logo103.png" />';
        echo '<p style="text-align:center;">There was an error finding your site, are you sure it exists?</p>';
        echo '<p style="text-align:center;"><a href="http://www.convurgency.com/tools/googlebot.php">Back to GoogleBot View</a></p>';
        echo 'Curl error: ' . curl_error($handle);

    } else {

        echo 'No Errors';

    };

    if (curl_error($handle)) {
     print "ERROR ". curl_error($handle) ."\n<br/>";
    }


     curl_close($handle);


     $output2 = preg_replace(
        array(
         // Remove invisible content
        '@<head[^>]*?>.*?</head>@siu',
        '@<style[^>]*?>.*?</style>@siu',
        '@<script[^>]*?.*?</script>@siu',
        '@<object[^>]*?.*?</object>@siu',
        '@<embed[^>]*?.*?</embed>@siu',
        '@<applet[^>]*?.*?</applet>@siu',
        '@<noframes[^>]*?.*?</noframes>@siu',
        '@<noscript[^>]*?.*?</noscript>@siu',
        '@<noembed[^>]*?.*?</noembed>@siu',
        // Add line breaks before and after blocks
        '@</?((address)|(blockquote)|(center)|(del))@iu',
        '@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
        '@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
        '@</?((table)|(th)|(td)|(caption))@iu',
        '@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
        '@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
        '@</?((frameset)|(frame)|(iframe))@iu',
        ),
                    array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", ), $output );

 echo preg_replace('/<(\w+) [^>]+>/', '<$1>', $output2);

 ?>
4

2 に答える 2

0

$connecttimeと$downloadtimeを見て、リクエストがタイムアウトしていないかどうかを確認します。コマンドラインcurlまたはwgetを使用して、スクリプトを実行しているサーバーからWebサイトにアクセスできるかどうかを確認します。

于 2012-09-14T18:02:38.280 に答える