2017-09-03 176 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

你不能。
如果Web服務器響應重定向,然後提取Location標題並嘗試在那裏運氣。

當前沒有通用的解決方案。

我爲50個不同的網站編寫了自己的抓取器/爬行器。幾乎所有人都有獨特的工作方式。

因此,當涉及到抓取時,它主要是嘗試每個可能的操作(如果您沒有API訪問權限)的方法。

0

您可能想要使用類似Unirest的庫,而不是編寫自己的HTTP客戶端。

使用庫有以下好處。

  • 你並不需要編寫HTTP客戶端代碼
  • 可以支持HTTPS容易
  • 重定向自動處理