최종 업데이트: 2026년 10월 30일.

Playwright에서 주거형 프록시를 사용하는 방법

이미 주거형 프록시가 있다면 Playwright에 연결하는 데 필요한 설정은 몇 가지뿐입니다. 프록시 서버, 포트, 인증 정보입니다. 자주 헬갈리는 부분은 무엇이 실제로 동작했는지 확인하는 일입니다. 프록시 설정이 틀려도 브라우저는 실행될 수 있고, 프록시는 연결되었는데도 사이트가 오류나 채린지 페이지를 반환할 수 있습니다.

이 가이드는 KindProxy 대시보드에 표시된 HTTP/HTTPS 로테이팅 주거형 구성을 사용하는 전체 Python 설정을 안내합니다. 짧은 Node.js 예시도 포함하며, 연결·출구 IP·위치·페이지 응답을 각각 어떻게 검증하는지 보여 줍니다.

1. Playwright 설치

Python 환경을 만들고 Playwright를 설치한 뒤 Chromium을 다운로드합니다.

python -m venv .venv
source .venv/bin/activate
python -m pip install playwright
python -m playwright install chromium
sudo .venv/bin/playwright install-deps chromium

마지막 명령은 Chromium의 Linux 시스템 라이브러리를 설치합니다. sudo가 필요합니다. 없으면 Chromium이 실행 시 libatk-1.0.so.0 같은 누락 라이브러리 오류로 종료될 수 있습니다. 다른 지원 배포판은 Playwright의 Linux 브라우저 의존성 안내 를 참고하세요.

Windows PowerShell에서는 다음과 같이 환경을 활성화합니다.

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install playwright
python -m playwright install chromium

추가 설치 옵션은 Playwright Python 시작 가이드 를 참고하세요.

2. KindProxy에서 프록시 설정 가져오기

KindProxy 트래픽 프록시 대시보드 에 로그인한 뒤 HTTP/HTTPS를 선택하고, 위치와 세션 옵션을 고른 다음 생성된 설정을 복사하세요.

KindProxy 트래픽 프록시 설정. 인증, 위치 타기팅, 프로토콜, 호스트 유형, 포트, 세션 옵션을 표시합니다. 자격 증명은 가려져 있습니다.

스크린쇷은 이 가이드에서 사용하는 HTTP/HTTPS 설정입니다. 자격 증명은 가려져 있습니다.

아래 예시는 대시보드의 다음 설정을 사용합니다.

설정이 가이드의 예시Playwright에서의 위치
프로토콜HTTP/HTTPSserver URL은 대시보드가 보여 주는 http:// 스킴을 사용합니다.
호스트 유형DNS 호스트 이름제공된 게이트웨이 호스트 이름을 사용합니다.
호스트와 포트gw.kindproxy.com:12000server를 http://gw.kindproxy.com:12000으로 설정합니다.
인증사용자 이름/비밀번호생성된 사용자 이름과 비밀번호를 별도 필드로 전달합니다.
세션 유형로테이팅 IP출구 동작은 대시보드에서 선택한 세션 옵션을 따랍니다.
위치선택한 경우 국가, 주, 도시 또는 ASN생성된 사용자 이름을 그대로 복사하고, 타기팅 필드를 손으로 만들거나 편집하지 마세요.

대시보드의 사용자 이름에는 선택한 위치 설정이 포함될 수 있습니다. 표시된 라벨로 다시 만들지 말고, 생성된 전체 값을 복사하세요. 주요 HTTP 예시는 사용자 이름/비밀번호 인증입니다. IP 허용 목록을 대신 선택했다면 해당 별도 인증 방법에 대한 대시보드 안내를 따르세요.

Playwright는 SOCKS 프록시 URL을 지원하지만, 테스트에서 Chromium은 사용자 이름/비밀번호 인증으로 KindProxy SOCKS5 엔드포인트에 연결하지 못했습니다. 따라서 이 가이드는 검증된 HTTP/HTTPS 프록시 설정에 초점을 둡니다. Playwright 프록시 구성 옵션에 대한 자세한 내용은 Playwright 네트워크 문서 를 참고하세요.

위치나 세션 유형을 고르기 전에 사용 가능한 KindProxy 주거형 프록시 옵션 을 비교할 수 있습니다.

Playwright 프로젝트용 주거형 프록시가 필요하신가요?

KindProxy 주거형 프록시 요금제 에서 트래픽 패키지, 위치, 세션 옵션을 비교해 보세요. 작은 트래픽 패키지로 시작해 프로젝트가 커지면 확장할 수 있습니다.

3. 자격 증명을 스크립트 밖에 저장하기

프록시 세부 정보를 환경 변수로 설정하세요. 이렇게 하면 자격 증명이 Python 파일에 들어가지 않고, 개발과 운영에서 서로 다른 프록시 설정을 쓰기 쉬워집니다.

macOS 또는 Linux:

export PROXY_SERVER="http://gw.kindproxy.com:12000"
export PROXY_USERNAME="paste-the-generated-username"
export PROXY_PASSWORD="paste-your-proxy-password"

Windows PowerShell:

$env:PROXY_SERVER = "http://gw.kindproxy.com:12000"
$env:PROXY_USERNAME = "paste-the-generated-username"
$env:PROXY_PASSWORD = "paste-your-proxy-password"

사용자 이름과 비밀번호 자리 표시자를 대시보드에서 복사한 값으로 바꾸세요. 실제 자격 증명을 Git에 커밋하거나 스크린쇷·지원 요청에 붙여 넣지 마세요.

4. 전체 Python 연결 확인 실행하기

다음 내용을 check_proxy.py로 저장하세요.

import asyncio
import os

from playwright.async_api import async_playwright


async def main():
    proxy_server = os.getenv(
        "PROXY_SERVER",
        "http://gw.kindproxy.com:12000",
    )
    proxy_username = os.getenv("PROXY_USERNAME")
    proxy_password = os.getenv("PROXY_PASSWORD")

    if not proxy_username:
        raise ValueError(
            "Please set PROXY_USERNAME environment variable."
        )

    if not proxy_password:
        raise ValueError(
            "Please set PROXY_PASSWORD environment variable."
        )

    proxy = {
        "server": proxy_server,
        "username": proxy_username,
        "password": proxy_password,
    }

    async with async_playwright() as playwright:
        browser = await playwright.chromium.launch(proxy=proxy)
        try:
            page = await browser.new_page()
            response = await page.goto(
                "https://api.ipify.org?format=json",
                wait_until="domcontentloaded",
                timeout=60_000,
            )

            print(
                "HTTP status:",
                response.status if response else "No response",
            )
            print(
                "IP check response:",
                await page.locator("body").inner_text(),
            )
        finally:
            await browser.close()


asyncio.run(main())

환경 변수를 설정한 것과 같은 터미널에서 실행합니다.

python check_proxy.py

스크립트는 게이트웨이 URL과 자격 증명을 별도 필드로 Playwright에 전달합니다. URL의 http:// 접두사는 프록시 연결 프로토콜을 나타냅니다. 여는 페이지는 HTTPS입니다. 이 예의 탐색 제한 시간은 느린 응답을 위해 60초로 설정되어 있습니다. 대상 페이지와 네트워크 상태에 맞게 조정할 수 있습니다.

공식 Playwright 네트워크 문서 를 참고하세요.

5. IP, 위치, 대상 페이지를 각각 확인하기

이를 하나의 통과/실패가 아니라 세 가지 별도 확인으로 다루세요.

확인성공의 모습알려 주는 것
프록시 연결IP 확인 페이지가 로드되고 IP 주소를 반환합니다.Playwright가 동작하는 경로를 통해 확인 페이지에 도달했습니다.
출구 IP와 위치반환된 IP가 직접 연결과 다르고, 보고된 위치가 작업에 충분할 만큼 선택과 일치합니다.프록시 출구와 대략적인 지리가 예상과 같습니다. 위치 데이터베이스는 정확히 일치하지 않을 수 있습니다.
대상 페이지대상 페이지가 워크플로에서 기대하는 콘텐츠를 반환합니다.목적지가 이 요청을 수락하고 사용 가능한 콘텐츠를 반환했습니다.

Linux 구성 테스트 결과

Ubuntu에서 Playwright 1.52.0과 Chromium은 위의 HTTP 프록시 구성으로 IP 확인 페이지를 열고 출구 IP와 함께 HTTP 200을 받았습니다. 이는 테스트한 사용자 이름/비밀번호 설정이 해당 실행에서 동작했음을 확인합니다. 결과는 엔드포인트, 위치, 네트워크 조건에 따라 달라질 수 있습니다.

IP 확인 페이지의 HTTP 200 응답은 다른 웹사이트가 일반 페이지를 반환한다는 증명이 아닙니다. 마찬가지로 IP 확인 결과는 보이는 출구 주소를 확인할 뿐, 모든 지오로케이션 데이터베이스의 정확성을 보장하지 않습니다. 위치가 중요하다면 둘 이상의 위치 신호를 비교하거나 직접 관리하는 페이지로 검증하세요.

6. Node.js 버전

동일한 프록시 설정을 Node.js의 Chromium에도 전달할 수 있습니다. npm install playwright로 Playwright를 설치한 뒤 npx playwright install chromium으로 Chromium을 설치하세요.

const { chromium } = require("playwright");

(async () => {
  const proxyServer =
    process.env.PROXY_SERVER || "http://gw.kindproxy.com:12000";
  const proxyUsername = process.env.PROXY_USERNAME;
  const proxyPassword = process.env.PROXY_PASSWORD;

  if (!proxyUsername) {
    throw new Error("Please set PROXY_USERNAME environment variable.");
  }

  if (!proxyPassword) {
    throw new Error("Please set PROXY_PASSWORD environment variable.");
  }

  const browser = await chromium.launch({
    proxy: {
      server: proxyServer,
      username: proxyUsername,
      password: proxyPassword,
    },
  });

  try {
    const page = await browser.newPage();
    const response = await page.goto("https://api.ipify.org?format=json", {
      waitUntil: "domcontentloaded",
      timeout: 60_000,
    });

    console.log(
      "HTTP status:",
      response ? response.status() : "No response"
    );
    console.log(
      "IP check response:",
      await page.locator("body").innerText()
    );
  } finally {
    await browser.close();
  }
})();

Python 예시와 마찬가지로 스크립트를 실행하기 전에 환경에 PROXY_SERVER, PROXY_USERNAME, PROXY_PASSWORD를 설정하세요. 예시는 60초 탐색 제한 시간을 사용합니다. 대상 페이지 응답 시간에 따라 늘리거나 줄이세요.

7. 흔한 오류와 확인할 사항

증상먼저 확인할 것
브라우저가 프록시 인증 오류 또는 HTTP 407을 보고함생성된 전체 사용자 이름과 비밀번호를 확인하고, 대시보드가 사용자 이름/비밀번호 인증인지 확인합니다.
브라우저 실행 또는 탐색이 시간 초과됨호스트, 포트, 프로토콜, 네트워크 접근, Playwright를 실행하는 머신에서 엔드포인트에 도달 가능한지 확인합니다.
느린 페이지가 반복적으로 탐색 시간 초과에 도달함예: timeout=60_000처럼 탐색 제한 시간을 늘리는 것을 고려합니다. 프록시 연결성, 네트워크 상태, 대상 서버 응답도 확인합니다. 더 긴 제한 시간은 도달 불가 프록시나 무응답 목적지를 고치지 않습니다.
Python이 PROXY_USERNAME 또는 PROXY_PASSWORD가 없다고 보고함스크립트를 실행하는 것과 같은 터미널 또는 프로세스에서 필요한 환경 변수를 설정합니다.
IP 확인은 로드되지만 위치가 예상과 다름국가, 주, 도시 또는 ASN 선택과 생성된 사용자 이름을 다시 확인합니다. 지오로케이션 서비스는 다른 결과를 보고할 수 있습니다.
IP 확인은 되지만 대상 페이지가 실패함대상 응답을 별도로 조사합니다. 프록시가 연결되어 있어도 목적지가 오류, 채린지 또는 불완전한 페이지를 반환할 수 있습니다.
여러 페이지 흐름의 요청이 서로 다른 IP에서 보임선택한 세션 유형이 로테이팅인지 확인합니다. 워크플로에 맞는 세션 모드를 쓰고 생성된 대시보드 설정을 따르세요.

프록시 연결만 진단하려고 스텔스 패키지를 추가하거나 브라우저 지문을 바꾸지 마세요. 먼저 프록시 필드, IP 확인 응답, 대상 페이지 응답을 독립적으로 검증하세요. 일련의 요청에서 안정적인 출구가 필요하면 로테이팅 프록시와 세션 작동 방식 을 검토하고 작업에 맞는 세션 옵션을 선택하세요.

FAQ

Playwright Python에서 주거형 프록시를 사용할 수 있나요?

네. 프록시 서버, 사용자 이름, 비밀번호를 chromium.launch()에 전달하거나 브라우저 컨텍스트 수준에서 프록시를 구성하세요. 제공업체가 생성한 엔드포인트와 자격 증명을 그대로 사용하세요.

프록시 URL이 http://로 시작해야 하나요?

프록시 대시보드가 제공하는 스킴과 주소 형식을 사용하세요. 여기에 표시된 KindProxy HTTP/HTTPS 구성에서는 http://gw.kindproxy.com:12000을 사용합니다. 이는 프록시로의 연결을 나타냅니다. 여는 페이지는 여전히 HTTPS일 수 있습니다.

대상 웹사이트가 여전히 CAPTCHA를 표시하는 이유는 무엇인가요?

프록시는 네트워크 경로와 출구 IP를 제공합니다. 응답에 대한 결정은 웹사이트가 내립니다. CAPTCHA나 오류 페이지는 해당 요청에 대해 대상이 기대 콘텐츠를 반환하지 않았다는 뜻이며, 그 자체로 프록시 연결 실패를 의미하지는 않습니다.

더 읽어보기

Playwright에서 주거형 프록시를 사용할 준비가 되셨나요?

이제 Playwright에서 주거형 프록시를 구성하고 테스트하는 방법을 알았으니, 프로젝트에 맞는 프록시 요금제를 선택할 수 있습니다.

KindProxy는 유연한 트래픽 기반 요금, 글로벌 위치 타기팅, 로테이팅 또는 스티키 세션을 갖춘 주거형 프록시를 제공합니다. 필요한 트래픽부터 시작해 자동화 또는 데이터 수집 작업량이 늘면 확장하세요.

KindProxy 주거형 프록시 요금제 살펴보기