【问题标题】:Java - can I use browser cookies to directly access data on a website?Java - 我可以使用浏览器 cookie 直接访问网站上的数据吗?
【发布时间】:2018-02-10 04:51:02
【问题描述】:

使用 Firefox 浏览器,我可以访问网站。使用 cookie 我不必每次都登录。

当这不是一个聪明的问题时,请解释一下 - 所以我知道该怎么做:

问题:使用浏览器登录后,我可以启动 Java 应用程序并重新使用浏览器中的 cookie 直接访问网站上的数据吗?那么,像浏览器一样,跳过登录过程?

为什么 - 在我的情况下,使用浏览器登录很容易。从 Java 应用程序登录很困难。

我希望你能帮助或解释。

【问题讨论】:

    标签: java cookies apache-httpclient-4.x apache-commons-httpclient


    【解决方案1】:

    你可以在 firefox 上安装一个 firebug 插件,然后按 F12 运行它,转到网络选项卡,激活它,登录到你的页面,你会看到请求的样子。在简单的场景中,您需要的只是一个 cookie,服务器将对您进行身份验证。您很可能还需要设置 user.agent 属性(没有它,某些服务不允许访问),例如。

    java.net.URLConnection c = url.openConnection();
    c.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
    System.setProperty("http.agent", "");
    

    要确定确切的用户代理,请启动一个 http 服务器端口,从浏览器连接到它并打印传入的流。

    您还可以查看 cookie 的存储方式。 尝试在您的 java 代码中模仿浏览器的行为。

    有些网站使用其他身份验证机制,但比较少见。

    【讨论】:

    • 谢谢+1,会进一步调查。很有趣。
    【解决方案2】:

    是的,使用CookieManagerCookieStore。还要检查CookiePolicy

    CookieManager cookiemanager = new CookieManager();
    cookiemanager.setCookiepolicy(CookiePolicy.ACCEPT_ALL); 
    // maybe you need ACCEPT_ORIGINAL_SERVER 
    

    然后用CookieStore获取cookie

    CookieStore cookieStore = cookieManager.getCookieStore();
    List cookieList = cookieStore.getCookies();
    
    // here you have your cookies list
    for (HttpCookie cookie : cookieList) {
    }
    

    Find here an example

    【讨论】:

    • 谢谢+1,会进一步调查。很有趣。
    【解决方案3】:
    1. 我们知道cookie是由服务器生成然后发送给用户的。
    2. 如果客户端浏览器允许 cookie,cookie 将存储在客户端计算机上。
    3. 所以,当然你可以在cookie中存储一些登录信息,并在requset头中添加cookie,然后服务器获取cookie并知道你已经登录了。

    【讨论】:

      猜你喜欢
      • 2020-06-21
      • 1970-01-01
      • 2014-06-04
      • 2019-01-26
      • 2012-05-18
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      相关资源
      最近更新 更多