如何避免重定向

时间:2017-09-03 15:53:36

标签: java http

我正在使用抓取工具,我尝试下载“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();

2 个答案:

答案 0 :(得分:0)

你不能。
如果网络服务器使用重定向进行响应,则提取Location标题并尝试运气。

Actualy没有通用的解决方案。

我为50个不同的网站编写了自己的抓取器/抓取器。而且几乎所有人都有独特的工作方式。

因此,当涉及到抓取时,它主要是尝试每个可能的操作的方法(如果您没有API访问权限)。

答案 1 :(得分:0)

您可能希望使用像Unirest这样的库,而不是编写自己的HTTP客户端。

使用库具有以下好处。

  • 您不需要编写HTTP客户端代码
  • 您可以轻松支持HTTPS
  • 自动处理重定向