代码之家  ›  专栏  ›  技术社区  ›  Daniel C. Sobral

如何在使用Java的网络库时伪造特定的浏览器客户端?

  •  2
  • Daniel C. Sobral  · 技术社区  · 15 年前

    我的一个小程序刚刚坏了,因为我现在正在编程浏览的站点假设Java请求来自手机,而我寻找的链接不在他们的移动页面上。

    所以我想伪造一个Internet Explorer访问。我如何使用java.net做到这一点?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Tom Hawtin - tackline    15 年前

    Irc,集合 "http.agent" 系统属性通过 System , -D 在命令行、JNLP文件或其他地方。

        2
  •  10
  •   skaffman    15 年前

    假设您使用的是java.net.urlconnection,那么调用setrequestproperty(string,string)将请求头设置为IE将使用的值。例如,要伪造IE6:

    URL url = new URL("http://google.com");
    URLConnection connection = url.openConnection();
    connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 1.2.30703)");
    

    然后像以前一样使用连接对象。

    但是java.net很可怕。使用ApacheCommons的httpclient,这样更好。

    更好的是,使用为网站导航而设计的框架,如HTMLUnit

        3
  •  2
  •   teabot    15 年前

    你需要设置 User-Agent HTTP请求中的头 value used by Internet Explorer .

    我建议使用 Jakarta HttpClient library 请求,因为它为 manipulating 请求。