
- [남군]빛고을한량
- 0
- 26
- 0
- 0
- 2025-05-22 15:53:24
/**
* 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: 동기화 비활성화
이러한 인자들은 상황에 따라 선택적으로 사용하시면 됩니다. 모든 인자를 사용할 필요는 없으며, 필요한 기능에 따라 적절한 인자만 선택하여 사용하시면 됩니다.
*/