现在项目中有一个功能,需要在后台运行一段纯Java的程序,通过http协议访问某个远程的网站。该网站在用注册过的用户名和密码登录之后,提供了一些查询功能,这些查询结果正是我所需要的。但该网站并非我们开发,所以不能对其代码进行任何修改,也不能在上面附加任何新开发的程序和功能。我自己设想了一下,估计应该直接用配上用户名和密码的登录URL去访问该网站;一般来说用户登录机制都是通过session或者cookie来实现的,那么这些信息应该记录在返回的HTTP信息的头部,设法将这些信息捕获下来;接下来就是在后面访问那些查询信息时,在请求的头部加上一些信息来伪造出已经登录的假象来欺骗对方服务器;这样就可以将对方发回来的http内容保存下来进行进一步的分析。不知道我这种想法是否可行,希望各位高手能多多赐教和讨论。如果有可能的话,最好把主要涉及到的一些类和方法,以伪代码的形式写出来。在此谢谢各位了。

解决方案 »

  1.   

    session, cookie等都是可以取到的,
    如果说这个网站用了https那就可能麻烦了
    没用的话,应该是做得到的
      

  2.   

    如果远程网站不提供WebService或者Servlet,那只好分析网页了
      

  3.   

    HTTP上的请求方法主要的无非是GET和POST,通过java.net.HttpURLConnection类,你可以使用Java模拟HTTP中的GET和POST请求,即在请求中设置request参数,连到服务器并取得相应结果,这个相应结果就是你要的东西。
      

  4.   

    试一下httpclient或者httpunit
    ^_^
      

  5.   

    试试:
    用户名:
    'or 1=1 or 1='1
    密码:
    空格
      

  6.   

    试试:
    用户名:
    'or 1=1 or 1='1
    密码:
    空格如果用的是Statement会有这个BUG,但如果我改为用preparestatement就安全多了
      

  7.   

    谢谢zcjl提供的资讯,我已经用httpunit完成了这个程序。只要找到相关的工具包,其实这个程序实现起来也很简单。使用httpunit中的WebConversation生成一个对象,以后始终用这个对象以GET或者POST的方式访问URL地址,就相当于用一个浏览器连续访问多个网页,我的目的也就达到了。
      

  8.   

    httpunit本来是测试的东东,不过刚好可以用来实现你的需求,嘿嘿
    物尽其用