Cloudflare wget 可以工作,但curl 和 nodejs 失败并显示 403

Cloudflare wget 可以工作,但curl 和 nodejs 失败并显示 403

我有一个我想下载的网站,但不知何故只有wget(和浏览器本身)可以工作,但其他东西curl(或nodejs https.get)却不能并且失败403 Forbidden

Wget 输出(有效):

GET /path HTTP/1.1
Host: somesite.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: */*
Accept-Encoding: identity
Connection: Keep-Alive

卷曲输出(403):

> GET /path HTTP/2
> Host: somesite.com
> accept: */*
> user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0

火狐输出(有效):

GET /path HTTP/2
Host: somesite.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site

NodeJS (403):

GET /path HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Host: somesite.com
Connection: close

我已经尝试过:

  • 设置ConnectionKeep-Alive在所有工具上
  • 将所有标题从 Firefox 复制到工具中

编辑,我忘记包括一些内容:

  • 中间没有已知的代理
  • 我也尝试过使用-c cookiescurl,但据我所知,不涉及cookie

我没有尝试重新排序标题,因为我不知道如何在curl或nodejs中强制顺序,并且由于同样的原因,我也没有尝试强制大小写。

系统:Manjaro 21.3.2

PS:所有工具都使用相同的url

相关内容