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

浏览器可正常访问的股票API,Java请求返回HTTP 403错误

Java调用Investing.com股票API返回403 Forbidden问题排查

问题描述

我尝试用Java程序调用股票API下载数据,API地址如下:

https://tvc4.investing.com/49137b20ec52f5d1133789e270e21db8/1668879605/56/56/23/history?symbol=18325&resolution=5&from=1668448858&to=1668880918

浏览器直接访问该URL可正常获取JSON响应,但Java程序请求时返回HTTP 403 Forbidden错误。我已在Java代码中配置了Chrome开发者工具中查看的所有HTTP请求头(包括User-Agent、Cookie等),但问题仍未解决。

Java程序堆栈跟踪信息:

java.io.IOException: Server returned HTTP response code: 403 for URL: https://tvc4.investing.com/49137b20ec52f5d1133789e270e21db8/1668879605/56/56/23/history?symbol=18325&resolution=5&from=1668448858&to=1668880918
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1997)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
    at java.base/java.net.URLConnection.getContent(URLConnection.java:753)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getContent(HttpsURLConnectionImpl.java:404)
    at ai.jeet.test.DataDownload.main(DataDownload.java:36)

使用Postman调用该API同样返回403 Forbidden,响应HTML提示需启用Cookies和JavaScript。不清楚服务器如何区分请求来源,希望排查问题根源。


可能的原因及解决方法

1. 缺失Referer请求头

多数反爬机制会校验Referer头,确保请求来自网站内部页面。浏览器会自动携带该头,但Java/Postman默认不会。需手动添加:

connection.setRequestProperty("Referer", "https://www.investing.com/");

2. URL中的动态令牌已失效

你提供的API URL包含随机字符串(如49137b20ec52f5d1133789e270e21db8、1668879605),这些是服务器生成的会话令牌或时间戳,有效期极短,过期后直接调用会返回403。

  • 解决方式:先请求对应股票的页面,从页面的JavaScript或HTML源码中提取最新的API路径参数,再动态构造请求URL。

3. 浏览器指纹检测

服务器可能通过以下特征识别非浏览器请求:

  • TLS握手指纹:Java原生HttpsURLConnection的TLS配置与Chrome差异较大,可改用OkHttp、Apache HttpClient等支持模拟浏览器TLS参数的库。
  • 请求上下文:浏览器会先加载页面、静态资源,再发起API请求;单独直接调用API会被判定为异常流量。需模拟完整浏览流程:先请求页面获取Cookie,再按顺序发起API请求。

4. JavaScript渲染验证

响应提示需启用JavaScript,说明服务器可能要求请求携带页面JS生成的验证参数(如自定义令牌、加密Cookie)。

  • 解决方式:使用Selenium、Playwright等无头浏览器工具,模拟真实浏览器的渲染和请求流程,直接获取处理后的API响应。

5. Cookie完整性或属性不匹配

复制的Cookie可能缺失关键字段,或Domain/Path属性与API域名不匹配:

  • 确保Cookie的Domain为.investing.com,Path匹配API路径;
  • 完整复制浏览器中的所有Cookie键值对,包括__cf_bm、PHPSESSID等动态生成的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:25:21