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

使用Jsoup获取in.bookmyshow.com状态码时遇403 Forbidden异常求解决

解决Jsoup请求BookMyShow返回403 Forbidden的问题

BookMyShow的反爬机制会校验多个请求头字段,只添加User Agent不足以绕过拦截。以下是可行的解决方案:

1. 模拟完整浏览器请求头

除User Agent外,还需补充浏览器常用的请求头字段,让请求更贴近真实用户行为,比如Accept、Accept-Language、Accept-Encoding、Referer等。

2. 携带会话Cookie请求

部分网站会在首次请求时生成会话Cookie,后续请求必须携带该Cookie才能通过校验,可先发起一次请求获取Cookie,再用该Cookie发送目标请求。

3. 增加请求延迟

模拟人类访问的间隔,避免因请求频率过高被反爬机制识别。

修改后的完整代码

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;

public class BookMyShowStatusChecker {
    public static void main(String[] args) {
        String url = "https://in.bookmyshow.com/";
        
        try {
            // 第一步:获取初始会话Cookie
            Connection initialConn = 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")
                    .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("Accept-Encoding", "gzip, deflate, br")
                    .header("Referer", "https://www.google.com/")
                    .header("Connection", "keep-alive")
                    .header("Upgrade-Insecure-Requests", "1");
            
            Connection.Response initialResponse = initialConn.execute();
            // 获取会话Cookie
            String sessionCookie = initialResponse.cookie("BMS_SESSION");
            
            // 模拟人类访问延迟
            Thread.sleep(1000);
            
            // 第二步:携带Cookie发起目标请求
            Connection finalConn = 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")
                    .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("Accept-Encoding", "gzip, deflate, br")
                    .header("Referer", "https://in.bookmyshow.com/")
                    .header("Connection", "keep-alive")
                    .header("Upgrade-Insecure-Requests", "1")
                    .cookie("BMS_SESSION", sessionCookie);
            
            Connection.Response finalResponse = finalConn.execute();
            int statusCode = finalResponse.statusCode();
            System.out.println("HTTP Status Code: " + statusCode);
            
            // 如需解析HTML内容
            Document document = finalResponse.parse();
            // 后续解析逻辑...
            
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

补充说明

  • 建议定期更新User Agent为当前主流浏览器的版本,避免因UA过旧被拦截。
  • 如果仍出现403,可通过浏览器F12的Network面板查看真实请求的所有头信息,补充缺失的字段;或尝试更换代理IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:32:51