4

ブラック ハット SEO の試みのように聞こえることは承知しており、この質問のソースはそれに近い何かを念頭に置いていたのかもしれませんが、私がこれを質問している理由は、この質問が本当に可能かどうか疑問に思ったからです。

もしそうなら、同じ量の新しいページを開くことなく、大量のユニークなリンクを開くことをどのように正確にシミュレートできますか?

タスクは次のとおりです。たとえば、5,000 個のリンクを含むデータベースがあり、ボタンをクリックすることで、各リンクを開くことをシミュレートしたいとします。そのため、サイトに Web カウンターがある場合はインクリメントされます (ページの開始が検出されます)。しかし同時に、ユーザーのページには何も表示されず、5,000 の新しいページを開いたり、同じページを何度も再読み込みしたりすることなく、そのままの状態が維持されます。

この質問がプログラマーの倫理外である場合は申し訳ありません。私は好奇心からそれを尋ねています.これが本当に可能かどうか、そしてどのように達成できるかについての意見を読んで喜んでいます.

ありがとう

レロン

4

2 に答える 2

2

これは、単純なJavaScriptで実行できます。

var myLinks = ['http://www.example.com', 'http://www.example.org'];

// run this in the on click handler of the <a> tag
var imgs = [];
for (var i = 0, link; link = myLinks[i]; ++i) {
    imgs[i] = new Image();
    imgs[i].onload = imgs[i].onerror = function() {
        // do stuff when loading is done
    }
    imgs[i] = link; // start loading
}

仕組み 画像の読み込みは他のHTTPリクエストと同じですが、ブラウザでの画像の読み込みが並列化されるため(ある程度まで)、より最適化されます。画像は提供されないため、すべての画像の読み込みに失敗しますが、気にしないので問題ありません。

警告

サーバーに送信されるHTTPヘッダーはAccept、画像を読み込むためのヘッダーを送信するため、ページの読み込みとはまったく異なります。ただし、ほとんどのサーバーはそれを気にしません。

ブラウザコンソールに、画像の読み込みに失敗したことを報告する多くのメッセージが表示される場合があります(HTMLは画像ではないためです)。

于 2012-06-02T14:01:25.517 に答える
1

ここで、PHP から URL を開くための優れたスクリプトを見つけました。fsockopen() を使用します。コードは次のとおりです。

  <?php   

  function fetch_page($url)   
  {   
      /* get hostname and path */   
      $host = parse_url($url, PHP_URL_HOST);   
      $path = parse_url($url, PHP_URL_PATH);   


      if (empty($path)) {   
          $path = "/";  
      }         

      /* Build HTTP 1.0 request header. Defined in RFC 1945 */  
      $headers = "GET $path HTTP/1.0\r\n"  
               . "User-Agent: myHttpTool/1.0\r\n\r\n";  


      /* open socket connection to remote host on port 80 */  
      $fp = fsockopen($host, 80, $errno, $errmsg, 30); 


      if (!$fp) {

          /* ...some error handling... */  
          return false;  
      }         

      /* send request headers */  
      fwrite($fp, $headers);         

      /* read response */  
      while(!feof($fp)) {  
          $resp .= fgets($fp, 4096);  
      }

      fclose($fp);


      /* separate header and body */  
      $neck = strpos($resp, "\r\n\r\n");  
      $head = substr($resp, 0, $neck);  
      $body = substr($resp, $neck+4);         

      /* omit parsing response headers */         

      /* return page contents */

      return($body);  
  }

  ?>

ループ内で fetch_page() を呼び出すだけで、5,000 ヒットをシミュレートできます。

于 2012-06-02T13:49:17.873 に答える