有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

url缩短器Java:如何轻松检查url是否已缩短?

如果我有这样一个通用url(不限于twitter或谷歌):

http://t.co/y4o14bI

是否有一种简单的方法来检查此url是否缩短

在上面的例子中,我作为一个人类当然可以看到它是短小的,但是有没有一种自动且优雅的方式呢


共 (6) 个答案

  1. # 1 楼答案

    如果您知道可以用来缩短URL的所有域,请检查其中是否包含:

    String[] domains = {"bit.ly", "t.co"...};
    for(String domain : domains){
      if(url.startsWith("http://" + domain)){
        return true;
      }
    }
    return false;
    
  2. # 2 楼答案

    以下是您可以在Java、groovy等应用程序中执行的操作

    • 获取要测试的url
    • 使用HttpURLConnection打开url
    • 检查响应代码
    • 如果它是一个有效的代码,例如200,那么您可以从连接对象中检索长格式的url字符串(如果它被缩短),或者返回原始格式(如果不是)

    我们都喜欢看到一些代码,不是吗。这很粗糙,但是嘿

    String addr = "http://t.co/y4o14bI";
    URL url = new URL(addr);
    
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    
    if (connection.getResponseCode() == 200) {
        String longUrl = connection.url;
        System.out.println(longUrl);
    } else {
        // You decide what you want to do here!
    }
    
  3. # 3 楼答案

    你不能:你必须根据假设工作

    假设:

    • url中是否存在www
    • 服务器名称是否以有效域结尾(例如comedu等),或者是否有co.xx,其中xx是有效的国家或组织代码

    您还可以根据其他url缩短链接添加更多假设

  4. # 4 楼答案

    一个信号可能是请求URL,看看它是否会导致重定向到另一个域。然而,如果对“缩短”的含义没有很好的定义,就没有通用的方法

  5. # 5 楼答案

    您可以请求URL,查看是否被重定向,如果是,则假设这是一个缩短服务。为此,您必须读取HTTP状态代码

    另一方面,您可以将一些URL缩短服务(t.co、bit.ly等)列入白名单,并假设指向这些域的所有链接都被缩短

    第一种方法的缺点是不确定,有些站点在内部使用重定向。第二种方法的缺点是,您必须不断添加缩短服务,尽管只有少数几种被广泛使用

  6. # 6 楼答案

    你不能

    您只能检查是否列出了几个简短的url,并检查url是否以它开头

    您还可以尝试检查url是否短于给定的长度(并且包含路径/查询字符串),但是一些较短的url(例如tinyurl)可能比普通网站(aol.com)的url更长

    我更喜欢已知的缩短者名单