Java 当需要登录时,页面返回200而不是401
我的任务是检查一些URL是否正常工作,我使用Java发出HTTP get请求以获取响应代码 所以我做的就是这个Java 当需要登录时,页面返回200而不是401,java,http,Java,Http,我的任务是检查一些URL是否正常工作,我使用Java发出HTTP get请求以获取响应代码 所以我做的就是这个 URL u = new URL("some URL"); HttpURLConnection huc = (HttpURLConnection) u.openConnection(); huc.setRequestMethod("GET"); huc.connect(); int code = huc.getResponseCode(); System.out.println(code
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。请注意,在提供用户名和密码之前,网页不会显示。它在弹出窗口中请求身份验证
那么我如何捕捉这些链接呢
另外,我如何识别网页是否显示类似的登录页面?仅仅检查URL中的“登录”一词就足够了吗?没有通用的方法来处理这个问题。你必须知道你正在使用的网站如何进行身份验证-401?单独登录页面?多因素身份验证(即:使用RSA令牌)?在URL中检查子字符串“login”是处理某些问题的可能方法,但对于一般方法来说还不够 例如,401仅在使用(或尝试直接访问受保护的资源)时发生。还有很多其他的方法来做auth 他在评论中很好地总结了这个问题:
如果您必须处理滚动自己的自定义身份验证的页面,那么您可能必须编写自己的自定义代码来适应它们。根据相关站点的工作方式,您可以通过在请求中发送适当的cookie绕过身份验证,就像您已经通过身份验证一样,或者通过一些类似的方式
嗯,如果页面要求您登录,它仍然存在,不是吗?如果您必须处理滚动自己的自定义身份验证的页面,那么您可能必须编写自己的自定义代码来适应它们。根据相关站点的工作方式,您可以通过在请求中发送适当的cookie绕过身份验证,就像您已经通过身份验证一样,或者通过类似的方式。@5gon12eder是的,但我的主管要求知道哪些站点需要身份验证才能访问them@JohnBollinger我对网络编程知之甚少,所以我会尝试寻找更多关于你建议的信息。谢谢,我很困惑,“登录”页面应该返回200-您可以在不登录的情况下访问它。登录页面后面的内容应该返回401。我不认为这种方法会像你希望的那样有效。我想我现在对这个问题有了更好的理解。谢谢:)