빠른 시작: Mbbrowser 환경 제어하기
이 장에서는 즉시 복사해서 실행할 수 있는 Python 스크립트를 제공합니다. 이를 통해 처음부터 Mbbrowser 핑거프린트 환경의 제어권을 가져오고 첫 번째 자동화 작업을 완료하는 과정을 안내합니다.
전체 스크립트 (복사해서 사용)
start_selenium.py라는 파일을 만들고 다음 코드를 붙여넣은 뒤, 설정 섹션을 수정하십시오.
python
import requests
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
# ============================
# 설정 섹션: 본인의 정보로 수정하세요
# ============================
API_URL = "http://127.0.0.1:8186"
SESSION_ID = "사용자_환경_ID_입력" # Mbbrowser에서 환경 우클릭 → 환경 ID 복사로 획득
# Mbbrowser 디렉토리 내의 chromedriver.exe 경로 (또는 Selenium Manager 자동 매칭을 위해 None으로 설정 가능)
DRIVER_PATH = r"C:\Program Files (x86)\Mbbrowser_v7.10.20.219\chromedriver.exe"
def start_browser():
"""
1단계: Mbbrowser ApiServer에 특정 환경을 열도록 요청합니다.
2단계: 반환값에서 debuggerAddress를 가져옵니다.
3단계: Selenium을 사용하여 해당 환경의 제어권을 가져옵니다.
4단계: 비즈니스 로직을 실행합니다.
"""
# ── 1단계: Mbbrowser 환경 열기 ──────────────────────────────────
print("⏳ Mbbrowser 핑거프린트 환경 시작 중...")
try:
response = requests.post(
f"{API_URL}/api/v1/browser/start",
json={"Session_ID": SESSION_ID},
timeout=30
)
data = response.json()
except requests.exceptions.ConnectionError:
print("❌ ApiServer에 연결할 수 없습니다. 시작되었는지와 포트가 맞는지 확인하세요!")
return
if data.get("code") != 0:
print(f"❌ 환경 시작 실패: {data.get('message')}")
return
# ── 2단계: 원격 디버깅 주소 추출 ────────────────────────────────
# data["data"]["http"] 형식: 127.0.0.1:9222
debugger_address = data["data"]["http"]
print(f"✅ 환경이 시작되었습니다. 원격 디버깅 주소: {debugger_address}")
# ── 3단계: Selenium 제어 설정 ───────────────────────────────────
chrome_options = Options()
# 새 브라우저를 만드는 대신 기존 브라우저를 인수하는 핵심 설정입니다!
chrome_options.add_experimental_option("debuggerAddress", debugger_address)
# Mbbrowser에 포함된 chromedriver가 있다면 그 경로를 지정하고,
# 그렇지 않다면 None으로 설정하여 Selenium Manager가 자동으로 처리하게 합니다.
if DRIVER_PATH:
service = Service(executable_path=DRIVER_PATH)
driver = webdriver.Chrome(service=service, options=chrome_options)
else:
driver = webdriver.Chrome(options=chrome_options)
print("🎉 Selenium 제어 성공!")
# ── 4단계: 비즈니스 로직 실행 ───────────────────────────────────
try:
# 대상 URL로 이동
driver.get("https://www.mbbrowser.com")
print(f"📄 현재 페이지 타이틀: {driver.title}")
# 관찰을 위해 3초 대기
time.sleep(3)
print("✅ 스크립트 실행 완료!")
finally:
# 중요: 이는 "Selenium 연결"만 끊는 것입니다.
# Mbbrowser 환경 창은 계속 실행 상태로 유지됩니다.
# 브라우저를 완전히 닫으려면 /api/v1/browser/stop API를 호출하세요.
driver.quit()
if __name__ == "__main__":
start_browser()스크립트 실행:
bash
python start_selenium.py예상 출력 결과
⏳ Mbbrowser 핑거프린트 환경 시작 중...
✅ 환경이 시작되었습니다. 원격 디버깅 주소: 127.0.0.1:9222
🎉 Selenium 제어 성공!
📄 현재 페이지 타이틀: MBBrowser 안티 디텍션 브라우저 - 다계정 솔루션
✅ 스크립트 실행 완료!코드 분석
1. ApiServer를 호출하여 환경 시작
python
response = requests.post(
f"{API_URL}/api/v1/browser/start",
json={"Session_ID": SESSION_ID}
)- 이 단계는 Mbbrowser에 "Session_ID가
XXX인 핑거프린트 환경을 열어줘"라고 요청하는 것입니다. - 요청을 받으면 ApiServer는 해당 크롬 인스턴스를 시작하고 원격 디버깅 포트를 엽니다.
2. debuggerAddress 추출
python
debugger_address = data["data"]["http"] # 예: 127.0.0.1:9222http필드의 정보는 크롬의 원격 디버깅 포트 주소(보통127.0.0.1:포트번호)입니다.- 각 Mbbrowser 환경은 고유한 포트 번호를 자동으로 배정받으므로, 여러 환경을 동시에 실행해도 충돌이 발생하지 않습니다.
3. debuggerAddress를 설정하여 제어권 획득 (가장 중요한 단계!)
python
chrome_options.add_experimental_option("debuggerAddress", debugger_address)
driver = webdriver.Chrome(options=chrome_options)이것이 Mbbrowser Selenium 자동화와 일반 Selenium의 결정적인 차이점입니다.
| 동작 | 일반 Selenium | Mbbrowser Selenium |
|---|---|---|
| 드라이버 생성 | 비어 있는 새 크롬 창을 시작함 | 제어 포트에 접속하여 기존 Mbbrowser 브라우저를 인수함 |
| 핑거프린트 | 없음 (기본 상태) | 완벽한 핑거프린트 적용 (UA, Canvas, WebGL, IP 등) |
| 쿠키 상태 | 비어 있음 (재로그인 필요) | 기존 로그인 상태 유지 (로그인 기록이 있는 경우) |
4. 실행 후 처리
python
driver.quit() # Selenium 제어 연결을 끊음 (Mbbrowser 창은 유지됨)NOTE
driver.quit()은 브라우저와 Selenium 사이의 제어 통로만 닫을 뿐, Mbbrowser 창 자체를 닫지는 않습니다.
브라우저를 완전히 종료하려면 다음을 호출해야 합니다:
python
requests.post(f"{API_URL}/api/v1/browser/stop", json={"Session_ID": SESSION_ID})문제 해결 (Troubleshooting)
❓ 오류: Cannot connect to the Service
원인: chromedriver.exe 버전이 Mbbrowser 커널 버전과 맞지 않습니다.
해결 방법:
- Mbbrowser 디렉토리에 포함된
chromedriver.exe를 사용하고Service에서 그 경로를 지정하십시오. - 혹은
DRIVER_PATH설정을 제거(None으로 설정)하여 Selenium Manager가 자동으로 해결하게 하십시오.
❓ 오류: ConnectionError: Cannot connect to ApiServer
원인: ApiServer가 실행 중이 아니거나 포트가 점유되었습니다.
해결 방법:
- ApiServer 터미널 창이 계속 켜져 있는지 확인하십시오.
API_URL의 포트가--port매개변수와 일치하는지 확인하십시오.- 방화벽이 8186 포트를 차단하고 있는지 확인하십시오.
❓ 오류: code != 0: 환경 시작 실패
원인: Session_ID가 틀렸거나 해당 환경이 이미 실행 중입니다.
해결 방법:
- Mbbrowser에서 정확한 Session_ID를 복사했는지 확인하십시오.
- 환경이 이미 켜져 있다면, 정지 Interface를 호출한 후 다시 시도해 보십시오.
❓ 브라우저는 열리는데 로그인 상태가 아닙니다.
원인: 해당 환경을 처음 열었거나 로그인을 한 적이 없어 쿠키가 비어 있는 상태입니다.
해결 방법: 이는 정상입니다. 다음으로 핵심 API 레퍼런스를 읽고 쿠키를 주입하거나 로그인을 자동화하는 방법을 배우십시오.
TIP
스크립트가 잘 작동하나요? 다음 장 핵심 API 레퍼런스에서는 요소 찾기, 입력, 클릭, 대기, 스크린샷 등 Selenium을 이용한 더욱 복잡한 조작법을 배우게 됩니다.
