如何从网站正确获取Cookie?

时间:2019-09-12 17:08:34

标签: java parsing heroku cookies

当我从集成开发环境中运行Cookie时,我拥有正确地从网站接收cookie并将其保存在文件中的代码:

String url = "https://www.avito.ru";
Map<String, String> cookies = Jsoup.connect(url).execute().cookies();
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(cookies);
System.out.println("Get cookies from: " + url + " and write into: " + file.getName());
System.out.println(cookies);
out.close();

但是当我在Heroku服务器上上载并运行它时(但是此时我将cookie临时存储在处理程序对象中),日志中出现错误。 它发生在步骤.execute()。 Heroku代码:

try {
       Map <String, String> cookies = Jsoup.connect(url)
                                    .execute()
                                    .cookies();
       cookieHandler.setAvitoCookies(cookies);
       System.out.println("> AVITO COOKIE:" + cookies); 
    } catch (IOException e) {
        e.printStackTrace();
    }

Heroku错误日志:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=https://www.avito.ru

有什么解决办法可以正确获取cookie?

1 个答案:

答案 0 :(得分:0)

由于服务器返回了403状态代码,因此您得到了HttpStatusException。如果您想从错误响应(4xx-5xx状态码)中读取cookie,请添加ignoreHttpErrors(true)方法:

Map <String, String> cookies = Jsoup.connect(url)
                                    .ignoreHttpErrors(true)
                                    .execute()
                                    .cookies();