为了账号安全,请及时绑定邮箱和手机立即绑定

如何在隐身模式下执行 URLConnection 请求

如何在隐身模式下执行 URLConnection 请求

噜噜哒 2022-10-20 17:35:41
我有以下课程:public class GetHtmlContent {    public static String GetHtml(){        String content = null;        URLConnection connection = null;        try {            connection =  new URL("https://www.tomshardware.com/").openConnection();            Scanner scanner = new Scanner(connection.getInputStream());            scanner.useDelimiter("\\Z");            content = scanner.next();        }catch ( Exception ex ) {            ex.printStackTrace();        }        return content;    }}我该怎么做才能让每个请求都被视为NEW,就像我在 Chrome 的隐身模式下一样注意:该站点只是一个示例
查看完整描述

4 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

如果没有任何特定的附加设置,您的代码不应传输 cookie。

最好使用 HTTPS 代理进行测试。因此,如果您的代码如下所示:

public static void main(String[] args) {
    GetHtml();
    GetHtml();
    GetHtml();}

您可以在所有三个调用中看到没有传输 cookie。

//img1.sycdn.imooc.com//6351168b00019cb606520171.jpg

添加 CookieHandler


如果您要添加这样的 cookie 处理程序:


public static void main(String[] args) {


    CookieManager cookieManager = new CookieManager();

    CookieHandler.setDefault(cookieManager);


    GetHtml();

    GetHtml();

    GetHtml();

}

那么情况就不同了。只有在第一次调用中没有 cookie,在第一次调用之后,进一步的调用正在传输 cookie。

//img1.sycdn.imooc.com//6351169c0001954306450215.jpg

推荐

因此建议设置一个代理来查看您的程序正在传输的实际数据。


查看完整回答
反对 回复 2022-10-20
?
慕森王

TA贡献1777条经验 获得超3个赞

首先,重要的是要了解 Chrome 的隐身模式是如何 工作的:

  • Chrome 不会保存您的:浏览历史记录、cookie 和网站数据,或在表单中输入的信息。

  • 您下载的文件和您创建的书签将被保留。

  • 您访问的网站、您的雇主或学校或您的互联网服务提供商*不会隐藏您的活动*。

URLConnection,一般来说,不会:

  • 保存浏览历史

  • 保存 cookie 和站点数据(您可以使用CookieManager保存 cookie )

  • 保存表格中输入的信息

默认情况下,它也不保存或下载文件。书签在这里也不相关。

此外,重要的是要了解隐身模式与 VPN 不同——您的 ISP、您浏览的站点等都可以看到您计算机的 IP 地址、浏览器的代理字符串等。

所以从网络的角度来看,请求的“新鲜感”更像是一种幻觉。但是,在隐身模式下,本地不会保留有关您的浏览会话的任何内容,因此,如果您在公共机器上登录到您的银行帐户(恕我直言,您永远不应该这样做),使用隐身模式会更安全,因为只要您关闭隐身窗口,您的所有会话信息都将被清除,并且该公共机器的其他用户无法访问它。

因此,简而言之,在使用URLConnection. 事实上,反之亦然:您需要编写额外的代码来让 Java 程序记住它迄今为止访问过的链接或保留 cookie 等。


查看完整回答
反对 回复 2022-10-20
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

Chrome 和 Chrome 隐身模式之间的唯一区别是它不共享 cookie 和其他存储机制。处于隐身模式的 Chrome 也不会保留任何内容,因此一旦 Chrome 关闭,该网站可能试图存储在您的浏览器中的任何内容都将丢失。

换句话说,当您创建新连接并且不发送任何以前的 cookie 时,它类似于隐身模式。请注意,只要保持连接,就可以发送 cookie。

我不确定您的意图是什么,但请注意,网站可以有其他方法来检测重复连接,例如 IP、用户代理版本(如果提供)、操作系统(如果提供)等。


查看完整回答
反对 回复 2022-10-20
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

尝试将缓存设置为 false。

connection.setUseCaches(false);


查看完整回答
反对 回复 2022-10-20
  • 4 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信