需要登录时,页面返回200而不是401

时间:2016-02-16 20:06:17

标签: java http

我的任务是检查某些网址是否正常工作,我使用Java来获取请求以获取响应代码。

所以我做的就是这个。

URL u = new URL("some URL");
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setRequestMethod("GET");
huc.connect();
int code = huc.getResponseCode();
System.out.println(code + " " + huc.getURL());

问题:某些网站要求您登录才能访问该网页,但该网页不会返回401代码,而是200.请注意,该网页并不是显示,直到提供用户名和密码。它要求在弹出窗口中进行身份验证。

那我怎么抓住这些链接?

另外,如何识别网页是否显示http://www.example.com/login/等登录页面?仅检查“登录”一词的URL就足够了吗?

1 个答案:

答案 0 :(得分:0)

没有通用的方法可以解决这个问题。您必须知道您使用的网站如何进行身份验证 - 401?单独登录页面?多因素身份验证(即:使用RSA令牌)?检查URL中的子字符串“login”是一种处理某些内容的可能方式,但对于一般方法来说还不够。

例如,只有在使用basic authentication时(或尝试直接访问受保护资源时)才会发生401。还有很多其他方法可以进行身份​​验证

John在他的评论中很好地总结了这个问题:

  

如果您必须处理推送自己的自定义身份验证的网页,那么您可能需要编写自己的自定义代码来容纳它们。根据相关网站的工作方式,您可以通过在请求中发送适当的Cookie来绕过身份验证,就像您已经过身份验证一样,或者通过类似方式