Spaces:
Sleeping
Sleeping
File size: 2,519 Bytes
494c89b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
#!/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 <path_to_har_file>")
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)
|