You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jsoup请求http://meteo.bg/en/报404错误,求助排查原因

问题分析与解决:Jsoup抓取meteo.bg/en/出现404异常

本地代码抓取http://meteo.bg/en/时抛出404,但Jsoup演示页能成功,核心原因是网站的反爬机制识别了你的请求特征,和演示页的请求存在差异。以下是具体排查和解决方法:

1. 更新请求头,模拟真实浏览器请求

你的代码仅设置了User-Agent和Referrer,但Jsoup演示页默认携带了更完整的请求头,网站可能通过这些字段判断请求合法性:

  • 替换为较新的浏览器User-Agent(旧版Firefox UA容易被标记为异常)
  • 补充Accept、Accept-Language等必要头信息

示例代码:

String url = "https://meteo.bg/en/"; // 优先尝试HTTPS协议
Document doc = null;
try {
    doc = Jsoup.connect(url)
            .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
            .referrer("https://www.google.com")
            .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
            .header("Accept-Language", "en-US,en;q=0.5")
            .header("Connection", "keep-alive")
            .header("Upgrade-Insecure-Requests", "1")
            .followRedirects(true) // 明确开启重定向跟随
            .timeout(5000)
            .get();
    // 处理数据逻辑
} catch (IOException e) {
    e.printStackTrace(); // 打印异常详情,不要直接返回null
    return null;
}

2. 切换到HTTPS协议

很多网站现在强制HTTPS访问,HTTP请求可能被重定向或直接返回404。将URL从http://改为https://再尝试。

3. 排查IP封禁问题

如果你的本地IP因频繁请求被网站封禁,会导致404。可以:

  • 切换网络环境(比如使用手机热点)
  • 添加请求间隔,避免短时间内重复请求

4. 复制演示页的请求特征

打开浏览器开发者工具,查看Jsoup演示页发送的完整请求头(包括Cookie、Host等),将这些字段完全复制到你的代码中,确保请求特征和演示页一致。

内容的提问来源于stack exchange,提问作者Vladimir Mihaylov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:05:18