2016-02-16 82 views
-1

我负责检查某些URL是否正常工作,我正在使用Java使HTTP获取请求获取响应代码。当需要登录时,页面返回200而不是401

所以我做了这个。

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是否足够?

+0

那么跳过认证,如果页面要求您登录它仍然存在,不是吗? – 5gon12eder

+1

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

+0

@ 5gon12eder耶,但我的主管问,要知道哪些网站需要身份验证访问他们 – Sara

回答

0

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

例如,401只会在使用basic authentication(或试图直接访问受保护的资源时)时发生。有很多其他的方式在他的评论做AUTH

John总结了这个问题非常好:

如果你要处理的是推出自己的定制认证页面,那么它遵循你可能必须编写自己的自定义代码来适应它们。根据相关的网站是如何工作的,你也许可以在您的请求发送相应的cookie,因为如果你已经验证,或者通过某种类似的方式

+0

我想我现在对这个问题有了更好的理解。谢谢 :) – Sara

相关问题