기기
안드로이드 에뮬레이터 프록시 설정: 기기마다 다른 IP 사용
Macro Automation Studio에서 에뮬레이터 인스턴스나 클라우드 기기마다 HTTP, HTTPS, SOCKS5 프록시를 하나씩 연결하고, 출구 IP를 테스트하며 웹훅에서 확인합니다.
- Windows
- Mac
- 에뮬레이터
- 클라우드 기기
- 스튜디오
- API
이 페이지의 내용
안드로이드 에뮬레이터 프록시 설정을 인스턴스나 클라우드 기기마다 따로 하면 각 기기가 자기 네트워크 정체성을 갖게 됩니다. Macro Automation Studio(MAS)는 프록시를 계정에 저장하고, 기기마다 프록시 하나를 연결하며, 그 기기의 트래픽을 프록시로 보냅니다: 에뮬레이터에서는 로컬 릴레이로, 클라우드 기기에서는 기기 네트워크 안의 투명 프록시로. 이 페이지는 안드로이드 에뮬레이터 프록시 설정에 쓰이는 프록시 종류, 추가하는 두 가지 방법, 연결, 테스트, 제한을 다룹니다.
시작하기 전에
- 사용할 프록시: MAS가 연동하는 주거용 게이트웨이 계정, 또는 다른 공급자의 엔드포인트.
- 기기 그룹에 있는 기기. 프록시는 그룹이 아니라 기기에 연결됩니다.
- MAS가 설치되어 있고 활성 요금제로 로그인한 상태.
프록시 종류
MAS는 http, https, socks5 프록시를 사용자 이름과 비밀번호 유무에 관계없이 받습니다. IP 인증 프록시라면 자격 증명을 비워 두세요.
Proxies 페이지에서 프록시를 추가하는 방법은 두 가지입니다:
- Gateway account(첫 탭): 게이트웨이 계정의 로그인과 비밀번호를 한 번 입력합니다. 항목 하나가 추가되며, 연결하는 모든 기기가 게이트웨이에서 자기 sticky IP를 받습니다. Countries(선택)를 고르고, Protocol로 HTTP 또는 SOCKS5를 선택하고, Advanced targeting을 열어 주, 도시, 우편번호 또는 ASN을 지정할 수 있습니다. 더 좁은 타기팅에는 국가가 필요하고 공급자가 더 높은 요율로 청구하며, 사용 전에 폼이 알려 줍니다.
- Another provider: Label, Protocol, Host / IP, Port와 선택적인 Username, Password를 입력하거나, **Paste proxies (one per line)**에 다음 형식 중 하나로 여러 프록시를 한 번에 붙여 넣고 Import & test를 클릭합니다:
host:port
host:port:user:pass
scheme://user:pass@host:portAdd & test를 클릭합니다. MAS가 자격 증명을 암호화해 저장하고 곧바로 프록시를 테스트합니다.
프록시 테스트
Proxy pool 표에 모든 프록시가 상태와 함께 나열됩니다: live, dead 또는 unchecked. Test는 프록시를 통해 IP 확인 서비스에 접속해 출구 IP, 출구 국가, 지연 시간을 기록하고, Test all은 풀 전체에 대해 수행합니다. Exit / geo 열은 요청한 것(want:)과 테스트에서 관찰한 것(got:)을 나란히 보여 줍니다. 게이트웨이는 요청한 국가가 아닌 곳으로 나갈 수도 있기 때문입니다. 게이트웨이 프록시는 세션 없이 테스트되므로 테스트 출구는 회전하는 IP입니다.
Data 열은 최근 30일 동안 MAS가 프록시를 통해 보낸 트래픽으로, MAS 자체 릴레이가 측정한 값입니다. 공급자의 청구 수치와 다를 수 있습니다.
에뮬레이터 인스턴스나 클라우드 기기마다 프록시 하나 연결
기기당 프록시 하나입니다. 두 번째를 연결하면 첫 번째를 대체하며, 대화 상자가 경고합니다: “This device already has a proxy. Attaching will replace it.”
Proxies 페이지에서:
- 프록시의 Attach를 클릭합니다.
- Emulator device를 고릅니다. 이미 프록시가 있는 기기는 “has a proxy”로 표시됩니다.
- Session behavior를 고릅니다: 이 기기에 IP 하나를 고정하는 Sticky, 또는 요청마다 새 IP를 쓰는 Rotating.
- Attach를 클릭합니다.
Device Groups의 기기 카드에서는 Advanced settings를 열고 Proxy 드롭다운에서 프록시를 고릅니다. 카드는 sticky로 연결합니다. No proxy는 배정을 제거합니다.
모든 sticky 배정은 자기 세션 ID를 받으며, 이것이 게이트웨이 계정 하나를 기기마다 다른 출구 IP로 바꾸는 요소입니다. 다른 공급자의 일반 프록시는 그 엔드포인트가 주는 출구 IP를 그대로 쓰며, 세션 설정이 이를 바꾸지 않습니다.
Active assignments 표에 각 기기가 프록시와 세션과 함께 나열됩니다. Apply info는 기기별 사용자 이름을 포함한 해석된 연결 정보를 보여 주며, MAS 밖에서 쓸 수 있습니다.
SOCKS5 또는 HTTP 프록시가 안드로이드 에뮬레이터에서 동작하는 방식
Android의 전역 프록시 설정에는 사용자 이름과 비밀번호 항목이 없는데, 게이트웨이의 사용자 이름에 타기팅과 세션 ID가 담깁니다. 그래서 MAS는 실행마다 이 컴퓨터에서 작은 릴레이를 실행합니다:
- 실행이 시작되면 MAS가 기기의 프록시를 찾아
127.0.0.1의 빈 포트에 릴레이를 시작합니다. 릴레이는 나가는 길에 자격 증명을 붙이고, 기기에는 HTTP로, 상위 프록시에는 HTTP, HTTPS 또는 SOCKS5로 통신하므로, SOCKS5를 직접 쓸 수 없는 에뮬레이터에서도 SOCKS5 게이트웨이가 동작합니다. - MAS가 릴레이를 통해 요청 하나를 보내 경로가 동작하는지 확인하고 출구 IP, 국가, 도시를 읽습니다. 잘못된 자격 증명이나 사용할 수 없는 지역은 매크로가 시작되기 전 여기서 실패합니다.
- adb가 연결되면 MAS가
adb reverse를 실행해 에뮬레이터 자체 localhost가 릴레이에 닿게 한 뒤, 기기의 전역 HTTP 프록시를127.0.0.1:<relay port>로 설정합니다. 재연결하면 reverse 매핑이 사라지므로 재연결마다 반복합니다. - 실행이 끝나면 MAS가 프록시 설정을 지우고, reverse 매핑을 제거하고, 릴레이를 닫습니다.
기기 카드가 각 단계를 알려 줍니다: 확인 후 Proxy ready, 적용되면 출구 IP와 함께 Proxy active, 실행 후 Proxy off, 그리고 이유와 함께 Proxy failed. 릴레이는 루프백에서만 수신하므로 네트워크의 다른 무엇도 쓸 수 없습니다.
클라우드 기기에서의 동작 방식
클라우드 기기에서 MAS는 Android 설정을 전혀 쓰지 않습니다. 기기가 시작될 때 호스트가 기기 네트워크 네임스페이스 안에 투명 프록시를 띄우고 나가는 모든 TCP 연결을 그리로 보냅니다. 각 연결은 사용자의 자격 증명으로 상위 프록시를 통해 다시 열리므로, 앱이 프록시를 존중하든 아니든 기기의 모든 트래픽이 프록시 IP로 나갑니다. 클라우드 프록시는 HTTP CONNECT로 상위와 통신하므로 클라우드 기기에는 HTTP 또는 HTTPS 프록시를 주세요.
- 프록시는 실행 단위가 아니라 기기 수명 동안 적용됩니다. 연결하거나 바꾼 뒤 기기를 정지했다가 시작하세요. 카드에 “Applies when the device next starts”가 표시됩니다.
- 기기가 실행 중일 때 카드에 출구 IP와 함께 Proxy가 표시되고, 각 실행 로그가 “Proxy active, traffic routed through
“로 시작합니다. - 프록시를 적용할 수 없으면 기기는 프록시 없이 시작되지 않습니다. “proxy setup failed, turn the device off and on to retry”와 함께 Error로 갑니다.
- 기기가 이미 실행 중일 때 연결한 프록시는 재시작 없이 이후 폴링에서 적용됩니다.
웹훅과 실행 기록의 출구 IP
실행에 프록시가 활성이었다면 실행의 웹훅 이벤트 data에 device_name, device_port, group_id 옆에 proxy_exit_ip와 proxy_country가 담깁니다. 같은 값이 실행과 함께 저장되므로 나중에 실행 트래픽이 어디로 나갔는지 확인할 수 있습니다. 웹훅을 참고하세요.
제한
- 기기당 프록시 하나. 프록시가 없는 기기는 직접 연결합니다.
- 스킴:
http,https,socks5. 포트 1부터 65535까지. - 에뮬레이터는 실행마다 프록시를 적용하고, 클라우드 기기는 기기 시작마다 적용하며 HTTP 또는 HTTPS 상위가 필요합니다.
- 게이트웨이 타기팅: 대상 국가 지정 또는 국가 제외 중 하나만 가능하며, 주, 도시, 우편번호, ASN에는 국가가 필요합니다.
- 사용량 수치는 MAS가 측정한 값이며 공급자의 청구서가 아닙니다.
API 키용 프록시 경로
모든 프록시 경로는 API 키를 받습니다: /api/proxy와 /api/proxy/{id}의 GET, POST, PUT, POST /api/proxy/import, POST /api/proxy/{id}/validate, /api/proxy/assignments 아래의 배정 경로와 /api/proxy/assignments/{id}/connection-info, 기기에 연결된 프록시를 위한 GET /api/proxy/devices/{device_id}, 그리고 GET /api/proxy/usage. 기기 ID는 GET /api/emulator/devices로 찾으세요. REST API를 참고하세요.
문제 해결
기기 카드에 Proxy failed가 표시됨
메시지가 단계를 알려 줍니다. “proxy did not respond, check credentials or targeting”은 상위가 확인을 거부했다는 뜻입니다: 잘못된 로그인, 만료된 요금제, 또는 게이트웨이에 IP가 없는 국가. Proxies 페이지에서 Test를 실행해 공급자의 응답을 확인하세요. “could not expose the proxy relay to the device (adb reverse)” 또는 “could not set the device proxy”는 연결과 설정 사이에 adb가 에뮬레이터를 잃었다는 뜻입니다. ADB 문제 해결을 참고하고 실행을 다시 시작하세요.
상태가 dead로 표시됨
테스트가 프록시를 통해 인터넷에 닿지 못했습니다. 호스트, 포트, 스킴을 확인하고, 그다음 자격 증명을 확인하고, IP 인증 프록시라면 이 컴퓨터의 IP를 허용하는지 확인하세요. 고친 뒤 다시 Test하면 성공 시 지연 시간과 출구 IP가 갱신됩니다.
클라우드 기기에 proxy setup failed가 표시됨
기기 호스트가 시작 시 프록시를 적용할 수 없었습니다. 프록시가 live인지, SOCKS5가 아니라 HTTP 또는 HTTPS 프록시인지 확인한 뒤 Stop을 클릭하고 기다렸다가 Start하세요. 프록시 없이 기기를 시작하려면 먼저 Proxy를 No proxy로 설정하세요.
다음 단계
관련 페이지
감사합니다. 잘못된 내용이 있으면 Discord에서 알려 주세요.
궁금한 점이 있으신가요? Discord에서 질문하기