2017-09-03 20 views
0

私はクローラで作業しており、リンク "http://devonline.com/"をダウンロードしようとしています。私は同じリンク上でリダイレクトとコード301を得るすべての時間。リダイレクトを回避する方法

このリダイレクトを回避してコンテンツを取得する方法を教えてください。あなたがすることはできません

String request 
     = "GET " + file 
     + (file.endsWith("robots.txt") ? " HTTP/1.0\r\n" : " HTTP/1.1\r\n") 
     //    " HTTP/1.1\r\n" 
     + "User-Agent: " + CrawlerConfig.USER_AGENT + "\r\n" 
     //    + ((!CrawlerConfig.SAVE_IMAGES) ? "Accept: text/html\r\n" : "") 
     //    + "Accept: text/*\r\n" 
     + (file.endsWith("robots.txt") ? "Connection: close\r\n" : "") 
     + "Host: " + host + "\r\n" + "\r\n"/* 
     * + body 
     */; 

outStream.write(request.getBytes("US-ASCII")); 
outStream.flush(); 
+0

を扱っていますか?それがリダイレクトの場合、有用な応答本文のコンテンツはありません。 –

+0

devonline.comは、本物のブラウザから来たように見えない要求に対する応答を拒否するために、サーバ設定でルールを取得する可能性が最も高いです。 –

+0

リダイレクトを "回避"しないでください。それに従います! – Chris

答えて

0

これは私が要求を(ファイルは、この場合には、 "/" と等しい)を作る方法です。
webserverがリダイレクトで応答する場合は、Locationヘッダーを抽出して、そこに運がよろしいです。

実際には普遍的な解決策はありません。

私は50-ishの異なるウェブサイトのための私自身のグラバー/クローラーを書きました。そして、ほとんどすべてがユニークな働き方をしています。

クロールする場合は、ほとんどの場合、可能なすべての操作を試す方法です(APIにアクセスできない場合)。

0

独自のHTTPクライアントを記述するのではなく、Unirestのようなライブラリを使用します。

ライブラリを使用すると、次の利点があります。

  • あなたは、あなたが簡単に
  • リダイレクトHTTPSをサポートすることができますHTTPクライアントコード
  • を記述する必要はありません自動的にどのようなコンテンツ
関連する問題