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

我有以下课程:


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 的隐身模式下一样


注意:该站点只是一个示例


噜噜哒
浏览 203回答 4
4回答

慕少森

如果没有任何特定的附加设置,您的代码不应传输 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。推荐因此建议设置一个代理来查看您的程序正在传输的实际数据。

慕森王

首先,重要的是要了解 Chrome 的隐身模式是如何 工作的:Chrome 不会保存您的:浏览历史记录、cookie 和网站数据,或在表单中输入的信息。您下载的文件和您创建的书签将被保留。您访问的网站、您的雇主或学校或您的互联网服务提供商*不会隐藏您的活动*。A URLConnection,一般来说,不会:保存浏览历史保存 cookie 和站点数据(您可以使用CookieManager保存 cookie )保存表格中输入的信息默认情况下,它也不保存或下载文件。书签在这里也不相关。此外,重要的是要了解隐身模式与 VPN 不同——您的 ISP、您浏览的站点等都可以看到您计算机的 IP 地址、浏览器的代理字符串等。所以从网络的角度来看,请求的“新鲜感”更像是一种幻觉。但是,在隐身模式下,本地不会保留有关您的浏览会话的任何内容,因此,如果您在公共机器上登录到您的银行帐户(恕我直言,您永远不应该这样做),使用隐身模式会更安全,因为只要您关闭隐身窗口,您的所有会话信息都将被清除,并且该公共机器的其他用户无法访问它。因此,简而言之,在使用URLConnection. 事实上,反之亦然:您需要编写额外的代码来让 Java 程序记住它迄今为止访问过的链接或保留 cookie 等。

慕虎7371278

Chrome 和 Chrome 隐身模式之间的唯一区别是它不共享 cookie 和其他存储机制。处于隐身模式的 Chrome 也不会保留任何内容,因此一旦 Chrome 关闭,该网站可能试图存储在您的浏览器中的任何内容都将丢失。换句话说,当您创建新连接并且不发送任何以前的 cookie 时,它类似于隐身模式。请注意,只要保持连接,就可以发送 cookie。我不确定您的意图是什么,但请注意,网站可以有其他方法来检测重复连接,例如 IP、用户代理版本(如果提供)、操作系统(如果提供)等。

幕布斯6054654

尝试将缓存设置为 false。connection.setUseCaches(false);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java