71 lines
2.5 KiB
Python
71 lines
2.5 KiB
Python
"""虎牙网页 Cookie 字段生成器测试。"""
|
|
|
|
from core.huya.web_cookie_fields import (
|
|
_qimei_feature_string,
|
|
_x64hash128,
|
|
cookie_fields,
|
|
fill_web_cookie_fields,
|
|
missing_web_cookie_fields,
|
|
qimei_feature_from_device_profile,
|
|
qimei_fingerprint_generate,
|
|
)
|
|
|
|
|
|
def test_qimei_hash_matches_sdk_vectors():
|
|
assert _x64hash128("", 31) == "24700f9f1986800ab4fcc880530dd0ed"
|
|
assert _x64hash128("a", 31) == "f8b09930c1df727ef75677a1d6ae5bd6"
|
|
assert _x64hash128("abc", 31) == "31844fd43df93041e52bcddd13312671"
|
|
|
|
|
|
def test_qimei_fingerprint_uses_sdk_feature_string():
|
|
feature = {
|
|
"screen": {"resolution": "800x600", "availResolution": "800x600"},
|
|
"navigator": {
|
|
"deviceMemory": 16,
|
|
"pdfViewerEnabled": True,
|
|
"cookieEnabled": True,
|
|
"productSub": "20030107",
|
|
"hardwareConcurrency": 10,
|
|
},
|
|
"webgl": "Google Inc. (Apple)~ANGLE (Apple, ANGLE Metal Renderer: Apple M4, Unspecified Version)",
|
|
"timezoneOffset": -480,
|
|
}
|
|
assert _qimei_feature_string(feature).endswith("###-480###")
|
|
assert qimei_fingerprint_generate(feature) == "d07a45de567322edcd42312f38e610be"
|
|
fields = cookie_fields(fill_web_cookie_fields("", "", qimei_feature=feature))
|
|
assert fields["_qimei_fingerprint"] == "d07a45de567322edcd42312f38e610be"
|
|
|
|
|
|
def test_fill_replaces_empty_values_and_completes_core_fields():
|
|
result = fill_web_cookie_fields("guid=; __yamid_new=; game_did=", "a" * 32, 1)
|
|
fields = cookie_fields(result)
|
|
assert fields["guid"] == "a" * 32
|
|
assert fields["__yamid_new"]
|
|
assert fields["game_did"]
|
|
assert fields["_qimei_fingerprint"] == qimei_fingerprint_generate()
|
|
assert not missing_web_cookie_fields(result)
|
|
|
|
|
|
def test_device_profile_builds_stable_webview_feature_approximation():
|
|
feature = qimei_feature_from_device_profile({
|
|
"vendor": "vivo",
|
|
"model": "V2370A",
|
|
"width": "1080",
|
|
"height": "2412",
|
|
})
|
|
assert feature["screen"] == {
|
|
"resolution": "1080x2412",
|
|
"availResolution": "1080x2412",
|
|
}
|
|
assert feature["navigator"]["pdfViewerEnabled"] is False
|
|
assert "Adreno" in str(feature["webgl"])
|
|
first = qimei_fingerprint_generate(feature)
|
|
second = qimei_fingerprint_generate(qimei_feature_from_device_profile({
|
|
"vendor": "vivo",
|
|
"model": "V2370A",
|
|
"width": "1080",
|
|
"height": "2412",
|
|
}))
|
|
assert first == second
|
|
assert first != qimei_fingerprint_generate()
|