본문으로 건너뛰기

환경 변수

sharedState로 Proxyman 스크립트 간에 데이터를 공유하고, $ 접두사를 붙여 API 토큰 같은 시스템 환경 변수를 스크립트에서 읽는 방법을 알아보세요.

1. 공유 상태​

정보

공유 상태(sharedState)는 Proxyman이 지원하는 모든 macOS 버전에서 동작합니다 (macOS 14 Sonoma 이상).

전역 객체 sharedState를 사용하면 **onRequest()**와 onResponse() 사이, 그리고 서로 다른 스크립트 사이에서 상태를 공유할 수 있습니다.

  • sharedState는 JS 객체(딕셔너리)입니다. **onRequest()**에서 원하는 키와 값을 할당한 다음, **onResponse()**나 다른 스크립트에서 데이터를 읽을 수 있습니다.

다음 코드는 아래 작업을 수행하는 방법을 보여줍니다.

  • 전역 카운터를 가져와 스크립트가 실행될 때마다 값을 증가시키기
  • Request와 Response 사이에서 데이터 공유하기
function onRequest(context, url, request) {

// Save some state to sharedState
sharedState.url = url;
sharedState.data = "custom";
sharedState.info = {"username": "Proxyman"};

// Increase the global counter
var count = sharedState.count ?? 0;
count += 1;
sharedState.count = count;

// Log
console.log(sharedState);
return request;
}

function onResponse(context, url, request, response) {

// Receive it
console.log("Custom data = " + sharedState.data);
console.log("sharedState.count = " + sharedState.count);

// Done
return response;
}
정보

Proxyman 2.25.0 이상에서는 sharedState를 서로 다른 스크립트 간에 사용할 수 있습니다. Proxyman을 종료하거나 `clearSharedState()` 함수를 호출할 때만 해제됩니다.

정보

Proxyman 2.24.0 이전에는 sharedState가 스크립트를 실행하는 현재 플로우에서만 유지되며, 스크립트가 끝나면 해제됩니다.

모든 데이터를 지우려면 `clearSharedState()` 함수를 사용하세요.

// Clear all data from sharedState object
clearSharedState();

2. 환경 변수​

Environment Variables 기능은 Proxyman 3.8.0 이상에서 사용할 수 있습니다.

  • 스크립트에서 시스템 환경 변수를 읽을 수 있습니다.
  • bash와 zsh를 지원합니다.

사용 방법​

  1. ~/.zshrc 또는 ~/.bashrc에 환경 변수를 정의하세요
export ACCESS_TOKEN=AAABBBCCC
export PROXYMAN_PATH=/Users/my_user/Desktop/file-mapper

2. 아무 스크립트나 열고 More 버튼 -> Environment Variables -> Allow all scripts to access Environment Variables를 선택하세요.

3. Reload를 클릭해 최신 환경 변수 변경 사항을 불러오세요.

Environment Variables가 열린 Proxyman Script Editor의 More 메뉴: Allow all scripts to access Environment Variables, Reload

스크립트가 환경 변수를 읽도록 허용

4. $ 접두사를 붙여 스크립트에서 환경 변수에 접근하세요

async function onResponse(context, url, request, response) {
console.log($PATH);
console.log($ACCESS_TOKEN);
console.log($PROXYMAN_PATH);

// Done
return response;
}

3. 추가 기능​

  • 시스템 환경 변수를 수동으로 다시 불러올 수 있습니다(Proxyman macOS 4.15.0 이상). 먼저 권한을 활성화하세요. More 버튼 -> Environment Variables -> Allow all scripts to access Environment Variables를 선택합니다.
async function onRequest(context, url, request) {
// manually reload to get the latest changes
_reloadEnv();

// get env
console.log($PROXYMAN_ID)

// Done
return request;
}