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

特定PDF链接curl HTTP/2调用失败,同类链接正常的技术问题

解决curl下载NSE PDF时的HTTP/2错误及HTTP/1.1卡住问题

问题概况

使用curl下载PDF时,BSE的链接可正常工作,但NSE的PDF链接触发HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)错误;降级到HTTP/1.1后下载启动但无法终止,而Chrome能正常渲染两个PDF文件。

可正常执行的命令

curl -v https://www.bseindia.com/bseplus/AnnualReport/543258/74183543258.pdf -o bse_file.pdf

执行失败的命令

curl -v https://nsearchives.nseindia.com/content/equities/IPO_RHP_UNICOMM.pdf -o nse_file.pdf

错误信息

curl: (92) HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)

curl版本信息

curl --version
curl 8.4.0 (x86_64-apple-darwin23.0) libcurl/8.4.0 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.58.0

错误调用详细日志

$ curl -v https://nsearchives.nseindia.com/content/equities/IPO_RHP_UNICOMM.pdf -o nse_file.pdf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 23.46.207.147:443...
* Connected to nsearchives.nseindia.com (23.46.207.147) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
} [329 bytes data]
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [29 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [4274 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: C=IN; ST=Maharashtra; L=Mumbai; O=National Stock Exchange of India Ltd; CN=www.nseindia.com
*  start date: Aug 21 00:00:00 2024 GMT
*  expire date: Jan 28 23:59:59 2025 GMT
*  subjectAltName: host "nsearchives.nseindia.com" matched cert's "nsearchives.nseindia.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS RSA SHA256 2020 CA1
*  SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://nsearchives.nseindia.com/content/equities/IPO_RHP_UNICOMM.pdf
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: nsearchives.nseindia.com]
* [HTTP/2] [1] [:path: /content/equities/IPO_RHP_UNICOMM.pdf]
* [HTTP/2] [1] [user-agent: curl/8.4.0]
* [HTTP/2] [1] [accept: */*]
> GET /content/equities/IPO_RHP_UNICOMM.pdf HTTP/2
> Host: nsearchives.nseindia.com
> User-Agent: curl/8.4.0
> Accept: */*
>
* HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Connection #0 to host nsearchives.nseindia.com left intact
curl: (92) HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)

已尝试方案

使用--http1.1参数降级协议后,下载启动但无法终止:

curl -v --http1.1 https://nsearchives.nseindia.com/content/equities/IPO_RHP_UNICOMM.pdf -o curl_file.pdf

解决方案

1. 模拟浏览器User-Agent并添加超时限制

服务器可能对curl默认的User-Agent做了拦截,模拟Chrome的UA并配合HTTP/1.1,同时设置超时避免无限等待:

curl -v --http1.1 -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" --max-time 60 https://nsearchives.nseindia.com/content/equities/IPO_RHP_UNICOMM.pdf -o nse_file.pdf

2. 禁用HTTP/2并关闭长连接

直接禁用HTTP/2协议,同时关闭长连接避免卡住:

curl -v --no-http2 --no-keepalive https://nsearchives.nseindia.com/content/equities/IPO_RHP_UNICOMM.pdf -o nse_file.pdf

3. 携带会话Cookie(从Chrome导出)

若服务器需要验证会话,可从Chrome中导出对应网站的Cookie,通过--cookie参数传入:

curl -v --http1.1 -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" --cookie "your_cookie_string_here" https://nsearchives.nseindia.com/content/equities/IPO_RHP_UNICOMM.pdf -o nse_file.pdf

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:25:57