Java - 我可以使用浏览器 cookie 直接访问网站上的数据吗?

Java - can I use browser cookies to directly access data on a website?

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

如果这不是一个聪明的问题,请解释 - 这样我就知道如何继续了:

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

为什么 - 就我而言,使用浏览器登录很容易。从 Java 应用程序登录很困难。

希望大家帮忙OR解释一下。

是,使用CookieManager and CookieStore. Also check 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

你可以在 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. 我们知道cookie是由服务器生成然后发送给用户的。
  2. 如果客户端浏览器允许 cookie,cookie 将存储在客户端计算机上。
  3. 所以,当然你可以在cookie中存储一些登录信息,并在requset header中添加cookie,然后服务器获取cookie并知道你已经登录了。