241 lines
8.0 KiB
Python
241 lines
8.0 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
"""
|
|||
|
|
Автоматическое тестирование всех методов обхода
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import asyncio
|
|||
|
|
from playwright.async_api import async_playwright
|
|||
|
|
import random
|
|||
|
|
|
|||
|
|
URL = "https://mos-sud.ru/312/cases/civil/details/7b8a110a-162d-4493-88b0-e505523c9935?uid=77MS0312-01-2025-002929-35&formType=fullForm"
|
|||
|
|
|
|||
|
|
USER_AGENTS = [
|
|||
|
|
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|||
|
|
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0",
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
async def test_method_1_headless_false():
|
|||
|
|
"""МЕТОД 1: Headless=False (видимый браузер)"""
|
|||
|
|
print("═"*80)
|
|||
|
|
print("🧪 МЕТОД 1: ВИДИМЫЙ БРАУЗЕР (headless=False)")
|
|||
|
|
print("═"*80)
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
async with async_playwright() as p:
|
|||
|
|
browser = await p.chromium.launch(
|
|||
|
|
headless=False,
|
|||
|
|
args=['--disable-blink-features=AutomationControlled']
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
context = await browser.new_context(
|
|||
|
|
user_agent=USER_AGENTS[0],
|
|||
|
|
viewport={'width': 1920, 'height': 1080},
|
|||
|
|
locale='ru-RU'
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
page = await context.new_page()
|
|||
|
|
await page.add_init_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
|
|||
|
|
|
|||
|
|
response = await page.goto(URL, wait_until='domcontentloaded', timeout=30000)
|
|||
|
|
await asyncio.sleep(5)
|
|||
|
|
|
|||
|
|
text = await page.inner_text('body')
|
|||
|
|
status = response.status
|
|||
|
|
|
|||
|
|
await browser.close()
|
|||
|
|
|
|||
|
|
print(f" Статус: {status}")
|
|||
|
|
print(f" Текст: {len(text)} символов")
|
|||
|
|
print(f" Превью: {text[:100]}")
|
|||
|
|
|
|||
|
|
if status == 200 and len(text) > 100:
|
|||
|
|
print(" ✅ УСПЕХ!")
|
|||
|
|
return True
|
|||
|
|
else:
|
|||
|
|
print(f" ❌ Не сработало (статус {status})")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f" ❌ Ошибка: {e}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
async def test_method_2_firefox():
|
|||
|
|
"""МЕТОД 2: Firefox"""
|
|||
|
|
print("═"*80)
|
|||
|
|
print("🦊 МЕТОД 2: FIREFOX")
|
|||
|
|
print("═"*80)
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
async with async_playwright() as p:
|
|||
|
|
browser = await p.firefox.launch(headless=False)
|
|||
|
|
|
|||
|
|
context = await browser.new_context(
|
|||
|
|
user_agent=USER_AGENTS[1],
|
|||
|
|
locale='ru-RU'
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
page = await context.new_page()
|
|||
|
|
response = await page.goto(URL, wait_until='networkidle', timeout=30000)
|
|||
|
|
await asyncio.sleep(5)
|
|||
|
|
|
|||
|
|
text = await page.inner_text('body')
|
|||
|
|
status = response.status
|
|||
|
|
|
|||
|
|
await browser.close()
|
|||
|
|
|
|||
|
|
print(f" Статус: {status}")
|
|||
|
|
print(f" Текст: {len(text)} символов")
|
|||
|
|
print(f" Превью: {text[:100]}")
|
|||
|
|
|
|||
|
|
if status == 200 and len(text) > 100:
|
|||
|
|
print(" ✅ УСПЕХ!")
|
|||
|
|
return True
|
|||
|
|
else:
|
|||
|
|
print(f" ❌ Не сработало (статус {status})")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f" ❌ Ошибка: {e}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
async def test_method_3_slow_mo():
|
|||
|
|
"""МЕТОД 3: Медленное выполнение"""
|
|||
|
|
print("═"*80)
|
|||
|
|
print("🐌 МЕТОД 3: МЕДЛЕННОЕ ВЫПОЛНЕНИЕ (slow_mo)")
|
|||
|
|
print("═"*80)
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
async with async_playwright() as p:
|
|||
|
|
browser = await p.chromium.launch(
|
|||
|
|
headless=False,
|
|||
|
|
slow_mo=1000
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
context = await browser.new_context(user_agent=USER_AGENTS[0])
|
|||
|
|
page = await context.new_page()
|
|||
|
|
|
|||
|
|
response = await page.goto(URL, wait_until='load', timeout=60000)
|
|||
|
|
await asyncio.sleep(10)
|
|||
|
|
|
|||
|
|
text = await page.inner_text('body')
|
|||
|
|
status = response.status
|
|||
|
|
|
|||
|
|
await browser.close()
|
|||
|
|
|
|||
|
|
print(f" Статус: {status}")
|
|||
|
|
print(f" Текст: {len(text)} символов")
|
|||
|
|
print(f" Превью: {text[:100]}")
|
|||
|
|
|
|||
|
|
if status == 200 and len(text) > 100:
|
|||
|
|
print(" ✅ УСПЕХ!")
|
|||
|
|
return True
|
|||
|
|
else:
|
|||
|
|
print(f" ❌ Не сработало (статус {status})")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f" ❌ Ошибка: {e}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
async def test_method_4_step_by_step():
|
|||
|
|
"""МЕТОД 4: Пошаговая загрузка"""
|
|||
|
|
print("═"*80)
|
|||
|
|
print("🪜 МЕТОД 4: ПОШАГОВАЯ ЗАГРУЗКА")
|
|||
|
|
print("═"*80)
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
async with async_playwright() as p:
|
|||
|
|
browser = await p.chromium.launch(headless=False)
|
|||
|
|
context = await browser.new_context(user_agent=USER_AGENTS[0])
|
|||
|
|
page = await context.new_page()
|
|||
|
|
|
|||
|
|
# Шаг 1: Главная
|
|||
|
|
print(" 📍 Загружаем главную...")
|
|||
|
|
await page.goto('https://mos-sud.ru/', wait_until='networkidle')
|
|||
|
|
await asyncio.sleep(3)
|
|||
|
|
|
|||
|
|
# Шаг 2: Целевая страница
|
|||
|
|
print(" 📍 Переходим на целевую...")
|
|||
|
|
response = await page.goto(URL, wait_until='networkidle', timeout=30000)
|
|||
|
|
await asyncio.sleep(5)
|
|||
|
|
|
|||
|
|
text = await page.inner_text('body')
|
|||
|
|
status = response.status
|
|||
|
|
|
|||
|
|
await browser.close()
|
|||
|
|
|
|||
|
|
print(f" Статус: {status}")
|
|||
|
|
print(f" Текст: {len(text)} символов")
|
|||
|
|
print(f" Превью: {text[:100]}")
|
|||
|
|
|
|||
|
|
if status == 200 and len(text) > 100:
|
|||
|
|
print(" ✅ УСПЕХ!")
|
|||
|
|
return True
|
|||
|
|
else:
|
|||
|
|
print(f" ❌ Не сработало (статус {status})")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f" ❌ Ошибка: {e}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
async def main():
|
|||
|
|
print("🥷"*40)
|
|||
|
|
print()
|
|||
|
|
print(" АВТОМАТИЧЕСКОЕ ТЕСТИРОВАНИЕ ОБХОДА ЗАЩИТЫ")
|
|||
|
|
print()
|
|||
|
|
print("🥷"*40)
|
|||
|
|
print()
|
|||
|
|
print(f"Цель: mos-sud.ru")
|
|||
|
|
print()
|
|||
|
|
|
|||
|
|
methods = [
|
|||
|
|
("Видимый браузер", test_method_1_headless_false),
|
|||
|
|
("Firefox", test_method_2_firefox),
|
|||
|
|
("Медленное выполнение", test_method_3_slow_mo),
|
|||
|
|
("Пошаговая загрузка", test_method_4_step_by_step),
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
results = {}
|
|||
|
|
|
|||
|
|
for name, method in methods:
|
|||
|
|
print()
|
|||
|
|
result = await method()
|
|||
|
|
results[name] = result
|
|||
|
|
print()
|
|||
|
|
await asyncio.sleep(2)
|
|||
|
|
|
|||
|
|
# Итоги
|
|||
|
|
print("═"*80)
|
|||
|
|
print("📊 ИТОГОВЫЕ РЕЗУЛЬТАТЫ")
|
|||
|
|
print("═"*80)
|
|||
|
|
print()
|
|||
|
|
|
|||
|
|
for name, success in results.items():
|
|||
|
|
status = "✅ РАБОТАЕТ" if success else "❌ НЕ РАБОТАЕТ"
|
|||
|
|
print(f" {name:30s} {status}")
|
|||
|
|
|
|||
|
|
print()
|
|||
|
|
print("═"*80)
|
|||
|
|
|
|||
|
|
if not any(results.values()):
|
|||
|
|
print()
|
|||
|
|
print("💡 ВСЕ МЕТОДЫ НЕ СРАБОТАЛИ")
|
|||
|
|
print()
|
|||
|
|
print("Судебный сайт имеет ОЧЕНЬ сильную защиту.")
|
|||
|
|
print()
|
|||
|
|
print("Для обхода нужны:")
|
|||
|
|
print(" 1. 🌐 Residential прокси (домашние IP)")
|
|||
|
|
print(" 2. 🔐 VPN из России")
|
|||
|
|
print(" 3. 📧 Официальный API доступ")
|
|||
|
|
print(" 4. 🍪 Реальные cookies из браузера")
|
|||
|
|
print()
|
|||
|
|
print("═"*80)
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
asyncio.run(main())
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|