gpt4 book ai didi

java - 与 Firefox 和其他浏览器相比,Jsoup 获得不同的 html

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:20 25 4
gpt4 key购买 nike

我遇到了一些来自名为 Kabum 的网上商店的 url 的问题。

网址是http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:23:55:159

如果我在地址栏中输入网站或单击链接,我会得到一个包含该产品的页面,但如果我使用 Jsoup,我会得到一个仅对同一地址进行元刷新的页面。

尝试设置用户代理、引荐来源网址并点击元中的链接,但我得到了相同的页面。

我的代码在这里:

Document doc;
String url = "http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:23:55:159";
try {
String ua = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0";
String referrer = "http://www.google.com";
doc = Jsoup.connect(url).timeout(20000).userAgent(ua).referrer(referrer).get();
Elements meta = doc.select("html head meta");
for (Iterator<Element> it = meta.iterator(); it.hasNext();) {
Element element = it.next();
if (element.attr("http-equiv").matches("refresh")) {
String novaUrl = element.attr("content").replaceFirst("\\d?;url=", "");
System.out.printf("redirecting to %s%n", novaUrl);
doc = Jsoup.connect(novaUrl).userAgent(ua).referrer(referrer).get();
break;
}
}
} catch (IOException ex) {
Logger.getLogger(Teste1.class.getName()).log(Level.SEVERE, null, ex);
return;
}
System.out.println(doc);

最佳答案

您需要使用 cookie 重新发送请求。该站点正在返回一个 session cookie,它希望在下一个请求中看到该 cookie。

String url = "http://www.kabum.com.br/cgi-local/kabum3/produtos/descricao.cgi?id=01:02:23:55:159";
Map<String, String> cookies = Jsoup.connect(url).execute().cookies();
Document document = Jsoup.connect(url).cookies(cookies).get();
System.out.println(document.html());

请注意,对于您希望在同一 session 中触发的每个后续请求,您应该使用相同的 cookie。

关于java - 与 Firefox 和其他浏览器相比,Jsoup 获得不同的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com