다운로드하고 싶은 웹사이트가 있는데 어떻게든 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
Firefox 출력(유효):
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
내가 아는 한 쿠키는 관련이 없습니다.
컬이나 nodejs에서 강제로 순서를 지정하는 방법을 모르기 때문에 제목을 다시 정렬하려고 하지 않았고, 같은 이유로 대소문자를 강제로 적용하려고 하지 않았습니다.
시스템: 만자로 21.3.2
추신: 모든 도구는 동일한 URL을 사용합니다.