我有一个我想下载的网站,但不知何故只有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
我已经尝试过:
- 设置
Connection
为Keep-Alive
在所有工具上 - 将所有标题从 Firefox 复制到工具中
编辑,我忘记包括一些内容:
- 中间没有已知的代理
- 我也尝试过使用
-c cookies
curl,但据我所知,不涉及cookie
我没有尝试重新排序标题,因为我不知道如何在curl或nodejs中强制顺序,并且由于同样的原因,我也没有尝试强制大小写。
系统:Manjaro 21.3.2
PS:所有工具都使用相同的url