我正在构建一个Java应用程序,它将从网站下载HTML页面并将文件保存在我的本地系统中。我可以通过浏览器手动访问网页的URL。但是当我尝试在我的Java程序中访问相同的URL时,服务器返回503错误。这是场景:
能够通过浏览器访问上述URL。但是下面的Java代码无法下载页面:
StringBuffer data = new StringBuffer();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(sourceUrl.openStream()));
String inputLine = "";
while ((inputLine = br.readLine()) != null) {
data.append(inputLine);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
br.close();
}
所以,我的问题是:
我在这里做错了吗?
服务器是否有办法阻止来自程序/漫游器的请求,只允许来自浏览器的请求?
答案 0 :(得分:3)
您可能需要尝试将User-Agent
和Referer
HTTP标头设置为普通网络浏览器发送的内容。
您可以从此列表中选择用户代理字符串:Seehowitruns: User-agent strings。
此外,如果您请求的页面是内部页面,则它可能还取决于在上一页中生成的cookie。