2017-09-03 135 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容易
  • 重定向自动处理