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