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

Java请求Biletix Solr接口报“No javascript support found”错误求助

解决Java请求返回"No javascript support found"的问题

看起来这个网站的Solr接口做了请求验证,它会检查请求是否来自真实的浏览器环境——而Java默认的HTTP请求头里没有模拟浏览器的标识,所以被拦截了,返回的"No javascript support found"其实大概率是个幌子,核心是你的请求没有通过它的浏览器检测。

下面是具体的解决办法:

1. 模拟浏览器的请求头

最关键的是设置User-Agent请求头,让服务器认为你的请求来自浏览器。另外,补充其他常见的浏览器请求头(比如Accept、Accept-Language)也能提升请求的真实性。

修改后的Java代码示例(使用HttpURLConnection)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class SolrRequestExample {
    public static void main(String[] args) throws IOException {
        String urlStr = "http://www.biletix.com/solr/en/select/?start=0&rows=300&q=*:*&fq=start%3A%5B2018-04-01T00%3A00%3A00Z%20TO%202020-04-01T00%3A00%3A00Z%2B1DAY%5D&sort=score%20desc,start%20asc&&wt=json&indent=true&facet=...";
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        // 模拟Chrome浏览器的请求头
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
        conn.setRequestProperty("Accept", "application/json, text/javascript, */*; q=0.01");
        conn.setRequestProperty("Accept-Language", "en-US,en;q=0.9");
        conn.setRequestProperty("Connection", "keep-alive");

        conn.setRequestMethod("GET");
        conn.setDoInput(true);

        // 读取响应
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        // 打印结果
        System.out.println(response.toString());
        conn.disconnect();
    }
}

2. 可能的其他情况

如果设置请求头后还是不行,那可能网站真的需要JavaScript渲染(比如动态生成了某些参数或者Cookie)。这种情况下,你需要使用支持JS渲染的Java库,比如:

  • 使用Selenium搭配ChromeDriver,模拟真实浏览器的操作
  • 使用HtmlUnit,一个无界面的Java浏览器,支持JS执行

举个HtmlUnit的简单示例:

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import java.io.IOException;

public class HtmlUnitExample {
    public static void main(String[] args) throws IOException {
        try (WebClient webClient = new WebClient()) {
            // 启用JavaScript
            webClient.getOptions().setJavaScriptEnabled(true);
            // 忽略CSS(可选,提升速度)
            webClient.getOptions().setCssEnabled(false);
            // 模拟Chrome浏览器
            webClient.getOptions().setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");

            String url = "http://www.biletix.com/solr/en/select/?start=0&rows=300&q=*:*&fq=start%3A%5B2018-04-01T00%3A00%3A00Z%20TO%202020-04-01T00%3A00%3A00Z%2B1DAY%5D&sort=score%20desc,start%20asc&&wt=json&indent=true&facet=...";
            HtmlPage page = webClient.getPage(url);
            // 等待JS执行完成(如果需要)
            webClient.waitForBackgroundJavaScript(5000);
            // 获取页面内容(这里就是返回的JSON)
            System.out.println(page.asText());
        }
    }
}

注意事项

  • 请确保你遵守网站的robots.txt和使用条款,不要进行恶意爬取
  • 网站的验证规则可能会变化,如果上述方法失效,需要重新分析请求的差异(可以用浏览器的开发者工具对比Java请求和浏览器请求的头信息、Cookie等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:00:37