4 回答
TA贡献2019条经验 获得超9个赞
如果没有任何特定的附加设置,您的代码不应传输 cookie。
最好使用 HTTPS 代理进行测试。因此,如果您的代码如下所示:
public static void main(String[] args) { GetHtml(); GetHtml(); GetHtml();}
您可以在所有三个调用中看到没有传输 cookie。
添加 CookieHandler
如果您要添加这样的 cookie 处理程序:
public static void main(String[] args) {
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
GetHtml();
GetHtml();
GetHtml();
}
那么情况就不同了。只有在第一次调用中没有 cookie,在第一次调用之后,进一步的调用正在传输 cookie。
推荐
因此建议设置一个代理来查看您的程序正在传输的实际数据。
TA贡献1777条经验 获得超3个赞
首先,重要的是要了解 Chrome 的隐身模式是如何 工作的:
Chrome 不会保存您的:浏览历史记录、cookie 和网站数据,或在表单中输入的信息。
您下载的文件和您创建的书签将被保留。
您访问的网站、您的雇主或学校或您的互联网服务提供商*不会隐藏您的活动*。
A URLConnection
,一般来说,不会:
保存浏览历史
保存 cookie 和站点数据(您可以使用CookieManager保存 cookie )
保存表格中输入的信息
默认情况下,它也不保存或下载文件。书签在这里也不相关。
此外,重要的是要了解隐身模式与 VPN 不同——您的 ISP、您浏览的站点等都可以看到您计算机的 IP 地址、浏览器的代理字符串等。
所以从网络的角度来看,请求的“新鲜感”更像是一种幻觉。但是,在隐身模式下,本地不会保留有关您的浏览会话的任何内容,因此,如果您在公共机器上登录到您的银行帐户(恕我直言,您永远不应该这样做),使用隐身模式会更安全,因为只要您关闭隐身窗口,您的所有会话信息都将被清除,并且该公共机器的其他用户无法访问它。
因此,简而言之,在使用URLConnection
. 事实上,反之亦然:您需要编写额外的代码来让 Java 程序记住它迄今为止访问过的链接或保留 cookie 等。
TA贡献1802条经验 获得超4个赞
Chrome 和 Chrome 隐身模式之间的唯一区别是它不共享 cookie 和其他存储机制。处于隐身模式的 Chrome 也不会保留任何内容,因此一旦 Chrome 关闭,该网站可能试图存储在您的浏览器中的任何内容都将丢失。
换句话说,当您创建新连接并且不发送任何以前的 cookie 时,它类似于隐身模式。请注意,只要保持连接,就可以发送 cookie。
我不确定您的意图是什么,但请注意,网站可以有其他方法来检测重复连接,例如 IP、用户代理版本(如果提供)、操作系统(如果提供)等。
添加回答
举报