Postman 사용자 에이전트 가이드: 설정 및 변경

Postman에서 사용자 에이전트 헤더를 설정, 변경 및 회전하는 방법을 익혀 봇 탐지 방지를 피하고 HTTP 요청을 개선하세요.
3 분 읽기
Postman User Agent Guide blog image

이 Postman 사용자 에이전트 문서에서는 다음을 배울 수 있습니다:

  • 사용자 에이전트 헤더를 설정해야 하는 이유
  • Postman 기본 사용자 에이전트 형식
  • Postman 요청에서 사용자 에이전트 변경 방법
  • Postman에서 사용자 에이전트 로테이션 구현 방법

자, 시작해 보겠습니다!

사용자 정의 User-Agent 설정이 중요한 이유

User-Agent 헤더는 서버에 HTTP 요청을 보내는 클라이언트를 식별합니다. 일반적으로 클라이언트 머신 및/또는 요청을 보내는 애플리케이션에 대한 세부 정보를 포함합니다. 일반적으로 이 헤더는 웹 브라우저, HTTP 클라이언트 또는 웹 요청을 수행하는 모든 소프트웨어에 의해 설정됩니다.

다음은 웹 페이지 요청 시 Chrome이 설정하는 User-Agent 문자열의 예시입니다:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36

브라우저의 User-Agent 헤더는 여러 구성 요소로 이루어집니다:

  • Mozilla/5.0: 원래 Mozilla 브라우저와의 호환성을 나타내기 위해 사용되었으나, 현재는 더 넓은 호환성을 위해 포함됩니다.
  • Macintosh; Intel Mac OS X 10_15_7: 운영 체제(Mac OS X 10_15_7)와 플랫폼(Intel Mac)을 명시합니다.
  • AppleWebKit/537.36: Chrome에서 사용하는 렌더링 엔진을 나타냅니다.
  • (KHTML, like Gecko): KHTML 및 Gecko 레이아웃 엔진과의 호환성을 나타냅니다.
  • Chrome/127.0.0.0: 브라우저 이름과 버전을 나타냅니다.
  • Safari/537.36: Safari와의 호환성을 시사합니다.

서버는 일반적으로 사용자 에이전트 헤더를 읽어서 수신된 요청이 브라우저에서 발생했는지 다른 소프트웨어에서 발생했는지 판단합니다.

웹 스크래핑 봇이 흔히 저지르는 실수는 기본값이나 비(非) 브라우저 사용자 에이전트 문자열을 사용하는 것입니다. 이러한 문자열은 요청이 봇에서 온 것으로 인식될 수 있기 때문에 봇 방지 기술에 의해 차단될 수 있습니다. 자세한 정보는 웹 스크래핑을 위한 사용자 에이전트 가이드를 참조하십시오.

Postman의 기본 사용자 에이전트는 무엇인가요?

Postman은 전 세계 수백만 사용자가 사용하는 가장 인기 있는 데스크톱 HTTP 클라이언트 중 하나입니다. 대부분의 다른 HTTP 클라이언트와 마찬가지로, Postman은 각 요청에 자동으로 기본 User-Agent 헤더를 설정합니다. 구체적으로, 자동 생성된 Postman 헤더를 확인하여 이 동작을 관찰할 수 있습니다:

observe this behavior by examining the auto-generated Postman headers

보시다시피, Postman의 기본 사용자 에이전트는 다음과 같은 형식을 따릅니다:

PostmanRuntime/x.y.z

“PostmanRuntime”은 Postman 애플리케이션을 식별하며, “x.y.z”는 현재 버전 번호입니다.

위 문자열이 실제로 Postman의 기본 사용자 에이전트인지 확인하려면 httpbin.io/user-agent 엔드포인트에 GET 요청을 수행하세요. 이 API 엔드포인트는 수신 요청의 User-Agent 헤더를 반환하여 어떤 HTTP 클라이언트가 사용하는 사용자 에이전트를 식별하는 데 도움을 줍니다.

identify the user agent used

API가 반환한 사용자 에이전트가 Postman이 기본적으로 설정하는 것과 일치하는지 확인하세요. 구체적으로 Postman 사용자 에이전트는 다음과 같습니다:

PostmanRuntime/7.41.0

보시다시피, Postman이 사용하는 사용자 에이전트 문자열은 Chrome과 같은 브라우저가 설정하는 것과 상당히 다릅니다. 서버가 이러한 헤더가 포함된 요청을 수신하면, 봇 방지 시스템이 이를 차단할 가능성이 높습니다.

이는 해당 솔루션들이 들어오는 요청을 모니터링하며 비정상적인 사용자 에이전트와 같은 봇 활동을 나타내는 패턴을 찾기 때문입니다. 바로 이 때문에 Postman의 기본 사용자 에이전트를 수정하는 것이 매우 중요합니다!

Postman 사용자 에이전트 변경 방법

이제 Postman에서 사용자 정의 사용자 에이전트를 설정하는 방법을 살펴보겠습니다.

단일 요청에 사용자 에이전트 설정하기

Postman에서는 User-Agent 헤더를 수동으로 지정하여 단일 HTTP 요청에 대한 사용자 에이전트를 변경할 수 있습니다.

참고: Postman이 자동 생성한 헤더는 직접 수정할 수 없습니다.

“헤더” 탭으로 이동하여 새 User-Agent 헤더를 추가하세요:

adding a new user-agent header

Postman은 자동 생성된 기본 사용자 에이전트를 사용자 정의 헤더 값으로 덮어씁니다. HTTP 헤더는 대소문자를 구분하지 않으므로 user-agent 또는 다른 대소문자로 헤더를 지정해도 됩니다.

httpbin.io/user-agent 엔드포인트에 GET 요청을 실행하여 접근 방식이 작동하는지 확인하세요:

executing a GET request

대단합니다! API가 반환한 사용자 에이전트가 사용자 정의 User-Agent 헤더와 일치합니다.

전체 컬렉션에 사용자 에이전트 설정하기

Postman 컬렉션은 일반적으로 대상 서버나 범위와 같은 공통 특성을 공유하는 API 요청들의 집합입니다. 특히 컬렉션 내 엔드포인트들은 유사한 구성을 가질 가능성이 높습니다. 따라서 Postman은 컬렉션 내 각 요청 전후에 실행되는 사용자 정의 스크립트 설정을 지원합니다.

이 메커니즘을 활용하여 Postman 컬렉션 내 모든 요청에 사용자 정의 사용자 에이전트를 설정하는 방법을 살펴보겠습니다!

Postman 컬렉션을 생성하고 관리하려면 먼저 계정에 로그인해야 합니다. 아직 계정이 없다면 Postman 계정을 생성하세요.

이제 “HTTPBin”이라는 컬렉션이 있고, HTTPBin 엔드포인트가 폴더별로 정리되어 있다고 가정해 보겠습니다:

HTTPBin endpoints organized in folders

/user-agent 엔드포인트에 대한 요청을 실행하면 기본 Postman 사용자 에이전트가 반환됩니다:

the default Postman user agent

이제 사용자 정의 User-Agent 헤더를 설정하는 사전 요청 스크립트를 정의하여 이를 변경해 보겠습니다. 사전 요청 스크립트는 Postman이 컬렉션 내 요청 실행 전에 실행하는 JavaScript입니다.

사용자 에이전트 설정을 위한 사전 요청 스크립트를 생성하려면 아래 지침을 따르세요.

컬렉션을 더블 클릭한 후 “스크립트” 탭으로 이동하여 “사전 요청” 옵션을 선택하세요:

select the “Pre-request” option

에디터에 다음 코드를 붙여넣으세요:

pm.request.headers.add({

key: "User-Agent",

value: "<사용자 지정 사용자 에이전트>"

});

<your-user-agent> 문자열을 사용하려는 사용자 에이전트 값으로 아래와 같이 교체하세요:

pm.request.headers.add({

key: "User-Agent",

value: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"

});

pm.request.headers.add() 는 Postman API의 특수 함수로, 요청에 특정 헤더를 추가합니다.

변경 사항을 적용하려면 “저장” 버튼을 클릭하세요.

/user-agent 엔드포인트에 대한 요청을 다시 실행하세요:

executing the request again

이번에는 반환된 사용자 에이전트가 스크립트에 설정된 값이 되며, 기본 Postman 값이 아닙니다. 미션 완료!

사용자 에이전트 해제

사용자 에이전트 자동 생성 헤더는 선택 사항이며, 실제로 선택 해제할 수 있습니다. 선택 해제 시 Postman은 더 이상 사용자 에이전트 헤더를 전송하지 않습니다.

들어오는 요청의 모든 헤더를 반환하는 httpbin.io/headers 엔드포인트로 요청을 보내 이를 확인하세요:

return of all the headers of the incoming request

엔드포인트가 반환하는 헤더 객체에 User-Agent 키가 포함되지 않음을 확인하세요.

참고: 대부분의 웹 요청에는 일반적으로 이 헤더가 포함되므로 사용자 에이전트 헤더를 해제하는 것은 권장되지 않습니다.

Postman에서 사용자 에이전트 로테이션 구현하기

기본 Postman User-Agent 헤더를 브라우저의 헤더로 단순히 대체하는 것만으로는 봇 방지 시스템을 우회하기에 충분하지 않을 수 있습니다. 특히 동일한 IP 주소에서 동일한 헤더로 다수의 요청을 전송하는 경우 더욱 그렇습니다.

Postman에서 봇으로 탐지될 위험을 줄이려면 요청을 다양화해야 합니다. 각 요청마다 다른 User-Agent를 사용하는 ‘사용자 에이전트 로테이션’ 기법이 실용적인 접근법입니다. 이 방법은 요청이 자동화된 것으로 표시될 가능성을 낮춥니다.

이 단계별 섹션에서는 Postman에서 사용자 에이전트 로테이션을 구현하는 방법을 배울 수 있습니다!

1단계: 사용자 에이전트 목록 수집

WhatIsMyBrowser.com 과 같은 사이트를 방문하여 유효한 사용자 에이전트 목록을 수집하세요:

const userAgents = [

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",

"Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.103 Mobile Safari/537.36 EdgA/127.0.2651.82",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",

"Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/127.0.6533.107 Mobile/15E148 Safari/604.1",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0",

"Mozilla/5.0 (Macintosh; Intel Mac OS X 14.6; rv:129.0) Gecko/20100101 Firefox/129.0",

// 기타 사용자 에이전트...

];

: 이 배열에 실제 사용자 에이전트가 많을수록 로테이션 확률이 높아집니다.

2단계: 사용자 에이전트 무작위 선택

JavaScript Math API를 사용하여 목록에서 사용자 에이전트를 무작위로 선택합니다:

const userAgent = serAgents[Math.floor(Math.random() * userAgents.length)];

이 코드 줄에서 발생하는 작업:

  1. Math.random() 은 0과 1 사이의 난수를 생성합니다.
  2. 생성된 숫자에 userAgents 배열의 길이를 곱합니다.
  3. Math.floor() 는 결과 숫자를 원본 숫자보다 작거나 같으면서 가장 큰 정수로 반올림합니다. 결과 숫자는 0부터 userAgents.length - 1까지의 인덱스에 해당합니다.
  4. 이 인덱스는 사용자 에이전트 배열에서 무작위 항목에 접근하는 데 사용됩니다.
  5. 무작위로 선택된 사용자 에이전트는 변수에 할당됩니다.

3단계: User-Agent 헤더 정의

pm.request.headers.add() 를 사용하여 무작위 userAgent 값으로 User-Agent 헤더를 정의합니다:

pm.request.headers.add({

key: "User-Agent",

value: userAgent

});

이제 컬렉션의 HTTP 요청에는 순환하는 User-Agent 헤더가 포함됩니다.

단계 #4: 모든 것 통합하기

사용자 에이전트 순환을 위한 최종 Postman 사전 요청 스크립트는 다음과 같습니다:

// 유효한 사용자 에이전트 목록

const userAgents = [

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",

"Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.103 Mobile Safari/537.36 EdgA/127.0.2651.82",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",

"Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/127.0.6533.107 Mobile/15E148 Safari/604.1",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0",

"Mozilla/5.0 (Macintosh; Intel Mac OS X 14.6; rv:129.0) Gecko/20100101 Firefox/129.0",

// 기타 사용자 에이전트...

];

// 목록에서 무작위로 사용자 에이전트 추출

const userAgent = userAgents[Math.floor(Math.random() * userAgents.length)];

// 무작위 사용자 에이전트 헤더 설정

pm.request.headers.add({

key: "User-Agent",

value: userAgent

});

컬렉션에 추가하고 httpbin.io/user-agent 엔드포인트를 대상으로 작동 여부를 확인하세요. 요청을 몇 번 실행하면 사용자 에이전트가 순환되는 것을 볼 수 있습니다:

executing requests and seeing the rotation of user agents

훌륭합니다! 반환되는 사용자 에이전트가 계속 변경됩니다.

자, 이제 Postman 사용자 에이전트 로테이션 로직 구현 방법을 알게 되었습니다.

추가 참고 자료

기본 사용자 에이전트 변경은 Postman에만 해당되는 것이 아니라 모든 HTTP 클라이언트 및 브라우저 자동화 도구에 적용됩니다. 가이드를 살펴보세요:

결론

이 글에서는 사용자 에이전트 헤더를 설정해야 하는 이유를 이해하고, 기본 Postman 사용자 에이전트가 어떻게 보이는지 살펴보았습니다. 해당 값을 재정의하고 사용자 에이전트 로테이션을 구현하여 기본적인 봇 방지 메커니즘을 회피하는 방법을 배웠습니다. 그러나 더 진보된 시스템은 여전히 요청을 차단할 수 있습니다. IP 차단 방지를 위해 Postman에서 프록시를 사용할 수 있지만, 그것조차 충분하지 않을 수 있습니다!

더 완벽한 해결책으로는 Web Scraper API를시도해 보세요—Postman이나 다른 HTTP 클라이언트에서 호출할 수 있는 차세대 스크래핑 API입니다. IP 및 사용자 에이전트 로테이션과 같은 내장 기능을 사용하여 안티 스크래핑 및 안티봇 조치를 효과적으로 우회합니다. 웹 스크래핑이 이보다 더 쉬울 수는 없습니다!

지금 바로 가입하여 무료 체험을 시작하세요.