# -*- coding: utf-8 -*- """ 네트워크 캡처 v2 - 새로고침 후에도 캡처 """ import sys; sys.path.insert(0, '.'); import wholesale_path from wholesale import SooinSession from playwright.sync_api import sync_playwright import time s = SooinSession() print('로그인...') s.login() # 먼저 장바구니 비우기 s.clear_cart() # 코자정 담기 print('코자정 검색...') result = s.search_products('코자정') product = result['items'][0] if result.get('items') else None if product: print(f"제품: {product['name']} - {product['price']:,}원") s.add_to_cart(product['internal_code'], qty=1, price=product['price'], stock=product['stock']) print('장바구니에 담음!') cart = s.get_cart() print(f"장바구니: {cart['total_items']}개") print('\n브라우저 열기...') with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context() # 쿠키 복사 for c in s.session.cookies: context.add_cookies([{ 'name': c.name, 'value': c.value, 'domain': c.domain or 'sooinpharm.co.kr', 'path': c.path or '/' }]) page = context.new_page() # 모든 요청 캡처 (지속적) captured = [] def capture(request): if 'BagOrder' in request.url and request.method == 'POST': data = request.post_data or '' captured.append(data) print('\n' + '='*60) print('🎯 POST 캡처!') print('='*60) for param in data.split('&')[:30]: # 주요 파라미터만 if '=' in param: k, v = param.split('=', 1) if v: # 값이 있는 것만 print(f' {k}: {v[:60]}') print('='*60) context.on('request', capture) # context 레벨에서 캡처 page.goto('http://sooinpharm.co.kr/Service/Order/Order.asp') print('\n✅ 준비 완료!') print('👆 F5로 새로고침 후 주문전송 버튼 클릭!') print('\n(Enter 누르면 종료)') input() # 캡처된 데이터 파일로 저장 if captured: with open('captured_post.txt', 'w', encoding='utf-8') as f: f.write(captured[0]) print('\n📁 captured_post.txt 저장됨') browser.close()