본문으로 건너뛰기

NodeJS

Proxyman Automatic Setup으로 NodeJS 앱과 스크립트의 HTTP/HTTPS 트래픽을 캡처하세요. axios, got, superagent, fetch, node-fetch와 함께 사용할 수 있습니다.

1. 새로운 자동 설정 방식 (v4.7.0 이상) ✅​

Proxyman v4.7.0 이상에서는 클릭 한 번으로 NodeJS의 HTTP/HTTPS 트래픽을 캡처할 수 있습니다.

  • 클릭 한 번으로 설정: HTTP 프록시 설정을 직접 하거나 자체 서명 인증서를 수동으로 신뢰할 필요가 없습니다.
  • 여러 NodeJS 라이브러리를 지원합니다: axios, got, superagent, fetch, node-fetch

사용 방법:​

  1. Proxyman -> Setup Menu -> Automatic Setup 순서로 엽니다.
  2. "Open New Terminal"을 클릭합니다.
  3. 필요한 경우 AppleScript 권한 요청을 허용합니다.
  4. 새 Terminal 창이 열리면 그곳에서 NodeJS 백엔드 서버를 시작하거나 스크립트를 실행합니다. => Proxyman이 모든 트래픽을 자동으로 캡처합니다.
  5. 예를 들어:
$ npm start

완료 ✅

axios와 fetch 같은 NodeJS 라이브러리를 캡처하는 Open New Terminal 버튼이 있는 Proxyman Automatic Setup 창

NodeJS 트래픽 캡처

Automatic Setup 페이지를 확인하세요:

NodeJS와 Proxyman을 함께 사용할 때 자주 발생하는 문제는 다음과 같습니다:

1. NodeJS 서버의 http://localhost:3000 요청을 Proxyman이 캡처하지 못함​

NodeJS로 localhost 웹사이트(예: http://localhost:3000) 를 제공하면 Proxyman이 동작하지 않을 수 있습니다. 예를 들어 ExpressJS로 http://localhost:3000 에 API 서버를 띄우는 경우가 이에 해당합니다.

해결 방법:​

localhost 서버에서 요청이 보이지 않는 경우 문서를 참고하세요.

2. NodeJS 로컬 서버에서 보낸 HTTP 요청을 Proxyman이 캡처하지 못함​

  • fetch나 axios에서 보낸 요청이 Proxyman 앱에 표시되지 않습니다
  • HTTPS 요청에서 SSL 오류가 발생합니다

해결 방법​

기본적으로 NodeJS 라이브러리의 HTTP/HTTPS 요청은 HTTP 프록시 서버를 거치지 않으므로 Proxyman이 트래픽을 캡처할 수 없습니다.

2.1 node-fetch​

  1. global-agent 패키지를 설치합니다.
npm install global-agent

2. NodeJS 코드 맨 위에 다음 코드를 추가합니다:

import { bootstrap } from 'global-agent';
bootstrap();
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
  1. 현재 셸에 다음 환경 변수를 추가합니다. Proxyman이 9090 포트에서 수신 대기 중인지 확인하세요.
export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:9090
  1. 완료 ✅

NodeJS 스크립트를 다시 실행하면 HTTP/HTTPS 요청이 Proxyman 앱에 나타납니다.

샘플 코드​

import fetch from 'node-fetch';

// Setup global-agent
import { bootstrap } from 'global-agent';
bootstrap();
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

// fetch the data
const response = await fetch('https://httpbin.org/get?id=123');
const data = await response.json();

// Done
console.log(data);

2.2 Axios​

Axios 문서에 따르면 HTTP_PROXY와 HTTPS_PROXY 환경 변수를 설정할 수 있습니다.

  1. 메뉴 막대의 Proxyman 아이콘 -> Listen on <IP>:<Port>를 클릭합니다.
  2. Copy Shell Command를 클릭합니다.
Listen on IP and port 및 Copy Shell Command 항목이 있는 Proxyman 메뉴 막대 메뉴
  1. Terminal을 열고 명령어를 붙여 넣습니다. 예: export https_proxy=http://192.168.1.103:9090 http_proxy=http://192.168.1.103:9090
  2. 같은 Terminal에서 axios를 사용하는 NodeJS 서버를 시작합니다.
  3. Axios가 트래픽을 Proxyman을 통해 전송합니다.
  4. 완료 ✅

2.3 다른 NodeJS 라이브러리를 사용하는 경우​

fetch나 axios를 사용하지 않는다면 설정 방법이 다를 수 있습니다. 라이브러리 문서에서 프록시를 설정하고 Proxyman 인증서를 신뢰하는 방법을 확인하세요.

더 알아보기​