Как сделать URLConnection Request, как это было в режиме инкогнито - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть следующий класс:

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 ]

4 голосов
/ 05 мая 2019

Без каких-либо дополнительных настроек ваш код не должен передавать куки.

Лучше всего это проверить с прокси HTTPS.Поэтому, если ваш код выглядит следующим образом:

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

, вы можете увидеть на всех трех вызовах, что файлы cookie не переданы.

no cookies without special setup

Добавление CookieHandler

Если вы добавляете обработчик файлов cookie следующим образом:

public static void main(String[] args) {

    CookieManager cookieManager = new CookieManager();
    CookieHandler.setDefault(cookieManager);

    GetHtml();
    GetHtml();
    GetHtml();
}

тогда ситуация иная.Только во время первого звонка cookie-файлы отсутствуют, после первого звонка файлы cookie переводятся в дальнейшем.

cookies with cookie handler

Рекомендация

Поэтому рекомендуется установить прокси, чтобы видеть, какие фактические данные передает ваша программа.

0 голосов
/ 11 мая 2019

Прежде всего важно понять, как работает Режим инкогнито в Chrome :

  • Chrome не сохранит ваши данные: историю посещенных страниц, файлы cookie и данные сайта или информацию, введенную в формах.
  • Загруженные вами файлы и созданные вами закладки будут сохранены.
  • Ваша деятельность * не скрывается * от посещаемых вами веб-сайтов, вашего работодателя или школы, или вашего интернет-провайдера.

A URLConnection, в общем случае, не:

  • Сохранить историю просмотров
  • Сохранение файлов cookie и данных сайта (файлы cookie можно сохранить с помощью CookieManager )
  • Сохранить информацию, введенную в формах

Он также не сохраняет и не загружает файлы по умолчанию. Здесь также не уместны закладки.

Кроме того, важно понимать, что режим инкогнито не похож на VPN - ваш провайдер, сайты, которые вы просматриваете и т. Д., Все могут видеть IP-адрес вашего компьютера, строку агента вашего браузера и т. Д.

Таким образом, «новизна» запросов с точки зрения сети больше похожа на иллюзию. Однако, когда в Incognito локально ничего не будет сохранено в ваших сеансах просмотра, поэтому, если вы войдете, скажем, в свой банковский счет на общедоступном компьютере (что вам никогда не следует делать IMHO), безопаснее будет использовать режим Incognito, потому что, как только Вы закрываете окно (окна) Incognito, все данные вашего сеанса очищаются, и другие пользователи этого общедоступного компьютера не могут получить к нему доступ.

Короче говоря, вам не нужно делать ничего особенного, чтобы находиться в режиме "инкогнито" при использовании URLConnection. На самом деле, все наоборот: вам нужно написать дополнительный код, чтобы программа Java запомнила ссылки, которые она посещала, или сохранить куки и т. Д.

0 голосов
/ 11 мая 2019

Единственная разница между режимом инкогнито Chrome и Chrome заключается в том, что он не использует файлы cookie и другие механизмы хранения.Chrome в режиме инкогнито также ничего не сохраняет, поэтому после закрытия Chrome все, что веб-сайт мог попытаться сохранить в вашем браузере, будет потеряно.

Другими словами, в момент создания нового подключенияи вы не отправляете никаких предыдущих файлов cookie, это похоже на режим инкогнито.Имейте в виду, что, пока вы сохраняете соединение, отправка файлов cookie - это нормально.

Я не уверен, каково ваше намерение, но учтите, что на веб-сайте могут быть дополнительные способы обнаружения дублированных соединений, таких как IP.версия агента пользователя, если предоставлена, ОС, если предоставлена, и т. д.

0 голосов
/ 09 мая 2019

Попробуйте установить кэш на false.

connection.setUseCaches(false);
...