환경 변수
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를 지원합니다.
사용 방법
~/.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를 클릭해 최신 환경 변수 변경 사항을 불러오세요.

스크립트가 환경 변수를 읽도록 허용
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;
}