CentOS7 센토스가 머임
Puppeteer 브라우저 옵션 가이드

/**
* Puppeteer 브라우저 옵션 가이드
 */

// 1. 기본 옵션
const basicOptions = {
    headless: false,  // 브라우저 UI 표시 여부
    defaultViewport: {  // 기본 뷰포트 설정
     width: 1080,
     height: 1024
    }
};

// 2. 주요 옵션들
const mainOptions = {
    // 헤드리스 모드 설정
    headless: false,  // true: 헤드리스 모드, false: UI 표시, "new": 새로운 헤드리스 모드
    // 뷰포트 설정
    defaultViewport: {
        width: 1080,
        height: 1024,
        deviceScaleFactor: 1,
        isMobile: false,  //모바일 여부
        hasTouch: false   //터치 지원 여부부
    },

    // Chrome 실행 인자
    args: [
        '--no-sandbox',                    // 샌드박스 비활성화 (보안 제한 완화)
        '--disable-setuid-sandbox',        // setuid 샌드박스 비활성화
        '--disable-dev-shm-usage',         // 공유 메모리 사용 비활성화 (Docker 환경에서 유용)
        '--disable-accelerated-2d-canvas', // 2D 캔버스 가속 비활성화
        '--disable-gpu',                   // GPU 하드웨어 가속 비활성화
        '--disable-web-security',          // 웹 보안 비활성화 (CORS 등)
        '--disable-features=IsolateOrigins,site-per-process', // 사이트 격리 비활성화
        '--disable-site-isolation-trials', // 사이트 격리 시도 비활성화
        '--disable-blink-features=AutomationControlled', // 자동화 감지 비활성화
        '--window-size=1920,1080',         // 브라우저 창 크기 설정
        '--start-maximized',               // 브라우저 최대화 상태로 시작
        '--incognito',                     // 시크릿 모드로 실행
        '--disable-notifications',         // 알림 비활성화
        '--disable-extensions',            // 확장 프로그램 비활성화
        '--disable-popup-blocking',        // 팝업 차단 비활성화
        '--disable-infobars',              // 정보 표시줄 비활성화
        '--disable-blink-features=AutomationControlled', // 자동화 감지 비활성화
        '--no-first-run',                  // 첫 실행 설정 건너뛰기
        '--no-default-browser-check',      // 기본 브라우저 확인 건너뛰기
        '--password-store=basic',          // 기본 비밀번호 저장소 사용
        '--use-mock-keychain',             // 모의 키체인 사용
        '--disable-background-timer-throttling', // 백그라운드 타이머 스로틀링 비활성화
        '--disable-backgrounding-occluded-windows', // 백그라운드 창 제한 비활성화
        '--disable-renderer-backgrounding', // 렌더러 백그라운드 처리 비활성화
        '--disable-breakpad',              // 크래시 보고 비활성화
        '--disable-component-extensions-with-background-pages', // 백그라운드 페이지가 있는 확장 프로그램 비활성화
        '--disable-default-apps',          // 기본 앱 비활성화
        '--disable-hang-monitor',          // 응답 없음 모니터 비활성화
        '--disable-prompt-on-repost',      // 재전송 시 프롬프트 비활성화
        '--disable-sync',                  // 동기화 비활성화
        '--metrics-recording-only',        // 메트릭만 기록
        '--no-experiments',                // 실험 기능 비활성화
        '--safebrowsing-disable-auto-update' // 안전 브라우징 자동 업데이트 비활성화|
    ],   

    ignoreHTTPSErrors: true,  // HTTPS 오류 무시
    timeout: 30000,  // 브라우저 시작 타임아웃 (밀리초)
    executablePath: '',  // Chrome 실행 파일 경로
    userDataDir: '',  // 사용자 데이터 디렉토리
    devtools: false  // DevTools 자동 열기 여부
};

 

// 3. 성능 관련 옵션
const performanceOptions = {
    ignoreDefaultArgs: ['--enable-automation'],  // 자동화 감지 방지
    slowMo: 250,  // 각 동작 사이 지연 시간 (밀리초)
    timeout: 30000  // 타임아웃 설정
};

// 4. 프록시 설정
const proxyOptions = {
    args: [
        '--proxy-server=socks5://127.0.0.1:9050'
    ]
};

 

// 5. 사용자 에이전트 설정 예제
const userAgentExample = async (page) => {
    await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
};

 

// 사용 예시
const example = async () => {
    const browser = await puppeteer.launch({
        ...basicOptions,
        ...mainOptions,
        ...performanceOptions
    });

   const page = await browser.newPage();
    await userAgentExample(page);

   // 작업 수행
    await browser.close();
};


export {
    basicOptions,
    mainOptions,
    performanceOptions,
    proxyOptions,
    userAgentExample,
    example
};

 

/**

 * Chrome 실행 인자에 대한 상세한 설명을 추가했습니다. 각 인자는 다음과 같은 카테고리로 구분됩니다:

보안 관련:

--no-sandbox, --disable-setuid-sandbox: 샌드박스 보안 제한 완화

--disable-web-security: CORS 등 웹 보안 비활성화

성능 관련:

--disable-gpu: GPU 가속 비활성화

--disable-accelerated-2d-canvas: 2D 캔버스 가속 비활성화

--disable-background-timer-throttling: 백그라운드 타이머 제한 해제

자동화 관련:

--disable-blink-features=AutomationControlled: 자동화 감지 방지

--disable-features=IsolateOrigins,site-per-process: 사이트 격리 비활성화

UI/UX 관련:

--window-size=1920,1080: 창 크기 설정

--start-maximized: 최대화 상태로 시작

--incognito: 시크릿 모드

--disable-notifications: 알림 비활성화

시스템 관련:

--disable-dev-shm-usage: 공유 메모리 사용 제한 (Docker 환경에서 유용)

--disable-extensions: 확장 프로그램 비활성화

--disable-sync: 동기화 비활성화

이러한 인자들은 상황에 따라 선택적으로 사용하시면 됩니다. 모든 인자를 사용할 필요는 없으며, 필요한 기능에 따라 적절한 인자만 선택하여 사용하시면 됩니다.

 */

첨부파일
Comments
비밀글