java 的 HTTP 503 错误(不是由于服务器过载)
HTTP 503 error with java (not due to server overload)
我正在尝试使用 java 从使用 Cloudflare Enterprise Package 保护的站点抓取数据。我无法在 Web 上找到有关此 DDOS 保护系统的很多信息,但我认为这是正在发生的事情(通过检查 HTTP 响应和 java 脚本)
- 客户端向服务器发送 GET 请求。
- 服务器确定 GET 请求和 returns HTTP 503 响应以及一些 HTML.
中缺少特定的 cookie
- 客户端的浏览器自动对该响应运行 java 脚本,解决一个数学问题并发送一个新的 GET 请求,该请求的答案附加为查询字符串。
- 服务器以 HTTP 302 重定向响应和必要的 cookie 进行响应。
- 浏览器发送带有正确 cookie 的 GET 请求,服务器给出 HTTP 200 响应,一切正常。
我的问题与在 java 中获取初始响应流有关。我创建连接,添加用户代理,然后尝试打开流。正如预期的那样,我收到了 503 响应。但是,java 认为这是一个例外,不会让我访问我认为应该附加到此响应的 HTML。有谁知道如何获得 HTML?或者可能无法将 HTML 附加到 503 而我只是没有正确理解发生了什么?
谢谢!
如果您有除OK之外的其他响应,您需要使用.getErrorStream()读取响应
你可以这样做:
HttpURLConnection c = ....;
InputStream is;
if ((c.getResponseCode()/100)==2) {
is = c.getInputStream();
} else {
is = c.getErrorStream(); // instead of normal Input Stream
}
// read your HTML from is
我正在尝试使用 java 从使用 Cloudflare Enterprise Package 保护的站点抓取数据。我无法在 Web 上找到有关此 DDOS 保护系统的很多信息,但我认为这是正在发生的事情(通过检查 HTTP 响应和 java 脚本)
- 客户端向服务器发送 GET 请求。
- 服务器确定 GET 请求和 returns HTTP 503 响应以及一些 HTML. 中缺少特定的 cookie
- 客户端的浏览器自动对该响应运行 java 脚本,解决一个数学问题并发送一个新的 GET 请求,该请求的答案附加为查询字符串。
- 服务器以 HTTP 302 重定向响应和必要的 cookie 进行响应。
- 浏览器发送带有正确 cookie 的 GET 请求,服务器给出 HTTP 200 响应,一切正常。
我的问题与在 java 中获取初始响应流有关。我创建连接,添加用户代理,然后尝试打开流。正如预期的那样,我收到了 503 响应。但是,java 认为这是一个例外,不会让我访问我认为应该附加到此响应的 HTML。有谁知道如何获得 HTML?或者可能无法将 HTML 附加到 503 而我只是没有正确理解发生了什么?
谢谢!
如果您有除OK之外的其他响应,您需要使用.getErrorStream()读取响应
你可以这样做:
HttpURLConnection c = ....;
InputStream is;
if ((c.getResponseCode()/100)==2) {
is = c.getInputStream();
} else {
is = c.getErrorStream(); // instead of normal Input Stream
}
// read your HTML from is