#!/usr/bin/env python3 """ Анализатор HAR файлов Использование: python -m debugger.analyze_har path/to/file.har python debugger/analyze_har.py ../1.har """ import sys import os sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from debugger.analyzers import RequestAnalyzer, FingerprintAnalyzer def analyze_har(har_path: str): """Анализирует HAR файл""" print(f"\nAnalyzing: {har_path}") print("="*60) # Request analysis req_analyzer = RequestAnalyzer(har_path=har_path) req_analyzer.print_report() # Fingerprint analysis fp_analyzer = FingerprintAnalyzer(requests=req_analyzer.requests) fp_analyzer.print_report() # Дополнительная информация print("\n" + "="*60) print("ADDITIONAL INFO") print("="*60) # Ищем redirect запросы redirects = [r for r in req_analyzer.requests if r.get('status') in (301, 302, 303, 307, 308)] if redirects: print(f"\nREDIRECTS ({len(redirects)}):") for r in redirects[:10]: location = r.get('responseHeaders', {}).get('location', r.get('responseHeaders', {}).get('Location', '')) print(f" {r.get('status')} {r.get('url')[:50]}...") if location: print(f" -> {location[:60]}...") # Ищем OAuth запросы oauth_reqs = [r for r in req_analyzer.requests if 'oauth' in r.get('url', '').lower() or 'token' in r.get('url', '').lower()] if oauth_reqs: print(f"\nOAUTH REQUESTS ({len(oauth_reqs)}):") for r in oauth_reqs[:10]: print(f" {r.get('method')} {r.get('url')[:60]}... -> {r.get('status')}") # Ищем signin запросы signin_reqs = [r for r in req_analyzer.requests if 'signin' in r.get('url', '').lower()] if signin_reqs: print(f"\nSIGNIN REQUESTS ({len(signin_reqs)}):") for r in signin_reqs[:15]: print(f" {r.get('method'):4} {r.get('status'):3} [{r.get('duration', 0):5}ms] {r.get('url')[:60]}...") if __name__ == '__main__': if len(sys.argv) < 2: print("Usage: python analyze_har.py ") print("\nExample:") print(" python analyze_har.py ../1.har") sys.exit(1) har_path = sys.argv[1] if not os.path.exists(har_path): print(f"Error: File not found: {har_path}") sys.exit(1) analyze_har(har_path)