feat test
This commit is contained in:
+101
@@ -0,0 +1,101 @@
|
||||
"""
|
||||
Тест создания браузера Camoufox с разными параметрами.
|
||||
Запуск: python test_browser.py
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import time
|
||||
from camoufox.async_api import AsyncCamoufox
|
||||
from camoufox import DefaultAddons
|
||||
|
||||
|
||||
PROXY = None # Вставь прокси если нужно: "http://127.0.0.1:PORT"
|
||||
|
||||
async def try_browser(label: str, **kwargs) -> bool:
|
||||
t = time.time()
|
||||
try:
|
||||
async with AsyncCamoufox(**kwargs) as browser:
|
||||
page = await browser.new_page()
|
||||
await page.goto("about:blank", timeout=10000)
|
||||
await page.close()
|
||||
elapsed = time.time() - t
|
||||
print(f" ✅ {label} ({elapsed:.1f}s)")
|
||||
return True
|
||||
except ValueError as e:
|
||||
print(f" ❌ {label} — fingerprint error: {e}")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f" ⚠️ {label} — {type(e).__name__}: {str(e)[:80]}")
|
||||
return False
|
||||
|
||||
|
||||
async def main():
|
||||
base = dict(headless=True, exclude_addons=[DefaultAddons.UBO])
|
||||
proxy_kwargs = {"proxy": {"server": PROXY}} if PROXY else {}
|
||||
|
||||
print("\n=== Без прокси ===")
|
||||
tests_no_proxy = [
|
||||
("geoip=False, locale=ru-RU", dict(geoip=False, locale="ru-RU")),
|
||||
("geoip=False, locale=en-US", dict(geoip=False, locale="en-US")),
|
||||
("geoip=True", dict(geoip=True)),
|
||||
("geoip=True, locale=ru-RU", dict(geoip=True, locale="ru-RU")),
|
||||
("geoip=True, locale=en-US", dict(geoip=True, locale="en-US")),
|
||||
("geoip=True, os=windows", dict(geoip=True, os="windows")),
|
||||
]
|
||||
for label, kwargs in tests_no_proxy:
|
||||
await try_browser(label, **base, **kwargs)
|
||||
|
||||
if PROXY:
|
||||
print(f"\n=== С прокси ({PROXY}) ===")
|
||||
tests_proxy = [
|
||||
("geoip=True", dict(geoip=True)),
|
||||
("geoip=True, locale=ru-RU", dict(geoip=True, locale="ru-RU")),
|
||||
("geoip=True, locale=en-US", dict(geoip=True, locale="en-US")),
|
||||
("geoip=True, os=windows", dict(geoip=True, os="windows")),
|
||||
("geoip=False, locale=ru-RU", dict(geoip=False, locale="ru-RU")),
|
||||
("geoip=False, locale=en-US", dict(geoip=False, locale="en-US")),
|
||||
]
|
||||
for label, kwargs in tests_proxy:
|
||||
await try_browser(label, **base, **proxy_kwargs, **kwargs)
|
||||
|
||||
print("\n=== Fingerprint generation напрямую ===")
|
||||
from camoufox.fingerprints import generate_fingerprint
|
||||
fp_tests = [
|
||||
("без параметров", {}),
|
||||
("locale=ru-RU", {"locale": "ru-RU"}),
|
||||
("locale=en-US", {"locale": "en-US"}),
|
||||
("locale=ru-Cyrl-RU", {"locale": "ru-Cyrl-RU"}),
|
||||
("os=windows, locale=ru-RU", {"os": "windows", "locale": "ru-RU"}),
|
||||
("os=windows, locale=en-US", {"os": "windows", "locale": "en-US"}),
|
||||
]
|
||||
for label, kwargs in fp_tests:
|
||||
try:
|
||||
fp = generate_fingerprint(**kwargs)
|
||||
print(f" ✅ generate_fingerprint({label})")
|
||||
except ValueError as e:
|
||||
print(f" ❌ generate_fingerprint({label}) — {e}")
|
||||
|
||||
print("\n=== Geoip данные ===")
|
||||
from camoufox.utils import get_geolocation
|
||||
ips = ["127.0.0.1"]
|
||||
if PROXY:
|
||||
host = PROXY.replace("http://", "").split(":")[0]
|
||||
if host not in ("127.0.0.1", "localhost"):
|
||||
ips.append(host)
|
||||
import urllib.request
|
||||
try:
|
||||
ext = urllib.request.urlopen("https://api.ipify.org", timeout=5).read().decode()
|
||||
ips.append(ext)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
for ip in ips:
|
||||
try:
|
||||
geo = get_geolocation(ip)
|
||||
print(f" {ip}: lang={geo.locale.language} region={geo.locale.region} script={geo.locale.script} tz={geo.timezone}")
|
||||
except Exception as e:
|
||||
print(f" {ip}: ошибка — {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user