【问题标题】:Java how to check if website block from Network AdminstratorJava如何检查网站是否被网络管理员阻止
【发布时间】:2014-05-27 05:04:27
【问题描述】:

是否可以使用 Java 代码检查是否有任何 URL 或网站被网络管理员阻止? 假设我通过我的 Gmail 凭据登录到我的网站。现在,如果我在 Gmail 被阻止的网络中打开该网站,我将如何告诉用户该网站在您的网络中被阻止,因此您无法从 Gmail 登录。

【问题讨论】:

  • AFAIK 你能得到的最好的结果是“出了点问题,我无法连接到 gmail.com”。更具体地说,您可能会超时,但没有“被网络管理员阻止”错误。
  • 这不会发生,举个例子,在我的办公室里,gmail 被阻止了,但仍然可以选择使用 gmail 凭据登录的所有网站,我都能登录。目前我使用 gmail 凭据登录到 Stackflow。所以它是否被管理员阻止应该无关紧要。
  • @AnshuKunal 当它在你的办公室被阻止时,你怎么可能通过 Gmail 登录 Stackoverflow。甚至 Stackoverflow 转发你的 gmail 登录页面进行登录?如果 Gmail 阻止重定向将显示异常我刚刚尝试使用 Facebook 登录 Stacjoverflow 作为我办公室中的 Facebook 阻止我收到错误“Cananot 显示此页面”
  • @askkuber 对不起,我的意思是使用谷歌登录。

标签: java


【解决方案1】:

下面的代码会做你想做的,但它是最好的猜测

try {
    URL myURL = new URL("http://example.com/");
    URLConnection myURLConnection = myURL.openConnection();
    myURLConnection.connect();
} 
catch (MalformedURLException e) { 
    // new URL() failed
    // ...
} 
catch (IOException e) {   
    // openConnection() failed
    // ...
}

【讨论】:

  • 所以在调用 openid API 之前,如果没有错误,我必须调用这段代码,然后继续,否则显示一些消息?
  • 确切地说,将其包装在一个以 url 作为参数的方法中,同样这可能不起作用,因为在第二个答案中您可能会被转发到管理页面。然后,您需要阅读该页面并确定它是否被阻止。
【解决方案2】:

为了确定网站是否被您的网络管理员阻止,您需要检查收到的内容:

    URL url = new URL("http://www.gmail.com");
    URLConnection connection = url.openConnection();

    connection.connect();

    InputStream is = connection.getInputStream();

    byte[] b = new byte[1024];
    while(is.available()>0) {
        is.read(b);
        System.out.println(new String(b));
    }

您应该分析输入流中的内容,并据此做出决定。我试了一下,它给了我网络管理员设置的 HTML 页面。

如果您的公司使用任何代理,您还需要设置以下内容:

    System.setProperty("http.proxyHost", "<proxy address>");
    System.setProperty("http.proxyPort", "<proxy port>");

希望对你有帮助

【讨论】:

  • 谢谢,但分析 InputStream 可能非常困难,因为在不同的网络中,可能会有不同的策略来阻止网站有些显示一些消息有些没有显示任何内容
  • 是的,你是对的,要克服这个问题,你需要想出这些管理页面之间的共同模式。
猜你喜欢
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多