[curl] curl을 사용하여 Chrome을 사용하는 것과 똑같은 GET 요청을 얻는 방법은 무엇입니까?

웹 API가 http://something.com/api있고 GET을 사용하여 응답 본문을 얻고 싶습니다.

이것은 내 명령입니다.

curl "http://something.com/api"

물론 실패하고 오류 메시지가 표시됩니다.

Chrome을 사용하고 위의 URL을 입력하면 모든 것이 정확합니다. 그러나 Firefox에서 동일한 작업을 수행하면 URL에 동일한 오류 메시지가 표시됩니다. Chrome 확장 프로그램 DHC로 작업을 반복하려고 시도하면 요청이 다시 올바른 응답을 제공합니다. 몇 가지 검색 후 컬 옵션 --user-agent이 차이를 만든다고 생각합니다 . 사용자 에이전트를 Chrome으로 설정하는 올바른 방법은 무엇입니까? 아니면 이것이 요점이 아니라 다른 분야에서 문제가 발생합니까? 대단히 감사합니다.



답변

curl 요청에서 사용자 헤더 문자열을 설정해야하는 경우 -H옵션을 사용하여 다음과 같이 사용자 에이전트를 설정할 수 있습니다 .

curl -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" http://stackoverflow.com/questions/28760694/how-to-use-curl-to-get-a-get-request-exactly-same-as-using-chrome

Charles Proxy 와 같은 프록시 도구를 사용하면 요청하는 것과 같은 짧은 작업을 할 수 있습니다. 다음은이 SO 페이지를 예로 사용하여 수행하는 작업입니다 (2015 년 7 월 Charles 버전 3.10 사용).

  1. Charles Proxy 실행
  2. 브라우저를 사용하여 웹 요청하기
  3. Charles Proxy에서 원하는 요청 찾기
  4. Charles Proxy에서 요청을 마우스 오른쪽 버튼으로 클릭하십시오.
  5. ‘cURL 요청 복사’를 선택하십시오.

Charles 3.10.2의 cURL 요청 예제 복사

이제 브라우저의 요청을 미러링하는 터미널에서 실행할 수있는 cURL 요청이 있습니다. 이 페이지에 대한 내 요청은 다음과 같습니다 (쿠키 헤더가 제거됨).

curl -H "Host: stackoverflow.com" -H "Cache-Control: max-age=0" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" -H "HTTPS: 1" -H "DNT: 1" -H "Referer: https://www.google.com/" -H "Accept-Language: en-US,en;q=0.8,en-GB;q=0.6,es;q=0.4" -H "If-Modified-Since: Thu, 23 Jul 2015 20:31:28 GMT" --compressed http://stackoverflow.com/questions/28760694/how-to-use-curl-to-get-a-get-request-exactly-same-as-using-chrome


답변

Chrome 개발자 도구를 열고 네트워크 탭으로 이동하여 요청합니다 (페이지가 새로 고침되면 ‘로그 보존’을 선택해야 할 수 있음). 왼쪽에서 요청을 찾아 마우스 오른쪽 버튼으로 “Copy as cURL”을 클릭합니다.


답변

크롬이 요청 (브라우저 확장 또는 프록시 사용)과 함께 보내는 HTTP 헤더를 확인한 다음 CURL로 동일한 헤더를 보내십시오. 요청이 작동하는 헤더를 파악할 때까지 한 번에 하나씩 가능합니다.

curl -A [사용자 에이전트] -H [헤더] ” http://something.com/api


답변