AI를 활용한 공학적 연구 방법론
Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)
AI를 활용한 공학적 연구 방법론

브라우저 기반
데이터 탐색

Session 2 / 8

Chrome DevTools · Elements · Network · Console · 데이터 위치 찾기

박수현 · aSSIST University · 2026

🎨 이미지 프롬프트(배경): "A modern browser window with developer tools open, showing network requests and DOM tree, glowing teal and purple highlights, clean editorial illustration, 16:9, no text"

LLM · API · 웹스크래핑 기반 연구 데이터 파이프라인
AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

이번 시간을 마치면

개념적으로

  • DevTools (개발자 도구) 5대 패널의 역할을 구분한다
  • ✅ Elements 탭에서 DOM (브라우저가 그린 HTML 트리) 구조를 빠르게 탐색한다
  • ✅ Network 탭에서 JSON API (서버와 데이터를 주고받는 비공개 통로) 트래픽을 식별한다
  • ✅ Console 에서 선택자 (CSS·XPath 로 요소를 가리키는 표현) 를 실시간 검증한다
  • ✅ Application 에서 쿠키 (브라우저가 저장하는 세션 정보) · 로컬스토리지 (브라우저 영구 저장소) 를 읽는다

실습으로

  • ✅ books.toscrape 에서 선택자 5종을 직접 발굴
  • ✅ 네이버 금융 JSON 트래픽 사냥 라이브 데모
  • Copy as cURL → Python 변환
  • ✅ 동적 vs 정적 사이트 현장 판별 3건

📖 도서 매핑: Ch.3 §3 + 보강

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

DevTools 우선 학습 — 코드 작성 전 페이지 분석

🔍 핵심 원칙

데이터의 위치·형태·접근 방법 을 먼저 확인한 뒤 코드를 작성한다.
DevTools = 데이터 위치 탐색기

데이터 구조를 모르고 코드부터 쓰면 → 이틀 헤맨 후 처음으로 돌아옴.

🎯 DevTools 가 답해주는 4가지

  1. 데이터가 HTML 에 있나, JSON 에 있나
  2. 어떤 CSS 선택자 로 잡으면 되나
  3. 서버가 어떤 헤더·쿠키 를 요구하나
  4. 페이지를 언제 채우나 (즉시 vs JS 실행 후)

📖 도서 참조: Ch.3 §3 — "F12, 한 번 누르고 평생 쓴다"

DevTools Inspector

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

DevTools 5대 패널

패널 보조 단축키 핵심 용도 스크래퍼 활용
Elements F12 → 클릭 (요소 선택기 = Ctrl+Shift+C / macOS Cmd+Shift+C) 라이브 DOM 탐색 선택자 발굴
Console Ctrl+Shift+J (Win/Linux) / Cmd+Opt+J (macOS) JS 실행·로그 선택자 검증
Network 패널 안에서 Ctrl+R = 캡처 + 새로고침 모든 통신 캡처 JSON API 추적
Sources 패널 안에서 Ctrl+P = 파일 검색 JS 코드·중단점 로직 역공학
Application 저장소·쿠키 세션·로그인 분석

📌 Ctrl+Shift+C 는 「요소 선택기」 단축키 (Elements 패널 단축키가 아니라 마우스로 페이지의 요소를 클릭해 즉시 점프하는 모드)

🎯 사용 빈도

스크래퍼 입장 8:2 비율 — Network + Elements 가 80%, 나머지가 20%.

PART A

Elements
실시간 DOM 트리

"마우스로 페이지를 가리키면 코드가 점프한다"

키워드: 요소 선택기 · Computed · 검사 · 편집

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

F12 가 열린 books.toscrape

📺 좌측 — 페이지

books.toscrape 메인

평소 보이는 화면. 책 카드 20개가 격자로 배치.

🛠️ 우측 — F12 열린 모습

books.toscrape DevTools

같은 페이지의 DOM 트리.
페이지의 모든 데이터가 여기 어딘가에.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

요소 선택기 — 화면 클릭으로 HTML 위치 추적

🪜 사용 절차

  1. F12 열기
  2. 좌상단 ↖️ 요소 선택기 클릭
    (또는 Ctrl+Shift+C)
  3. 페이지에서 궁금한 부분 클릭
  4. Elements 패널이 해당 라인으로 자동 점프
  5. 우측 사이드바에 CSS·박스모델·이벤트 표시

🎯 무엇을 보나

  • 태그명: article div span?
  • class·id: 어느 클래스에 속해 있나?
  • 부모 체인: 위로 올라가면 반복 컨테이너?

💡 페이지에 처음 접근하는 모든 작업의 0번 단계.

상품 카드 한 개를 검사한 모습

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

DOM 부모–자식 체인 분석 — 책 카드 1개 사례

🌲 책 카드 트리 — 도서 캡처

🔑 읽는 법

article.product_pod         ← 카드 단위
├ div.image_container
│ └ a > img.thumbnail        ← 썸네일
├ p.star-rating .Three        ← 별점 (클래스로!)
├ h3
│ └ a [title="..."]           ← 책 제목
├ div.product_price
│ ├ p.price_color             ← £가격
│ └ p.instock.availability    ← 재고

부모(article.product_pod) → 자식(h3 > a) 체인이 그대로 CSS 선택자.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

우클릭 Copy — 6개 항목

요소 위에서 우클릭 → Copy 하면 즉시 쓸 수 있는 6가지.

항목 결과 스크래퍼 용도
Copy selector div.foo > a:nth-child(2) BS4 select() 즉시 사용
Copy XPath //*[@id="x"]/a[2] Selenium XPath
Copy outerHTML <a class="..">...</a> (요소 자체 포함) 구조 분석·LLM에 입력
Copy element outerHTML 통째 (Chrome 메뉴 명칭) 빠른 복붙 — outerHTML 과 동일
Copy JS path document.querySelector(...) 콘솔에서 검증
Edit as HTML 인라인 편집 가설 테스트

📌 outerHTML = 요소 자체 + 안쪽 모두 / innerHTML = 요소 안쪽만. Chrome 의 "Copy element" 는 outerHTML 과 같은 결과.

⚠️ Copy selector 가 너무 길면 부서지기 쉽다. 사람이 짧게 다듬어 쓰기.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

$$ 와 $ — 콘솔의 단축 함수

💻 Chrome 콘솔 내장 함수

  • $(selector) = document.querySelector(...) (첫 1개)
  • $$(selector)document.querySelectorAll(...) (전체)
    Chrome 의 $$ 는 결과를 NodeList 가 아닌 Array 로 반환.map() · .filter() 바로 사용 가능
  • $0 = Elements 에서 선택된 요소
  • copy(value) = 클립보드 복사

🧪 books.toscrape 콘솔에서

$$("article.product_pod").length
// → 20

$("article.product_pod h3 a").innerText
// → "A Light in the ..."

$$(".price_color").length        // → 20
$0.outerHTML                     // → 방금 클릭한 요소
copy($$("a").length)             // → 클립보드로

🎯 작업 흐름

1) Elements 에서 선택 → 2) 콘솔에서 $0 으로 받아 검증 → 3) BS4 코드로 옮김

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3.2참고: examples/ch03/browser_devtools_exercise.md

미니 실습 — books.toscrape 선택자 발굴

실습 과제

F12 → Elements + Console 만 사용.
5개 데이터의 선택자를 종이에 적어 가져오세요.

# 데이터 힌트 검증
1 책 카드 1개 단위 article.____ $$(...).length === 20
2 책 제목 h3 atitle 속성 .innerText 또는 ["title"]
3 가격 클래스에 price text 에 £ 포함
4 별점 클래스에 star-rating 클래스 두 번째가 "One"~"Five"
5 다음 페이지 푸터 페이지네이션 href 속성

📌 정답은 다음 슬라이드 — 먼저 시도!

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

선택자 발굴 결과 — 검증 + 정답

📋 선택자 지도

데이터 선택자
책 카드 article.product_pod
책 제목 article.product_pod h3 a
가격 article.product_pod .price_color
별점 article.product_pod .star-rating
다음 li.next a

🧪 콘솔 한 줄 검증

$$("article.product_pod").length
// → 20

$$("article.product_pod h3 a")
  .map(a => a.title)
// → ["A Light in the ...", ...]

$$(".price_color")
  .map(p => p.innerText)
// → ["£51.77", "£53.74", ...]

$("li.next a").href
// → ".../page-2.html"

🎯 회차 3 미리보기

이 5개 선택자가 그대로 BeautifulSoup select() 인자로 들어갑니다.

PART B

Network
JSON API 추적

"동적 페이지의 실제 데이터는 여기 어딘가에 있다"

키워드: XHR/Fetch · 필터 · Headers · Preview · Copy as cURL

XHR = XMLHttpRequest, JS 가 만든 비동기 데이터 요청 / AJAX = 페이지 새로고침 없이 서버와 통신하는 방식 (XHR 또는 fetch 사용)

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

Network 탭 트래픽 캡처 — 4단계 절차

🪜 1) 캡처 시작

  • Network 탭 열기
  • 페이지 새로고침 (Ctrl+R)
  • 페이지가 로드되면서 발생하는 모든 요청이 시간순으로 표시
  • 이미지·CSS·JS·HTML·JSON API 전부 포함

⚙️ 2) 핵심 옵션 (상단 체크박스)

  • Preserve log — 페이지 이동해도 기록 유지 (필수)
  • Disable cache — 캐시된 응답 무시
  • 🔘 Throttling — 느린 네트워크 시뮬레이션

🔍 3) 필터로 좁히기

  • Fetch/XHR → JS 가 만든 비동기 요청만 (AJAX)
  • Doc → HTML 본체만
  • 검색창 → URL 일부 (api, json)
  • Throttling = 네트워크 속도를 일부러 늦춰 모바일 환경 시뮬레이션
AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

동적 페이지의 Network 패턴 — XHR / Fetch 신호

📺 페이지 (보이는 화면)

평범한 시세 페이지. 사용자에겐 한 화면.

🛠️ DevTools (숨은 트래픽)

같은 페이지에서 수십 개의 요청.
Fetch/XHR 필터로 좁히면 데이터 전송용 요청만 남는다.

🔑 보이는 한 화면 뒤에 여러 개의 JSON API가 숨어 있을 수 있다.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

Network 요청 행 6열 — Status / Type / Size 등

의미 스크래퍼 시점
Name URL 끝 부분 path 패턴 단서
Status 200 OK = 정상 / 304 = 캐시 그대로 / 404 = 없음 정상 응답인지
Type xhr·fetch = 비동기 데이터 / document = HTML / image = 그림 xhr/fetch = 데이터 후보
Initiator 어느 코드가 호출했나 스크립트 추적
Size 응답 크기 큰 거 = 본 데이터
Time 응답 시간 병목 분석

클릭하면 펼쳐지는 5개 서브 탭

  • Headers — 요청·응답 헤더 전체
  • Payload — POST 바디 (JSON / form)
  • Preview — 응답 미리보기 (JSON 트리뷰)
  • Response — 응답 raw
  • Cookies — 쿠키 정보
AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

JSON 응답 식별 4신호 — XHR·Content-Type·미리보기·크기

🚦 신호 1·2 — Type / Name

  • xhr 또는 fetch → JS 가 동적으로 호출
  • 거의 100% JSON·XML 응답
  • Name 의 단서:
    /api/, /v1/, .json, ?format=json
    ?_=1714512000 (캐시버스터 — 같은 URL 을 매번 새로 받기 위해 붙이는 더미 파라미터)

🚦 신호 3·4 — Size / Preview

  • Size 100B 이하 → 단순 ping(살아있는지 확인) 또는 빈 응답일 가능성
  • 1KB~수십KB = 실제 데이터일 확률 ↑
  • Preview 가 트리뷰 = JSON 확정
  • 응답 헤더 Content-Type: application/json (서버가 "이건 JSON" 이라고 알려주는 표시)
Preview 트리 (이상적):
data ▾
  items ▾ (length: 20)
    [0] ▾
      name: "갤럭시 S24"
      price: 1390000
      stock: 12
    [1] ▾ ...

🎯 Preview 가 JSON 트리 = 빙고. 다음 슬라이드의 Copy as cURL 로 바로 추출 가능.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

요청 통째 복사 → Python 한 줄 변환

🪜 절차

  1. Network 의 JSON 요청 우클릭
  2. Copy → Copy as cURL (bash)
  3. 클립보드에 명령 들어감
  4. https://curlconverter.com 에 붙여넣기
  5. Python requests 코드 자동 생성
  6. 필요한 헤더만 남기고 정리

📄 cURL 예 (예시 URL — 실제 호출은 사이트 상황에 따라 다름)

curl 'https://finance.naver.com/item/main.naver?code=005930' \
  -H 'User-Agent: Mozilla/5.0 ... Chrome/120.0' \
  -H 'Accept: text/html,application/xhtml+xml' \
  -H 'Cookie: NID_AUT=...; NID_SES=...' \
  -H 'Referer: https://finance.naver.com/'
# curlconverter 가 만들어주는 코드 (예시)
import requests
headers = {
    "User-Agent": "Mozilla/5.0 ... Chrome/120.0",
    "Accept": "text/html,application/xhtml+xml",
    "Referer": "https://finance.naver.com/",
}
r = requests.get("https://finance.naver.com/item/main.naver?code=005930", headers=headers)
print(r.text[:500])

⚠️ 위 URL 은 형식 예시. 실제로는 본인이 F12 Network 에서 캡처한 실제 엔드포인트를 그대로 복사해서 사용 (도메인/경로가 시기마다 바뀜).

🎯 회차 6 의 로그인 분석에 이 기법 필수.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

Headers 탭 4개 섹션

General           — URL · Method · Status · Remote Address
Response Headers  — 서버가 보낸 헤더
Request Headers   — 브라우저가 보낸 헤더
Query/Form Params — 파싱된 파라미터

스크래퍼가 챙겨야 할 헤더 — TOP 5

헤더 왜 필요?
User-Agent 기본 python-requests/... 가 차단되어 403 자주 — Chrome UA 로 위장
Cookie 서버가 발급한 세션 ID — 로그인 상태 유지
Referer 직전 페이지 URL — 핫링크 차단·CSRF 방어 검사용
X-Requested-With: XMLHttpRequest 브라우저 JS 가 보내는 표식 → 서버가 "AJAX 요청이구나" 인식
Authorization API 인증 토큰 (Bearer / API Key)

📌 응답 헤더의 Content-Type: application/json 은 JSON 임을 확정 짓는 도장.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

JSON 구조를 트리로 보기

🌳 Preview 탭의 강점

  • 깊은 중첩 JSON 도 접고 펼치며 탐색
  • 필요한 키 경로를 눈으로 확인 후 코드로
  • 배열 length 즉시 표시

💻 Python 으로 옮기면

r = requests.get(url, headers=headers)
data = r.json()

for item in data["items"]:
    print(item["name"], item["price"])

트리에서 본 키 경로 가 그대로 코드.

🎯 회차 5 미리보기

Preview 트리 → 코드 → DataFrame → 1초에 100건 수집.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

라이브 데모 — 숨은 JSON API 추적

데모 사이트

https://finance.naver.com/item/main.nhn?code=005930 (삼성전자)

시연 순서

  1. F12 → Network → Fetch/XHR
  2. 페이지 새로고침 → 발생하는 요청 캡처
  3. 큰 Size 의 JSON 응답 클릭
  4. Preview 에서 시세 트리 확인
  5. Copy as cURL → curlconverter 변환
  6. Python 으로 시세 데이터 한 줄로 가져오기

결과

  • 셀레니움 없이 → 100건 데이터 1초
  • HTML 파싱 없이 → 깨끗한 dict 리스트

⚠️ 시연 후 도덕적 주의 — 회차 4·7 윤리 파트 예고.

PART C

Application
쿠키와 저장소

로그인의 비밀이 여기에 있다

키워드: Cookies · LocalStorage · SessionStorage · IndexedDB

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

Application → Storage → Cookies

🍪 쿠키 한 줄에 담긴 것

컬럼 의미
Name NID_AUT, session_id
Value 보통 암호화된 토큰
Domain 어느 도메인의 쿠키인가
Path 어느 path 에서만 보내나
Expires Session = 브라우저 닫으면 끝
HttpOnly JS 접근 차단 (탈취된 JS 가 쿠키 못 읽음)
Secure HTTPS 연결에서만 전송 (HTTP 평문 노출 방지)
SameSite 다른 사이트가 사용자 권한을 도용해 요청하는 CSRF (Cross-Site Request Forgery) 공격 방지 정책

🔑 스크래퍼 입장

  • 로그인 후 발생한 쿠키 = 인증 토큰
  • 이 쿠키를 requests.get(..., cookies=...) 로 옮기면 로그인 우회
  • 회차 6 Selenium → 로그인 → 쿠키 추출 → requests 로 옮기는 패턴

📖 도서 참조: Ch.5 §3 — "세션과 쿠키, 그리고 그들의 사회생활"

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

LocalStorage / SessionStorage — 클라이언트 저장소

📊 차이

항목 LocalStorage SessionStorage
수명 영구 (사용자가 직접 지우거나 코드로 제거할 때까지) 탭 닫으면 끝
공유 같은 도메인의 모든 탭에서 공유 그 탭에서만 접근 가능
크기 ~5MB ~5MB
서버 자동 전송 ❌ (쿠키와 달리 자동으로 안 감)

📌 쿠키는 매 요청마다 자동으로 서버에 전송되지만, LocalStorage 는 그렇지 않음. 인증 토큰을 LocalStorage 에 두면 JS 가 매 요청마다 직접 헤더에 실어줘야 함 (Authorization: Bearer ...).

💻 콘솔로 즉시 확인

// 모든 키
Object.keys(localStorage)

// 특정 값
localStorage.getItem("auth_token")

// 전체 덤프
JSON.stringify(localStorage)

⚠️ 일부 사이트는 인증 토큰을 LocalStorage에 저장. 쿠키와 별개로 챙겨야 함.

PART D

처음 보는 사이트
현장 판별법

어떤 도구로 갈 것인가 — 시간을 아끼는 결정 트리

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

정·동적 페이지 판별 결정 트리 — 4단계

각 단계에서 「아니오」 면 ↓ 다음 단계로

1

Ctrl+U 소스에 원하는 데이터가 이미 있나?

✅ "있다" → requests + BS4가장 빠름·안정적 (회차 3)

2

Network Fetch/XHR 에 JSON 응답이 있나?

✅ "있다" → JSON API 직접 호출Copy as cURL → Python 변환 (회차 5)

3

로그인·캡차·쿠키가 필요한가?

⚠️ "예" → Selenium + 로그인본인 계정·약관 점검 필수 (회차 6)

4

위 3개가 모두 "아니오"

✅ Selenium / Playwright렌더 의존 페이지 자동화 (회차 6)

🔑 우선순위

JSON API > requests + BS4 > Selenium — 위에서부터 시도, 안 되면 한 단계 내려가기.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

"원본 HTML" vs "지금 화면의 DOM"

📜 Ctrl+U (View Source)

  • 서버가 처음 보낸 HTML 그대로
  • JS 실행 이전 상태
  • requests.get() 이 보는 것과 동일
  • 정적 사이트는 모든 데이터가 여기에

🛠️ F12 Elements

  • 현재 화면 DOM 의 라이브 상태
  • JS 실행 이후 결과
  • 셀레니움이 보는 것과 동일
  • 동적 사이트는 여기에만 데이터

판별 명제

원하는 데이터가 Ctrl+U 에 있다 → 정적 → requests 가능
Ctrl+U 엔 없는데 F12 엔 있다 → 동적 → JS 실행 필요

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

다음 사이트들을 판별하세요

사이트 Ctrl+U? Network XHR? 판정
books.toscrape.com ? ? ?
finance.naver.com/item/main.nhn?code=005930 ? ? ?
news.naver.com (메인) ? ? ?

채점 기준

  • 정적 = Ctrl+U 에 데이터 보임
  • API 동적 = Ctrl+U 에 없지만 XHR 에 JSON
  • 렌더 동적 = 둘 다 없고 JS 가 만듦

답 예 (참고)

  • books.toscrape → 정적 (requests OK)
  • 네이버 금융 → API 동적 + 일부 정적 (Copy as cURL)
  • 네이버 뉴스 → 혼합 (메인은 정적, 댓글은 API)
PART E

Sources & Performance
고급 패널

자주 쓰진 않지만 알면 빛나는 도구

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

Sources 탭의 4가지 활용

🗂️ 1·2 — 파일 트리 / Pretty Print

  • 좌측에 사이트가 로드한 모든 .js 파일 트리
  • Ctrl+P 로 파일명 검색 → 빠르게 점프
  • Pretty Print ({}) — 한 줄로 압축된 코드를 사람이 읽기 좋게 들여쓰기 복원

🔎 3·4 — 검색 / Breakpoint

  • Ctrl+Shift+F모든 JS 파일 텍스트 검색
  • 예: "api/v1" → 하드코딩된 API URL 발견
  • Breakpoint = 코드 실행을 멈춰 그 시점 변수를 들여다보는 표시. 라인 번호 클릭 → 실행이 그 줄에서 일시정지
  • 호출 스택 = 그 함수가 어디서부터 호출되어 들어왔는지 추적

🎯 활용 사례: "이 사이트가 어떤 API 호출하는지" 빠르게 파악할 때 api, fetch 단어 전역 검색.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

Sources / Performance — 알아두면 좋은 두 패널

⏱️ Performance

  • 페이지 로드 타임라인
  • JS 실행·페인팅·리소스 로드를 ms 단위로 시각화
  • 스크래퍼는 로드 완료 시점 추정에 활용
  • → Selenium wait 기준 설정

💡 Lighthouse

  • 페이지 품질 점수 (성능 · SEO · 접근성 · PWA = 앱처럼 동작하는 웹앱)
  • SEO 점수 ↑ → 시맨틱 HTML (의미 있는 태그를 쓴 HTML — 예: <h1>, <article>, <nav>) ↑ → 스크래핑 ↑
  • 100점짜리 사이트는 데이터 위치 예측 가능

📌 두 패널은 부가 정보. 주력은 Network + Elements.

PART F

DevTools
마무리

오늘 학습한 F12 5대 패널은 이후 실습에서 반복적으로 활용됩니다.

AI를 활용한 공학적 연구 방법론·Session 2 · 브라우저 기반 데이터 탐색 (DevTools 활용)출처: 바이브코딩 도서2Ch.3 §3 DevTools

오늘의 정리 7가지

  1. F12 5대 패널 — Elements / Console / Network / Sources / Application
  2. 요소 선택기 (Ctrl+Shift+C) → 마우스로 페이지 → HTML 점프
  3. Copy selector + 콘솔 $$()선택자 검증
  4. Network → Fetch/XHR = JSON API 추적의 핵심
  5. Copy as cURL → Python requests 변환
  6. Application → Cookies = 로그인 우회의 열쇠
  7. Ctrl+U vs F12 = 정적/동적 5분 판별

"코드는 다음 회차. 오늘은 을 만들었다."

1 / 33

목차 — Session 2

키보드 단축키 (뷰어)

네비게이션

다음 슬라이드 Space
이전 슬라이드 PgUp
처음 / 끝Home End
목차M

화면

전체화면F
테마 전환D
글자 크게 / 작게+ -
원래 크기 (100%)=
도움말 (열기/닫기)H ?
닫기 (모든 오버레이)Esc
강의 종료 (메인으로)Q

키보드 단축키 (강사)

네비게이션

다음 슬라이드 Space
이전 슬라이드 PgUp
처음 / 끝Home End
목차 (Menu)M
전체화면F

화면

테마 전환D
도움말 (열기/닫기)H ?
닫기 (모든 오버레이)Esc
툴바 펼치기 / 접기[ ]
강의 종료 (메인으로)Q

화면 확대

글자 크게 / 작게+ -
원래 크기 (100%)=
돋보기 (마우스 따라 2× 확대)V

발표자 도구 (PPT 호환)

화이트 화면W ,
블랙 화면B .
레이저 포인터L
펜 모드 ON/OFFP
펜 색상1 2 3 4
펜 자국 지우기 (현재 슬라이드)E
펜 — 마지막 스트로크 취소 (Undo)Z
펜 — 다시 (Redo)R
⏰ 쉬는시간 타이머T
📱 노트뷰 QR (휴대폰 동기화)N

PDF / 종료

PDF 저장 (슬라이드)Ctrl+P
강의 종료 (메인으로)Q X