xync-client 0.0.43.dev35__tar.gz → 0.0.43.dev41__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. {xync_client-0.0.43.dev35/xync_client.egg-info → xync_client-0.0.43.dev41}/PKG-INFO +1 -1
  2. xync_client-0.0.43.dev41/xync_client/Pms/Alfa/__init__.py +102 -0
  3. xync_client-0.0.43.dev41/xync_client/Pms/Alfa/state.json +1 -0
  4. xync_client-0.0.43.dev41/xync_client/Pms/Sber/__init__.py +79 -0
  5. xync_client-0.0.43.dev41/xync_client/Pms/Tinkoff/__init__.py +88 -0
  6. xync_client-0.0.43.dev41/xync_client/Pms/Tinkoff/state.json +1 -0
  7. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Pms/Volet/__init__.py +28 -43
  8. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41/xync_client.egg-info}/PKG-INFO +1 -1
  9. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client.egg-info/SOURCES.txt +3 -3
  10. xync_client-0.0.43.dev35/xync_client/Pms/Tinkoff/__init__.py +0 -89
  11. xync_client-0.0.43.dev35/xync_client/Pms/Tinkoff/state.json +0 -1
  12. xync_client-0.0.43.dev35/xync_client/Pms/Tinkoff/storage.json +0 -0
  13. xync_client-0.0.43.dev35/xync_client/pg_storage.py +0 -276
  14. xync_client-0.0.43.dev35/xync_client/pyro.py +0 -121
  15. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/.env.sample +0 -0
  16. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/.gitignore +0 -0
  17. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/.pre-commit-config.yaml +0 -0
  18. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/README.md +0 -0
  19. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/makefile +0 -0
  20. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/pyproject.toml +0 -0
  21. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/setup.cfg +0 -0
  22. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/TestAgent.py +0 -0
  23. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/TestAsset.py +0 -0
  24. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/TestEx.py +0 -0
  25. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/TestOrder.py +0 -0
  26. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/Binance/test_binance.py +0 -0
  27. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
  28. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
  29. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/Gate/test_gate.py +0 -0
  30. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/Htx/test_htx_p2p.py +0 -0
  31. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/Wallet/test_agent.py +0 -0
  32. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/Wallet/test_ex.py +0 -0
  33. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/__init__.py +0 -0
  34. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/tests/_todo_refact/_test_ex.py +0 -0
  35. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/Agent.py +0 -0
  36. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/Asset.py +0 -0
  37. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/AuthTrait.py +0 -0
  38. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/Base.py +0 -0
  39. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/BaseTest.py +0 -0
  40. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/Ex.py +0 -0
  41. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/InAgent.py +0 -0
  42. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/Order.py +0 -0
  43. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Abc/types.py +0 -0
  44. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/__init__.py +0 -0
  45. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/binance_async.py +0 -0
  46. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/earn_api.py +0 -0
  47. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/etype/ad.py +0 -0
  48. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/etype/pm.py +0 -0
  49. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/ex.py +0 -0
  50. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/exceptions.py +0 -0
  51. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/sapi.py +0 -0
  52. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Binance/web_c2c.py +0 -0
  53. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BingX/__init__.py +0 -0
  54. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BingX/agent.py +0 -0
  55. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BingX/base.py +0 -0
  56. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BingX/etype/ad.py +0 -0
  57. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BingX/etype/pm.py +0 -0
  58. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BingX/ex.py +0 -0
  59. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BingX/req.mjs +0 -0
  60. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BingX/sign.js +0 -0
  61. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BitGet/__init__.py +0 -0
  62. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BitGet/agent.py +0 -0
  63. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BitGet/etype/ad.py +0 -0
  64. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BitGet/ex.py +0 -0
  65. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BitGet/req.mjs +0 -0
  66. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/BitPapa/ex.py +0 -0
  67. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/InAgent.py +0 -0
  68. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/agent.py +0 -0
  69. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/etype/ad.py +0 -0
  70. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/etype/cred.py +0 -0
  71. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/etype/order.py +0 -0
  72. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/ex.py +0 -0
  73. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/web_earn.py +0 -0
  74. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/web_p2p.py +0 -0
  75. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Bybit/ws.py +0 -0
  76. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Gate/etype/ad.py +0 -0
  77. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Gate/ex.py +0 -0
  78. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Gate/premarket.py +0 -0
  79. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Htx/agent.py +0 -0
  80. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Htx/earn.py +0 -0
  81. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Htx/etype/__init__.py +0 -0
  82. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Htx/etype/ad.py +0 -0
  83. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Htx/etype/cred.py +0 -0
  84. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Htx/etype/pm.py +0 -0
  85. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Htx/etype/test.py +0 -0
  86. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Htx/ex.py +0 -0
  87. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/KuCoin/etype/ad.py +0 -0
  88. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/KuCoin/etype/pm.py +0 -0
  89. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/KuCoin/ex.py +0 -0
  90. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/KuCoin/web.py +0 -0
  91. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Mexc/etype/ad.py +0 -0
  92. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Mexc/etype/pm.py +0 -0
  93. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Mexc/ex.py +0 -0
  94. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Okx/etype/ad.py +0 -0
  95. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Okx/etype/pm.py +0 -0
  96. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Okx/ex.py +0 -0
  97. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
  98. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
  99. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/Pms/Volet/api.py +0 -0
  100. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/agent.py +0 -0
  101. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/asset.py +0 -0
  102. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/auth.py +0 -0
  103. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/ex.py +0 -0
  104. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/inAgent.py +0 -0
  105. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/order.py +0 -0
  106. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/pyd.py +0 -0
  107. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/pyro.py +0 -0
  108. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/TgWallet/web.py +0 -0
  109. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/__init__.py +0 -0
  110. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/loader.py +0 -0
  111. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client/pm_unifier.py +0 -0
  112. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client.egg-info/dependency_links.txt +0 -0
  113. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client.egg-info/requires.txt +0 -0
  114. {xync_client-0.0.43.dev35 → xync_client-0.0.43.dev41}/xync_client.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.43.dev35
3
+ Version: 0.0.43.dev41
4
4
  Author-email: Mike Artemiev <mixartemev@gmail.com>
5
5
  Project-URL: Homepage, https://gitlab.com/XyncNet/client
6
6
  Project-URL: Repository, https://gitlab.com/XyncNet/client
@@ -0,0 +1,102 @@
1
+ import asyncio
2
+
3
+ from playwright.async_api import async_playwright
4
+ from playwright._impl._errors import TimeoutError
5
+
6
+
7
+ async def main():
8
+ async with async_playwright() as p:
9
+ browser = await p.chromium.launch(
10
+ channel="chrome",
11
+ headless=False,
12
+ timeout=5000,
13
+ args=[
14
+ "--disable-blink-features=AutomationControlled",
15
+ "--no-sandbox",
16
+ "--disable-web-security",
17
+ "--disable-infobars",
18
+ "--disable-extensions",
19
+ "--start-maximized",
20
+ ],
21
+ )
22
+ context = await browser.new_context(storage_state="state.json")
23
+ page = await context.new_page()
24
+ await page.goto("https://web.alfabank.ru/dashboard")
25
+ await page.wait_for_timeout(1000)
26
+ try:
27
+ await page.wait_for_url("https://web.alfabank.ru/dashboard")
28
+ await page.wait_for_timeout(1000)
29
+ # Новый пользователь
30
+ except TimeoutError:
31
+ await page.locator('[data-test-id="phoneInput-form-control-inner"] [data-test-id="phoneInput"]').fill(
32
+ "79680252000"
33
+ )
34
+ await page.wait_for_timeout(1000)
35
+ await page.locator("span", has_text="Вперёд").click(delay=500)
36
+ await page.locator('[data-test-id="card-account-input"]').fill("2200150913416522")
37
+ await page.locator('[data-test-id="card-account-continue-button"]').click()
38
+ await page.locator(
39
+ '[class*=confirmation__component] [class*=code-input] [autocomplete="one-time-code"]'
40
+ ).fill(input("Введите код"))
41
+ await page.wait_for_timeout(500)
42
+ if await page.locator('[data-test-id="trust-device-page-submit-btn"]').is_visible():
43
+ await page.locator('[data-test-id="trust-device-page-submit-btn"]').click()
44
+ await page.locator('[data-test-id="new-password"]').click()
45
+ await page.locator('[data-test-id="new-password"]').fill("0909")
46
+ await page.locator('[data-test-id="new-password-again"]').click()
47
+ await page.locator('[data-test-id="new-password-again"]').fill("0909")
48
+ await page.locator('[data-test-id="submit-button"]').click()
49
+ await page.context.storage_state(path="state.json")
50
+
51
+ # Переходим на сбп и вводим данные получателя
52
+ # await page.locator(
53
+ # '[data-qa-type="desktop-ib-pay-buttons"] [data-qa-type="atomPanel pay-card-0"]',
54
+ # has_text="Перевести по телефону",
55
+ # ).click()
56
+ # await page.locator('[data-qa-type="recipient-input.value.placeholder"]').click()
57
+ # await page.wait_for_timeout(300)
58
+ # await page.locator('[data-qa-type="recipient-input.value.input"]').fill("9992259898")
59
+ # await page.locator('[data-qa-type="amount-from.placeholder"]').click()
60
+ # await page.locator('[data-qa-type="amount-from.input"]').fill("100")
61
+ # await page.wait_for_timeout(300)
62
+ # await page.locator('[data-qa-type="bank-plate-other-bank click-area"]').click()
63
+ # await page.locator('[data-qa-type*="inputAutocomplete.value.input"]').click()
64
+ # await page.locator('[data-qa-type*="inputAutocomplete.value.input"]').fill("Озон")
65
+ # await page.wait_for_timeout(300)
66
+ # await page.locator('[data-qa-type="banks-popup-list"]').click()
67
+ # await page.locator('[data-qa-type="transfer-button"]').click()
68
+
69
+ # Проверка последнего платежа
70
+ # try:
71
+ # await page.goto("https://www.tbank.ru/events/feed")
72
+ # except Error:
73
+ # await page.wait_for_timeout(1000)
74
+ # await page.goto("https://www.tbank.ru/events/feed")
75
+ # await page.wait_for_timeout(2000)
76
+ # await page.locator('[data-qa-type = "timeline-operations-list"]:last-child').scroll_into_view_if_needed()
77
+ # transactions = await page.locator(
78
+ # '[data-qa-type="timeline-operations-list"] [data-qa-type="operation-money"]'
79
+ # ).all_text_contents()
80
+ # result = recursion_payments(100, transactions)
81
+ # if result == 100:
82
+ # print("Платеж", result, "получен")
83
+ # else:
84
+ # print("Ничегошеньки нет")
85
+ # await page.wait_for_timeout(3000)
86
+ await context.close()
87
+ # await page.video.path()
88
+ # BufferedInputFile(pth, 'tbank')
89
+ # await bot.send_video('mixartemev')
90
+ ...
91
+ await browser.close()
92
+
93
+
94
+ def recursion_payments(amount: int, transactions: list):
95
+ tran = transactions.pop(0)
96
+ normalized_tran = tran.replace("−", "-").replace(",", ".")
97
+ if 0 > int(float(normalized_tran)) != amount:
98
+ return recursion_payments(amount, transactions)
99
+ return int(float(tran.replace("−", "-").replace(",", ".")))
100
+
101
+
102
+ asyncio.run(main())
@@ -0,0 +1 @@
1
+ {"cookies": [{"name": "capsLockPushed", "value": "false", "domain": "private.auth.alfabank.ru", "path": "/passport/cerberus-mini-blue/dashboard-blue", "expires": 1778487847, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "access_token", "value": "eyJhbGciOiJIUzI1NiJ9.eyJzZXNzaW9uX3Rva2VuIjoiYWMxYjAyYzctYThmNC0zZWI0LTg1MzUtMjM3YzBmNjU4YmRmIiwiaXNzIjoiY2VyYmVydXMtbWluaSIsInNlc3Npb25fY2xpZW50IjoibmV3Y2xpY2std2ViIiwic3ViIjoiYWMxYjAyYzctYThmNC0zZWI0LTg1MzUtMjM3YzBmNjU4YmRmIiwianRpIjoiNmM5ZDc4ZTllNmZkNDBkNThjYjUwNTAxNDVkYTQ5YWQifQ.zFmw9TGaq4-tFNyRude0fycVHHqjgygEBkQkNjdi4Hs", "domain": "private.auth.alfabank.ru", "path": "/passport", "expires": 1767687997.168728, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "cross_auth_token", "value": "eyJhbGciOiJIUzI1NiJ9.eyJzZXNzaW9uX3Rva2VuIjoiYWMxYjAyYzctYThmNC0zZWI0LTg1MzUtMjM3YzBmNjU4YmRmIiwiaXNzIjoiY2VyYmVydXMtbWluaSIsInNlc3Npb25fY2xpZW50IjoibmV3Y2xpY2std2ViIiwic3ViIjoiYWMxYjAyYzctYThmNC0zZWI0LTg1MzUtMjM3YzBmNjU4YmRmIiwianRpIjoiNmM5ZDc4ZTllNmZkNDBkNThjYjUwNTAxNDVkYTQ5YWQifQ.zFmw9TGaq4-tFNyRude0fycVHHqjgygEBkQkNjdi4Hs", "domain": ".auth.alfabank.ru", "path": "/passport", "expires": 1767687997.168805, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "XSRF-TOKEN", "value": "dd7ce66e-0b13-4bdb-9e10-67c70520e4ef", "domain": "web.alfabank.ru", "path": "/", "expires": -1, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "__zzatw-alfabank-retail", "value": "MDA0dBA=Fz2+aQ==", "domain": ".private.auth.alfabank.ru", "path": "/", "expires": 1778487995, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "__zzatw-alfabank-retail", "value": "MDA0dBA=Fz2+aQ==", "domain": ".auth.alfabank.ru", "path": "/", "expires": 1778487995, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "_sp_ses.3c2b", "value": "*", "domain": ".alfabank.ru", "path": "/", "expires": 1746953842, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "__alfa_uid", "value": "215a0cbd-166f-4b34-889d-cfb41432459c", "domain": "metrics.alfabank.ru", "path": "/", "expires": 1778488042.869225, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "passport_session_id", "value": "a6a13b54-78fe-4146-b0c0-9033f4efc269", "domain": ".alfabank.ru", "path": "/", "expires": -1, "httpOnly": false, "secure": true, "sameSite": "Lax"}, {"name": "cfidsw-alfabank-retail", "value": "gByg8Td5MgEvwzJDwItXuU78OzWRBFa1CPNKrHpfFEsp5jsJ4ecdrYV46AboZL+kj7bv7sKMciLs6KT/j7Mq10XF680HdwuYXe4t0MPloEUa5wFlVvTyX8uM3QoRgN6pNUh2mV4AFaZMfOjRqVXFSxzJkfcUaNVnNlYzuw==", "domain": ".private.auth.alfabank.ru", "path": "/", "expires": 1778487995, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "cfidsw-alfabank-retail", "value": "gByg8Td5MgEvwzJDwItXuU78OzWRBFa1CPNKrHpfFEsp5jsJ4ecdrYV46AboZL+kj7bv7sKMciLs6KT/j7Mq10XF680HdwuYXe4t0MPloEUa5wFlVvTyX8uM3QoRgN6pNUh2mV4AFaZMfOjRqVXFSxzJkfcUaNVnNlYzuw==", "domain": ".auth.alfabank.ru", "path": "/", "expires": 1778487995, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "gsscw-alfabank-retail", "value": "hnGFKIFZ7D1OvofAoh5gpWzMgC2N9UK/amM1Mq/otZ9clk1l88cZPwNdQQgBTAUDjgxr/NV9SEh8i2zR/Jrs5oxzXEvjKM12rMQp4TL5qUSO/njPC8gnOc2QI4Yj1L1ktLuVNc7ockAd05brO2aeBpRN8WCXyoh2AYZONHvLNAkU593acMGrtNvLuF3VJPQKlNcwrSCfiNre5fM5IQOUPPTk6icKyhKxMQUjUgQZNa9k/ROVt1dnEbIGlaqgP00Z22+REFkO", "domain": ".private.auth.alfabank.ru", "path": "/", "expires": 1778487997, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "gsscw-alfabank-retail", "value": "hnGFKIFZ7D1OvofAoh5gpWzMgC2N9UK/amM1Mq/otZ9clk1l88cZPwNdQQgBTAUDjgxr/NV9SEh8i2zR/Jrs5oxzXEvjKM12rMQp4TL5qUSO/njPC8gnOc2QI4Yj1L1ktLuVNc7ockAd05brO2aeBpRN8WCXyoh2AYZONHvLNAkU593acMGrtNvLuF3VJPQKlNcwrSCfiNre5fM5IQOUPPTk6icKyhKxMQUjUgQZNa9k/ROVt1dnEbIGlaqgP00Z22+REFkO", "domain": ".auth.alfabank.ru", "path": "/", "expires": 1778487997, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "browserId", "value": "68205f3adc69f01d00012ee4", "domain": "private.auth.alfabank.ru", "path": "/", "expires": 1778487995.512104, "httpOnly": false, "secure": true, "sameSite": "Strict"}, {"name": "passport-session", "value": "true", "domain": ".alfabank.ru", "path": "/", "expires": 1746952897.168841, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "SUCHASH", "value": "E6DE996481A14BCB59887DEF111E195A", "domain": ".alfabank.ru", "path": "/", "expires": -1, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "GW_SESSION_NEWCLICK", "value": "72b4dc05-cc93-4be8-bad4-f23ce09d1faa", "domain": ".alfabank.ru", "path": "/", "expires": -1, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "DEVICE_APP_ID", "value": "3082d7e4-b8fc-4feb-9aa3-71c5d1748d9e", "domain": ".alfabank.ru", "path": "/", "expires": 1781511997.04382, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "DEVICE_SECRET", "value": "1f1d6529-2e74-4102-b25f-09bf87063d07daf99c91-8e21-453b-85ff-23471dcb799c", "domain": "web.alfabank.ru", "path": "/", "expires": 1781511997.043926, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "DEVICE_PUBLIC_KEY_ID", "value": "1324b1de-39df-4b08-b852-eac65192fb44", "domain": "web.alfabank.ru", "path": "/", "expires": 1781511997.04396, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "STARTED_PASS_CODE_LOGIC_TIME", "value": "1746951996673", "domain": "web.alfabank.ru", "path": "/", "expires": 1781511997.043985, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "auth_type_pincode", "value": "true", "domain": ".alfabank.ru", "path": "/", "expires": 1781511997.044055, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "f36b39c34hj", "value": "8e99fba30096bdfcdfde6187d1fb2edc8c1bbc24eb53bf064b7bea1f0a33ad274939d9367bed4deb794147ea2708f306SSz3uoOrR0dcrfrZf40iFw%3D%3D", "domain": ".alfabank.ru", "path": "/", "expires": 1781511997.044074, "httpOnly": false, "secure": true, "sameSite": "Lax"}, {"name": "5c24xow7n6w", "value": "0", "domain": ".alfabank.ru", "path": "/", "expires": 1781511997.044098, "httpOnly": false, "secure": true, "sameSite": "Lax"}, {"name": "newclick-sticky-cookie", "value": "\"7ac27a834001e010\"", "domain": "web.alfabank.ru", "path": "/", "expires": -1, "httpOnly": true, "secure": false, "sameSite": "Lax"}, {"name": "fgsscw-alfabank-retail", "value": "xNH5563df983ef073795951fdfdc4d8d41c19cc2", "domain": ".private.auth.alfabank.ru", "path": "/", "expires": 1778487997, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "fgsscw-alfabank-retail", "value": "xNH5563df983ef073795951fdfdc4d8d41c19cc2", "domain": ".auth.alfabank.ru", "path": "/", "expires": 1778487997, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "__zzatw-alfabank-retail", "value": "MDA0dC0cTHtmcDhhDHEWTT17CT4VHThHKHIzd2U6VGs7CmhLGzUdCkNoUlRDXS1BSk8if3IsMBs3V2EgDBYRTVZUfSsiFnh0LFYLD1s5MzlEaXBXJ1EPHVB8Gxk2bV17TGcVfjYucGBkDhpHan4xUVEsEREOEUZaCxtpJCkICA4VQkVqejFxIhpjSF0lQA9NNCUWGnduJg0LQBlwQ3N8GzdXXRwRJFgOIT8LF1xVPjVUDjx1Vy8NLjheLW8eZktfKEhWVgosHRV3ZxUbUEsYL0tfO2VsJlsrfCljNSoi9Ku4jw==", "domain": ".web.alfabank.ru", "path": "/", "expires": 1778487997, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "__zzatw-alfabank-retail", "value": "MDA0dC0cTHtmcDhhDHEWTT17CT4VHThHKHIzd2U6VGs7CmhLGzUdCkNoUlRDXS1BSk8if3IsMBs3V2EgDBYRTVZUfSsiFnh0LFYLD1s5MzlEaXBXJ1EPHVB8Gxk2bV17TGcVfjYucGBkDhpHan4xUVEsEREOEUZaCxtpJCkICA4VQkVqejFxIhpjSF0lQA9NNCUWGnduJg0LQBlwQ3N8GzdXXRwRJFgOIT8LF1xVPjVUDjx1Vy8NLjheLW8eZktfKEhWVgosHRV3ZxUbUEsYL0tfO2VsJlsrfCljNSoi9Ku4jw==", "domain": ".alfabank.ru", "path": "/", "expires": 1778487997, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "mpid", "value": "NjgyMDVmM2QwMTFmNTMzZQ==", "domain": "sync.otm-r.ru", "path": "/", "expires": 1749630397.66852, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "gsscw-alfabank-retail", "value": "8Dkk6uzysnsnxoExz0WaH/74J0a5GKKxYCrScmcW5I7FZvs1Y2dqutsTzQMfP/OYnI9vknBlu/6OCbGFK9gdqw6Z5bmLQC6EBIHLHm//ReH77I0/R0/oUqf8fP/AsqEWlC1wNXUb509RHQwqkGopEwT7ZYV4ELnusN421HIw0s/J5Bs5g1jvTZIv9ViJv0ESzRZZgc8NHAzU9C+fPPZpADxuhiH0EdFH62RtHdk/hM1EBFQhge2MMhiMDgkP3gbxNdChAPKvHDAEGTxlkSTqB00V9T8ywuaiXXjE+j8=", "domain": "groupib-ac.alfabank.ru", "path": "/", "expires": 1778488030.688616, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "cfidsw-alfabank-retail", "value": "VzxbLNDV5NBTFTMgCqaAepzKZSg2AuI87mh7OY+aH+d0zV12npNKzhdZthsdf70GHeiIjbaKzPlAI1n89AXzkzoDkh2/iTHLNFfAJIF1zG6Np2/XsWZW59m3yW/G3fPUJyrx7k4W32CwtW5owKudkDIkyCwWJpIELvar4A==", "domain": "groupib-ac.alfabank.ru", "path": "/", "expires": 1778488030.688772, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "cfidsw-alfabank-retail", "value": "VzxbLNDV5NBTFTMgCqaAepzKZSg2AuI87mh7OY+aH+d0zV12npNKzhdZthsdf70GHeiIjbaKzPlAI1n89AXzkzoDkh2/iTHLNFfAJIF1zG6Np2/XsWZW59m3yW/G3fPUJyrx7k4W32CwtW5owKudkDIkyCwWJpIELvar4A==", "domain": ".web.alfabank.ru", "path": "/", "expires": 1778488030, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "cfidsw-alfabank-retail", "value": "VzxbLNDV5NBTFTMgCqaAepzKZSg2AuI87mh7OY+aH+d0zV12npNKzhdZthsdf70GHeiIjbaKzPlAI1n89AXzkzoDkh2/iTHLNFfAJIF1zG6Np2/XsWZW59m3yW/G3fPUJyrx7k4W32CwtW5owKudkDIkyCwWJpIELvar4A==", "domain": ".alfabank.ru", "path": "/", "expires": 1778488030, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "gsscw-alfabank-retail", "value": "8Dkk6uzysnsnxoExz0WaH/74J0a5GKKxYCrScmcW5I7FZvs1Y2dqutsTzQMfP/OYnI9vknBlu/6OCbGFK9gdqw6Z5bmLQC6EBIHLHm//ReH77I0/R0/oUqf8fP/AsqEWlC1wNXUb509RHQwqkGopEwT7ZYV4ELnusN421HIw0s/J5Bs5g1jvTZIv9ViJv0ESzRZZgc8NHAzU9C+fPPZpADxuhiH0EdFH62RtHdk/hM1EBFQhge2MMhiMDgkP3gbxNdChAPKvHDAEGTxlkSTqB00V9T8ywuaiXXjE+j8=", "domain": ".web.alfabank.ru", "path": "/", "expires": 1778488042, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "gsscw-alfabank-retail", "value": "8Dkk6uzysnsnxoExz0WaH/74J0a5GKKxYCrScmcW5I7FZvs1Y2dqutsTzQMfP/OYnI9vknBlu/6OCbGFK9gdqw6Z5bmLQC6EBIHLHm//ReH77I0/R0/oUqf8fP/AsqEWlC1wNXUb509RHQwqkGopEwT7ZYV4ELnusN421HIw0s/J5Bs5g1jvTZIv9ViJv0ESzRZZgc8NHAzU9C+fPPZpADxuhiH0EdFH62RtHdk/hM1EBFQhge2MMhiMDgkP3gbxNdChAPKvHDAEGTxlkSTqB00V9T8ywuaiXXjE+j8=", "domain": ".alfabank.ru", "path": "/", "expires": 1778488042, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "lipcookeid", "value": "!YZ/d4aBTxoAHVkuJIm0005mk4pPY5HqlSSHRy/VkDVs+4/8LothKya7gJUOnLr7q9jzUl/X242NyZ3YUhuTgsLp3fjUWhS6qx9bjUEQ=", "domain": "online.alfabank.ru", "path": "/", "expires": -1, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "_sp_id.3c2b", "value": "aa98c4ba-a78c-4359-a368-143a639e7331.1746951746.1.1746952042.1746951746.2b2ae3d8-acf8-4069-97eb-a88c70e28187", "domain": ".alfabank.ru", "path": "/", "expires": 1781512042.460605, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "fgsscw-alfabank-retail", "value": "62yx8d793b86d100949677fb86684909bf1070a3", "domain": ".web.alfabank.ru", "path": "/", "expires": 1778488042, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "fgsscw-alfabank-retail", "value": "62yx8d793b86d100949677fb86684909bf1070a3", "domain": ".alfabank.ru", "path": "/", "expires": 1778488042, "httpOnly": false, "secure": false, "sameSite": "Lax"}], "origins": [{"origin": "https://web.alfabank.ru", "localStorage": [{"name": "snowplowOutQueue_sp_newclick-host-ui_get", "value": "[]"}, {"name": "DEVICE_APP_ID", "value": "3082d7e4-b8fc-4feb-9aa3-71c5d1748d9e"}, {"name": "user-last-activity-date", "value": "1746952038742"}, {"name": "snowplowOutQueue_sp_newclick-dashboard-ui_get", "value": "[\"?e=se&se_ca=Carousel%20for%20you&se_ac=View&se_la=Banner&tv=js-2.8.2&tna=newclick-dashboard-ui&aid=newclick_dashboard_ui&p=web&tz=Europe%2FMinsk&lang=ru-RU&cs=UTF-8&f_pdf=1&f_qt=0&f_realp=0&f_wma=0&f_dir=0&f_fla=0&f_java=0&f_gears=0&f_ag=0&res=1280x720&cd=30&cookie=1&eid=4b5328ee-efa7-4dd5-a2bb-8e3cc576558a&dtm=1746952042460&vp=1280x720&ds=1280x3549&vid=1&sid=2b2ae3d8-acf8-4069-97eb-a88c70e28187&duid=aa98c4ba-a78c-4359-a368-143a639e7331&fp=477354862&uid=AI6NSQ&refr=https%3A%2F%2Fprivate.auth.alfabank.ru%2F&url=https%3A%2F%2Fweb.alfabank.ru%2Fdashboard&cx=eyJzY2hlbWEiOiJpZ2x1OmNvbS5zbm93cGxvd2FuYWx5dGljcy5zbm93cGxvdy9jb250ZXh0cy9qc29uc2NoZW1hLzEtMC0wIiwiZGF0YSI6W3sic2NoZW1hIjoiaWdsdTpjb20uYWxmYWJhbmsvY3VzdG9tX2RpbWVuc2lvbi9qc29uc2NoZW1hLzEtMC0wIiwiZGF0YSI6eyIxIjoiU0FTXzE5MjUxNDA5NTIxIiwiMiI6IkRDX0lOU1RfQ09NTU9OX0FPXzAzMjAyNSIsIjMiOiJCSVBEQyIsIjQiOiJkYXNoYm9hcmQiLCI2Ijoi0JTQtdC90YzQs9C4INCywqDRgNCw0YHRgdGA0L7Rh9C60YNcbtCx0LXQtyDQv9GA0L7RhtC10L3RgtC-0LIiLCI3IjoiaHR0cHM6Ly93ZWIuYWxmYWJhbmsucnUvbXVsdGlzdGVwdWk_ZnJvbU1vZHVsZT1GT1JNJmFsaWFzPWRjLWluc3RhbGxtZW50LWxvYW4mc291cmNlPUxFTlRBX0ZPUl9ZT1VfQU9fTkVXIiwiOCI6MiwiNDAiOiI0NTIzOSIsIjQxIjpudWxsLCI0OCI6ImNsaWVudCIsIjQ5IjoiQURVTFQiLCI1MCI6InVuZGVmaW5lZCJ9fV19\"]"}, {"name": "logout-reason", "value": ""}, {"name": "AlfaOnlineOpenedTabs", "value": "1"}, {"name": "__gitd", "value": "MDA0dC0iD2k5IVB2GApFSE5PMyhXQXt1Fy9LICglLS8PaTleJktWU3orHhN4cChYfw5hLxY=69EuPg=="}, {"name": "PRIVATE_KEY_ENC", "value": "eyJpdiI6IkVPOEVtMzBxZWp4Ym9CTC9zaGZvVkE9PSIsInYiOjEsIml0ZXIiOjEwMDAsImtzIjoyNTYsInRzIjoxMjgsIm1vZGUiOiJjY20iLCJhZGF0YSI6IiIsImNpcGhlciI6ImFlcyIsInNhbHQiOiJSb3V1Z05WdnBtbldXRUZRanQreStZSWtEcWZPcGVwYiIsImN0IjoiejhHaERSVGxpQU5JWHJ3SXFKYzRkSkhnWVU4RnZDaU9iNlFDYjQ3dkU1Q2FSQ2hVdWJpVTJqUWpuZWNoOXhjNENEZ0xUbmI5VU1DWDljUzA4NlJvMjRCT3dmNjk4a0tzbE1TNmhDdXdkaUFYWWcvOEtXMHV1M2ZJWE9XQmJ3VCsxVVptR1FMNEZFeGdHSVpjOWYyRnlCNElNS01KcWVoK0ljZmpTcHFKWWR1UmExOGZaZE1aUXVFRXRsQm9sUUVZc2tzMkJ4UTFiaGMwUmNEa28wTFo3cG5UREhWYzQzVGtKdDVjTWZhQWQ3ZW5OVUlsdktQOXhmRTlMdUlRQkErNy9ReFFxc1ZhZWhDbklrZTRCQVRaSVhSc2JhR3ZWQXlzY2dJRDNWQ0xGQzRnYy9vRHBQQVd1T0ZDUmd4cUZVOG9NcWtvNVBOVmh6SnRMSWduNUJSQ043QnpML3BUb3pNN1FZYXZER1I0U1hWL1VQWWVBb0RUN2I0YjRMYUJhR29wSnIrWTlUSUxlZkZnZnZoWnpaVFFUT0poc2JIcDVtV3NuelBlTnZlRDh1SVpESjUzMkhUNFRVaWY4d1oyOGtybGZablFXb2szWFpoam9DMkJsYVRwWmEzaHN5ZzBHY2ZaUUJ2Y05YVzhyRlNjaGRocVRWT3lpOVJZbW5USEhnL2dZZnFhM1dTY00zc1o1dHNsWEEvVElvSU04UlNCSzVOV2luQ1dna25yc0lCQzN0VUFSNEJBbXJuYzA0eGk3aWpPRjBwT0xpN3VnSThGS2ZTQ2RPWWpoeTBRYzZmWUYwWmwzQUZUQVFDZjUrR0U1M0hZTkNoZGR1clp5bHh3L1NVbk5zTkdqQ3hFcFNLTkhoZE9ITVdwOVlmWWJqU2tMVmpUM2t0MVQva0ZzMG13b0dKcGpVYkFmYVhBNFhSbGUrTWpmR3h4NnRiOGNzbkxyNkJEREVDcGlVc3ZTTXlpelNRNHhNMk94QnhFbXNjdkJndzVDeSs1WFRkTWp3d3VOcW12VGJTQiswMU1QWXM5VVpGcUJWTzhtQ3VHOUZadDFGVW1icXlFbFRsa0Z5K3VSSUJsbFh3c3NZME0rOW53bzJ1V1ZxcVo1RlNHaTBZWkV5ZHV4R0pHZ01VNHpIeTE0d3ZyUHBia0QrNzlKLy9HcGtNcFpzUFhzY3d0MHIwTlhIU1VOQmU1OUo4NGo3WjJ6UjM1Q1dTYTNFNlp2WkY3Mk5sMDl5RVJRc1JiMW8wVmpham9WbjRkYXRlajZzbUxMK3VhdTZ1L2RVS1Y2RThFc2hVZFdHZWxwUW9ydnpxNi9paSt5SHJzT2hvSE9KVU9sQXJYZS9sTlg1NWRSRFlyMXpuRnY5VlZTZ1VZNXczK3BYSXBvd0tSYW05dk9VUnVYQ1lWK0RKYjNqUjNYbHVCTEJHcWFsZUwyQlZFcHMwYlZKS2crRldEMk4raUQvczg5anJTWVJtTEF6bmErNy9XbUJvZUxRL0IvWkVzdHFtcHorTDJveVpvMjIya1dBU0NvdXRIUTFCb1U2YXlGNHNFK2FVeHkrRkdiZStldGdTUitnRFptU3BGNWlMSEo5ZFFIWkl6dlltTHZ2TkN0ajUySDkvNXQrVHN1R0RUT3gzWENHZVRSaVFmZVBJUDRFbUJobnZNempkbzBwMDlHTFduTTluTks2QUJDWmp5UGJpSmJ2SjJmZzJqd0w1QWdzdnVad010OVZVckYzR2ZNcmNEQkl1ald4c2pJd0M4M2UyNnRuNitvbVlYVUFhY0VhdW1LTDFrbHViMjdUNStjbFZsNmkxTzJBY3FBZmZxc2tQTWdZTFdBNGFvcVlvTHhWeGo5aHRDK2ZxblI3TW9sSEszSmZXOGFKS0N5NUdYRXZtSjBKQU1tWUlydms2cWcxQU05M0hhZjhhT0pGTDVUdzlZOXBMa0trZExPeGZZK0QyOTJJZlFYcjNUd3RLTUJPYmxWTjducjNMZGpnQnN0Vm82c3RTaTVIaG00WUx5Uzg1SDVER3g0NjlkR05TL3VScmwycVZ1Q0t5dkowdTg1U21zckdaMWUxNTJxZDdTQWNwUDY2OTB0Z21ySiswSWFZSENnOHRPdC9Ld2RnN0x6L3o1eHdZZUxqaWxNMXBGUUtndUtSMXNuY2l0d1VOVHBVL0dCc2lPUTBWZS9aa1cvR2JrK1FHVVZPdDR0UVRYUGIyU2RpLzg5eTZTZFIrbi9QaGJwMU5DT0FGdFhGL1JUN1FqeEdTYVVTZEN5M2FOQzFBTytRZWEwQ0xNSzExN1lTLzNSK0xDWU8rMUFYNjJhK0VWMUcwZStpZUlML3Z1aHliUDNFMnBWZ1lOYllQaGVwVXNvNXl1ekJQZEtUekcrQ0s1T2dqSnhFTW41QU5xb2RDOXZmWTVXNG9taitIeGxhcFdnN3crZEpuOFRhYmcwbm1sWndLb09UN2dhV3RuT1pSR1QwaUJTQmVZV1lXK0Fhc1V1Y2g3RDZpc3gxZEM0ZUlmb2krTVdDOUhiOEYwRXZFT3FmQXdlRCtJWWU3MkhuQlphUnFCb2tzOVZyQ3pObFZPZys1LzMwZmEydTFhQi9pMG9kdWR6dUk3OFdwTnI5WEhvc0haTXppS3JVbFMyY3ZDa040Um5hbHpVMzJOWFdJTUxVYUJlTHBEeFBlR2U4SGsvWDVNTzIrVFl3UTUxYzhzdWZPRllLS3QvZlhDbWpZVUx5YzV5bWlyZ3ErbXh4YnJxeExrakxqQlBaKzJ1TnI2YVVtTmNWaXRHN3V4c1R5WG5oRStEbFpXOUNZTkQyMGY5VStCRkFjVWhPYkJoakF4T2pWWHdKSmxtSmRPMXJxNHBTQTMifQ=="}, {"name": "identificationType", "value": "undefined"}, {"name": "userRole", "value": "client"}, {"name": "snowplowOutQueue_sp_newclick-deeplink-ui_get", "value": "[]"}, {"name": "SECURED_DEVICE_SECRET", "value": "bca6f1e6-ce22-4b06-871e-da2915343883d9f600ee-e463-49f8-b4ea-7c55331ba731"}, {"name": "__zzatw-alfabank-retail", "value": "MDA0dC0cTHtmcDhhDHEWTT17CT4VHThHKHIzd2U6VGs7CmhLGzUdCkNoUlRDXS1BSk8if3IsMBs3V2EgDBYRTVZUfSsiFnh0LFYLD1s5MzlEaXBXJ1EPHVB8Gxk2bV17TGcVfjYucGBkDhpHan4xUVEsEREOEUZaCxtpJCkICA4VQkVqejFxIhpjSF0lQA9NNCUWGnduJg0LQBlwQ3N8GzdXXRwRJFgOIT8LF1xVPjVUDjx1Vy8NLjheLW8eZktfKEhWVgosHRV3ZxUbUEsYL0tfO2VsJlsrfCljNSoi9Ku4jw=="}, {"name": "userAgeRange", "value": "ADULT"}, {"name": "otm_save_flag", "value": "{\"otm_id\":\"7503101694815720254\",\"exp_date\":1747038397670}"}, {"name": "DEVICE_PUBLIC_KEY_ID", "value": "1324b1de-39df-4b08-b852-eac65192fb44"}]}, {"origin": "https://private.auth.alfabank.ru", "localStorage": [{"name": "__gitd", "value": "MDA0dC0iD2k5IVB2GApFSE5PMyhXQXt1Fy9LICglLS8PaTlaJExaVHsmIBd8biVRCQ5hQzNC+4S3OA=="}, {"name": "snowplowOutQueue_sp_ab_get", "value": "[]"}, {"name": "browser_secret_date", "value": "1746951995518"}, {"name": "__zzatw-alfabank-retail", "value": "MDA0dBA=Fz2+aQ=="}, {"name": "x-user-info", "value": "eyJuYW1lIjogItCc0LjRhdCw0LjQuyJ9"}, {"name": "browser_secret", "value": "76698639-09ad-4ea2-b4da-77ab753960363da43dba-6e20-45b4-b336-62b184b22427"}]}]}
@@ -0,0 +1,79 @@
1
+ import asyncio
2
+ import os
3
+ from playwright.async_api import async_playwright
4
+ from playwright._impl._errors import TimeoutError
5
+
6
+
7
+ async def main():
8
+ from x_model import init_db
9
+ from xync_schema import models
10
+ from xync_client.loader import PG_DSN
11
+
12
+ _ = await init_db(PG_DSN, models, True)
13
+ agent = await models.PmAgent.filter(pm__norm="sber", auth__isnull=False).first()
14
+
15
+ async with async_playwright() as p:
16
+ storage_state = "state.json" if os.path.exists("state.json") else None
17
+ browser = await p.chromium.launch(headless=False)
18
+ context = await browser.new_context(storage_state=storage_state, record_video_dir="videos")
19
+ page = await context.new_page()
20
+
21
+ await page.goto("https://online.sberbank.ru/CSAFront/index.do")
22
+ try:
23
+ await page.wait_for_url("https://online.sberbank.ru/CSAFront/index.do", timeout=3000)
24
+ except TimeoutError:
25
+ if card := agent.auth.get("card"):
26
+ await page.locator('button[aria-controls="tabpanel-card"]').is_visible()
27
+ await page.locator('button[aria-controls="tabpanel-card"]').click()
28
+ await page.wait_for_selector('input[placeholder="Введите номер карты"]', timeout=10000)
29
+ await page.locator('input[placeholder="Введите номер карты"]').fill(card)
30
+ await page.locator('button[type="submit"]').click()
31
+
32
+ sms_code = input("Введите код из SMS: ")
33
+ for i in range(5):
34
+ await page.locator(f'input[name="confirmPassword-{i}"]').fill(sms_code[i])
35
+
36
+ password = input("Введите 5-значный код: ")
37
+ await page.wait_for_selector(".FWAhBZHPePsATLTVFeTT", timeout=10000)
38
+ otp_fields = page.locator('[class="BjsSl7Uv2es5tUtwB03r"]')
39
+ for i in range(await otp_fields.count() + 1):
40
+ await page.keyboard.press(password[i])
41
+
42
+ await page.wait_for_timeout(1000)
43
+
44
+ await page.wait_for_selector(".Re_Wg4Drqw9QjVM43vJ_", timeout=10000)
45
+ fields = page.locator('[class="BjsSl7Uv2es5tUtwB03r"]')
46
+ for i in range(await fields.count() + 1):
47
+ await page.keyboard.press(password[i])
48
+ await page.wait_for_timeout(100000)
49
+ elif login := agent.auth.get("login"):
50
+ await page.locator('input[autocomplete="login"]').fill(login)
51
+ password = input("Введите пароль: ")
52
+ await page.locator('input[autocomplete="password"]').fill(password)
53
+ await page.locator('button[data-testid="button-continue"]').click()
54
+ sms_code = input("Введите код из SMS: ")
55
+ for i in range(5):
56
+ await page.locator(f'input[name="confirmPassword-{i}"]').fill(sms_code[i])
57
+
58
+ password = input("Введите 5-значный код: ")
59
+ await page.wait_for_selector(".FWAhBZHPePsATLTVFeTT", timeout=10000)
60
+ otp_fields = page.locator('[class="BjsSl7Uv2es5tUtwB03r"]')
61
+ for i in range(await otp_fields.count() + 1):
62
+ await page.keyboard.press(password[i])
63
+
64
+ await page.wait_for_timeout(1000)
65
+
66
+ await page.wait_for_selector(".Re_Wg4Drqw9QjVM43vJ_", timeout=10000)
67
+ fields = page.locator('[class="BjsSl7Uv2es5tUtwB03r"]')
68
+ for i in range(await fields.count() + 1):
69
+ await page.keyboard.press(password[i])
70
+
71
+ await page.wait_for_timeout(100000)
72
+ await context.storage_state(path="state.json")
73
+
74
+ await context.close()
75
+ await browser.close()
76
+
77
+
78
+ if __name__ == "__main__":
79
+ asyncio.run(main())
@@ -0,0 +1,88 @@
1
+ import asyncio
2
+
3
+ from playwright.async_api import async_playwright
4
+ from playwright._impl._errors import TimeoutError, Error
5
+
6
+
7
+ async def main():
8
+ async with async_playwright() as p:
9
+ browser = await p.chromium.launch(headless=False)
10
+ context = await browser.new_context(storage_state="state.json", record_video_dir="videos")
11
+ page = await context.new_page()
12
+ await page.goto("https://www.tbank.ru/mybank/")
13
+ await page.wait_for_timeout(1000)
14
+ try:
15
+ await page.wait_for_url("https://www.tbank.ru/mybank/", timeout=3000)
16
+ except TimeoutError:
17
+ # Новый пользователь
18
+ if await page.locator('[automation-id="form-title"]', has_text="Вход в Т‑Банк").is_visible():
19
+ await page.wait_for_timeout(200)
20
+ await page.locator('[automation-id="phone-input"]').fill("9992259898")
21
+ await page.locator('[automation-id="button-submit"] svg').click()
22
+ # Известный пользователь
23
+ else:
24
+ await page.locator('[automation-id="button-submit"]').click()
25
+ await page.wait_for_timeout(100)
26
+ await page.locator('[automation-id="otp-input"]').fill(input("Введите код"))
27
+ await page.wait_for_timeout(1000)
28
+ if await page.locator('[automation-id="cancel-button"]').is_visible():
29
+ await page.wait_for_timeout(3000)
30
+ await page.locator('[automation-id="cancel-button"]', has_text="Не сейчас").click(delay=500)
31
+ elif await page.locator('[automation-id="password-input"]').is_visible():
32
+ await page.locator('[automation-id="password-input"]').fill("mixfix98")
33
+ await page.locator('[automation-id="button-submit"] svg').click()
34
+ await page.context.storage_state(path="state.json")
35
+ await page.wait_for_timeout(200)
36
+
37
+ # Переходим на сбп и вводим данные получателя
38
+ # await page.locator(
39
+ # '[data-qa-type="desktop-ib-pay-buttons"] [data-qa-type="atomPanel pay-card-0"]',
40
+ # has_text="Перевести по телефону",
41
+ # ).click()
42
+ # await page.locator('[data-qa-type="recipient-input.value.placeholder"]').click()
43
+ # await page.wait_for_timeout(300)
44
+ # await page.locator('[data-qa-type="recipient-input.value.input"]').fill("9992259898")
45
+ # await page.locator('[data-qa-type="amount-from.placeholder"]').click()
46
+ # await page.locator('[data-qa-type="amount-from.input"]').fill("100")
47
+ # await page.wait_for_timeout(300)
48
+ # await page.locator('[data-qa-type="bank-plate-other-bank click-area"]').click()
49
+ # await page.locator('[data-qa-type*="inputAutocomplete.value.input"]').click()
50
+ # await page.locator('[data-qa-type*="inputAutocomplete.value.input"]').fill("Озон")
51
+ # await page.wait_for_timeout(300)
52
+ # await page.locator('[data-qa-type="banks-popup-list"]').click()
53
+ # await page.locator('[data-qa-type="transfer-button"]').click()
54
+
55
+ # Проверка последнего платежа
56
+ try:
57
+ await page.goto("https://www.tbank.ru/events/feed")
58
+ except Error:
59
+ await page.wait_for_timeout(1000)
60
+ await page.goto("https://www.tbank.ru/events/feed")
61
+ await page.wait_for_timeout(2000)
62
+ await page.locator('[data-qa-type = "timeline-operations-list"]:last-child').scroll_into_view_if_needed()
63
+ transactions = await page.locator(
64
+ '[data-qa-type="timeline-operations-list"] [data-qa-type="operation-money"]'
65
+ ).all_text_contents()
66
+ result = recursion_payments(100, transactions)
67
+ if result == 100:
68
+ print("Платеж", result, "получен")
69
+ else:
70
+ print("Ничегошеньки нет")
71
+ await page.wait_for_timeout(3000)
72
+ await context.close()
73
+ await page.video.path()
74
+ # BufferedInputFile(pth, 'tbank')
75
+ # await bot.send_video('mixartemev')
76
+ ...
77
+ await browser.close()
78
+
79
+
80
+ def recursion_payments(amount: int, transactions: list):
81
+ tran = transactions.pop(0)
82
+ normalized_tran = tran.replace("−", "-").replace(",", ".")
83
+ if 0 > int(float(normalized_tran)) != amount:
84
+ return recursion_payments(amount, transactions)
85
+ return int(float(tran.replace("−", "-").replace(",", ".")))
86
+
87
+
88
+ asyncio.run(main())
@@ -0,0 +1 @@
1
+ {"cookies": [{"name": "SSO_CONVERSATION_CSRF_KHm2f", "value": "yjYGHKshOgHjpG5NeWzWnoQ5sOY.1746868636", "domain": "id.tbank.ru", "path": "/auth", "expires": 1746870436.083603, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "SSO_CONVERSATION_CSRF_fKa8U", "value": "CHzL_q5JBzl0eyAd7-Bxm1jaBIc.1746869224", "domain": "id.tbank.ru", "path": "/auth", "expires": 1746871024.185283, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "SSO_CONVERSATION_CSRF_csrHb", "value": "wB62INnKtyQ1zEZfTxirzC5yJR0.1746869831", "domain": "id.tbank.ru", "path": "/auth", "expires": 1746871631.718935, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "SSO_CONVERSATION_CSRF_wf6u8", "value": "xpeQ6ktey2L_b9siFlaK1fgJQa8.1746869999", "domain": "id.tbank.ru", "path": "/auth", "expires": 1746871799.640428, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "isSubscribedToPush", "value": "false", "domain": ".tbank.ru", "path": "/", "expires": 1781428634.642818, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "__P__wuid", "value": "357e0453744ecb9f0872a3cea1788d63", "domain": ".tbank.ru", "path": "/", "expires": 1778405999.640488, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "x-ssoId", "value": "", "domain": "www.tbank.ru", "path": "/", "expires": -1, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "dco.id", "value": "fe913cd8-7bbb-4a4d-b756-00003b519cd4", "domain": ".tbank.ru", "path": "/", "expires": 1778405998.533392, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "stDeIdU", "value": "357e0453744ecb9f0872a3cea1788d63", "domain": ".tbank.ru", "path": "/", "expires": 1781428634.934439, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "userType", "value": "Visitor", "domain": ".tbank.ru", "path": "/", "expires": 1781429998.908664, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "dsp_click_id", "value": "no%20dsp_click_id", "domain": ".tbank.ru", "path": "/", "expires": 1752053998, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "pageLanding", "value": "https%3A%2F%2Fwww.tbank.ru%2Fauth%2Flogin%2F", "domain": ".tbank.ru", "path": "/", "expires": -1, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "__P__wuid_visit_id", "value": "v1%3A0000001%3A1746868634956%3A357e0453744ecb9f0872a3cea1788d63", "domain": ".tbank.ru", "path": "/", "expires": 1781429998.928833, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "__P__wuid_visit_persistence", "value": "1746868634956", "domain": ".tbank.ru", "path": "/", "expires": 1746871798, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "vIdUid", "value": "6a491558-3424-4acb-9d5d-5f360c313cf2", "domain": ".tbank.ru", "path": "/", "expires": 1781428635.032442, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "stSeStTi", "value": "1746868635032", "domain": ".tbank.ru", "path": "/", "expires": 1781428635.03296, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "mediaInfo", "value": "{%22width%22:1280%2C%22height%22:720%2C%22isTouch%22:false%2C%22displayMode%22:%22browser%22%2C%22retina%22:false}", "domain": "www.tbank.ru", "path": "/", "expires": -1, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "__P__wuid_last_update_time", "value": "1746868634956", "domain": ".tbank.ru", "path": "/", "expires": 1781428635.036991, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "api_prefix_594f33", "value": "w6LDIW5eCSOwIQXEugwFv_lBadPeFnVrvr_wdYP8Qdk.1746868635", "domain": "www.tbank.ru", "path": "/", "expires": 1746870435.120456, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "api_prefix_6d17aa", "value": "8wGZVFr_2tViPADH5DIXNnWwJj_MFzi1iRo7FtvpA80.1746868635", "domain": "www.tbank.ru", "path": "/", "expires": 1746870435.58469, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "last_getuaid", "value": "1746868635", "domain": "id.tinkoff.ru", "path": "/", "expires": 1778404635.96212, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "sso_cookies_migrated", "value": "true", "domain": "id.tbank.ru", "path": "/", "expires": 1762420636.014557, "httpOnly": true, "secure": true, "sameSite": "Lax"}, {"name": "last_setuaid", "value": "1746868636", "domain": "id.tbank.ru", "path": "/", "expires": 1778404636.014685, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "sso_uaid", "value": "uaid.ILmm0h260gW89SLgwF8YBTmBI1huv6meZ2VGmaNZSkgbBFWth2Nl3Vsowa30DDm6", "domain": "id.tbank.ru", "path": "/", "expires": 1762421999.640528, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "api_prefix_e508ad", "value": "-gn0quC8c9HqnibECdoX9qLjS_PMTl3xB-Er9hpYpvc.1746869223", "domain": "www.tbank.ru", "path": "/", "expires": 1746871023.753302, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "api_prefix_c04771", "value": "y1D5N7cu9XjVqlpv-62VqPWwVUANWEgx7g_37ILk4KY.1746869224", "domain": "www.tbank.ru", "path": "/", "expires": 1746871024.115589, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "psid", "value": "I0UerouudQw4Q6Zo6RLt5FWos9sAOETt.auth-entity-mgmt-5ffc8797c6-g5xsv", "domain": "www.tbank.ru", "path": "/", "expires": 1746870490, "httpOnly": false, "secure": true, "sameSite": "None"}, {"name": "api_prefix_996320", "value": "G1qeydXpdOBqumqfERB2UMJqIy2e88nHQALMWJKMEFY.1746869831", "domain": "www.tbank.ru", "path": "/", "expires": 1746871630.998858, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "api_prefix_ba8a0d", "value": "2QXqGla7a_8wbOqCU9zvR7Ab1YdGAIoT3BN2Ln9pNes.1746869831", "domain": "www.tbank.ru", "path": "/", "expires": 1746871631.602552, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "_t_modern", "value": "true", "domain": "www.tbank.ru", "path": "/", "expires": -1, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "api_prefix_a8e066", "value": "KNAo7FK9ZijwufO-btbU90ItN5G7ZRQ7cMbAEsFNFJM.1746869999", "domain": "www.tbank.ru", "path": "/", "expires": 1746871799.067144, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "api_prefix_ecc1af", "value": "JNnt0-Es4RXiK2r-pBtJoPhT6kLH_KTlUFI0O80y9Cs.1746869999", "domain": "www.tbank.ru", "path": "/", "expires": 1746871799.561736, "httpOnly": true, "secure": true, "sameSite": "None"}, {"name": "tid_cid_timestamp", "value": "wf6u8TpJ4E80:1746870020464", "domain": "id.tbank.ru", "path": "/", "expires": 1781430020, "httpOnly": false, "secure": false, "sameSite": "Lax"}, {"name": "stLaEvTi", "value": "1746870024328", "domain": ".tbank.ru", "path": "/", "expires": 1781430024.328793, "httpOnly": false, "secure": true, "sameSite": "None"}], "origins": [{"origin": "https://www.tbank.ru", "localStorage": [{"name": "twt_wuid_visit_storage", "value": "{\"visitId\":\"v1:0000001:1746868634956:357e0453744ecb9f0872a3cea1788d63\",\"items\":{\"pageLanding\":\"https://www.tbank.ru/auth/login/\"}}"}, {"name": "dco_general_ids", "value": ""}]}]}
@@ -1,4 +1,3 @@
1
- import logging
2
1
  import re
3
2
  from asyncio import run, sleep
4
3
  from enum import StrEnum
@@ -6,7 +5,7 @@ from os.path import dirname
6
5
  from typing import Literal
7
6
 
8
7
  from aiogram.types import BufferedInputFile
9
- from playwright.async_api import async_playwright, Page, FloatRect, Locator
8
+ from playwright.async_api import async_playwright, Page
10
9
  from pyotp import TOTP
11
10
  from pyrogram import filters
12
11
  from pyrogram.handlers import MessageHandler
@@ -15,8 +14,8 @@ from playwright._impl._errors import TimeoutError
15
14
  from xync_schema.enums import UserStatus
16
15
  from xync_schema.models import User, PmAgent
17
16
 
18
- from xync_client.pyro import PyroClient
19
- from xync_client.loader import bot, dp
17
+ from xync_client.TgWallet.pyro import PyroClient
18
+ from xync_client.loader import bot
20
19
 
21
20
 
22
21
  class ExtraCaptchaException(Exception): ...
@@ -58,8 +57,7 @@ async def report(uid: int, byts: bytes, msg: str, exc: bool = True):
58
57
 
59
58
  class Client:
60
59
  agent: PmAgent
61
- bbot: PyroClient
62
- ubot: PyroClient
60
+ pbot: PyroClient
63
61
  page: Page
64
62
  gpage: Page
65
63
 
@@ -72,10 +70,10 @@ class Client:
72
70
  async def start(self, headed: bool = False):
73
71
  self.agent = await PmAgent.get(user_id=self.uid, user__status__gt=0, pm__norm="volet").prefetch_related("user")
74
72
 
75
- self.ubot, self.bbot = PyroClient(self.agent.user), PyroClient(bot)
76
- await self.ubot.app.start(), await self.bbot.app.start()
73
+ self.pbot = PyroClient(self.agent)
74
+ await self.pbot.app.start()
77
75
  self.msg_listener = MessageHandler(self.got_msg, filters.chat(["ProtectimusBot"]))
78
- self.ubot.app.add_handler(self.msg_listener)
76
+ self.pbot.app.add_handler(self.msg_listener)
79
77
 
80
78
  playwright = await async_playwright().start()
81
79
  browser = await playwright.chromium.launch(
@@ -115,7 +113,7 @@ class Client:
115
113
  await self.page.click("input#checkOtpButton")
116
114
  await self.page.wait_for_url(Pages.HOME)
117
115
 
118
- async def wait_for_code(self, typ: Literal["login", "send", "cap_xy"], past: int = 0, timeout: int = 5) -> str:
116
+ async def wait_for_code(self, typ: Literal["login", "send"], past: int = 0, timeout: int = 5) -> str:
119
117
  while past < timeout:
120
118
  if code := self.msgs.pop(f"otp_{typ}", None):
121
119
  return code
@@ -126,7 +124,7 @@ class Client:
126
124
  async def got_msg(self, _, msg: Message):
127
125
  if "Your OTP code:" in msg.text:
128
126
  self.msgs["otp_login"] = msg.text[-6:]
129
- elif "Confirmation code:" in msg.text:
127
+ if "Confirmation code:" in msg.text:
130
128
  self.msgs["otp_send"] = msg.text[-6:]
131
129
  elif "Status: Completed. Sender:" in msg.text:
132
130
  self.msgs["got_payment"] = parse_transaction_info(msg.text)
@@ -139,7 +137,7 @@ class Client:
139
137
  await self.page.fill("#srcAmount", str(amount))
140
138
  await self.page.fill("#destWalletId", dest)
141
139
  await self.page.wait_for_timeout(300)
142
- await self.page.locator("form#mainForm input[type=submit]", has_text="continue").click()
140
+ await self.page.locator("input[type=submit]", has_text="continue").click()
143
141
  if otp := self.agent.auth.get("otp"):
144
142
  totp = TOTP(otp)
145
143
  code = totp.now()
@@ -159,16 +157,23 @@ class Client:
159
157
 
160
158
  async def gmail_page(self):
161
159
  gp = await self.page.context.new_page()
162
- await gp.goto(Pages.GMH, timeout=30000)
160
+ await gp.goto(Pages.GMH, timeout=20000)
163
161
  if not gp.url.startswith(Pages.GMH):
164
- if await ( # ваще с 0 заходим
162
+ # ваще с 0 заходим
163
+ if await (
165
164
  sgn_btn := gp.locator(
166
165
  'header a[href^="https://accounts.google.com/AccountChooser/signinchooser"]:visible',
167
- has_text="sign",
166
+ has_text="sign in",
168
167
  )
169
168
  ).count():
170
169
  await sgn_btn.click()
171
- if gp.url.startswith("https://accounts.google.com/v3/signin/accountchooser"): # если надо выбрать акк
170
+ # если надо выбрать акк
171
+ lang = await gp.get_attribute("html", "lang")
172
+ sgn = {
173
+ "ru": "Выберите аккаунт",
174
+ "en": "Choose an account",
175
+ }
176
+ if await gp.locator("h1#headingText", has_text=sgn[lang]).count():
172
177
  await gp.locator("li").first.click()
173
178
  # если предлагает залогиниться
174
179
  elif await gp.locator("h1#headingText", has_text="Sign In").count():
@@ -176,7 +181,8 @@ class Client:
176
181
  await gp.locator("button", has_text="Next").click()
177
182
  # осталось ввести пороль:
178
183
  await gp.fill("input[type=password]", self.agent.user.gmail_auth["password"])
179
- await gp.locator("#passwordNext").click()
184
+ nxt = {"ru": "Далее", "en": "Next"}
185
+ await gp.locator("button", has_text=nxt[lang]).click()
180
186
  await report(self.uid, await gp.screenshot(), "Аппрувни гмейл, у тебя 1.5 минуты", False)
181
187
  await gp.wait_for_url(lambda u: u.startswith(Pages.GMH), timeout=90 * 1000) # убеждаемся что мы в почте
182
188
  self.gpage = gp
@@ -206,32 +212,13 @@ class Client:
206
212
  except Exception as e:
207
213
  await report(self.uid, await self.page.screenshot(), repr(e))
208
214
 
209
- async def send_cap_help(self, xcap: Locator):
210
- bb = await xcap.bounding_box(timeout=2000)
211
- byts = await self.page.screenshot(clip=bb)
212
- infile = BufferedInputFile(byts, "cap_xy.png")
213
- await self.bbot.send_img("put x, y", byts)
214
- self.bbot.app.storage.user_id()
215
- await bot.send_photo(uid, infile, caption=msg)
216
- await report(self.uid, byts, "x, y", False)
217
- dp.message.register(self.got_cap_xy)
218
-
219
- async def got_cap_xy(self, _, msg):
220
- self.msgs["typ_cap_xy"] = msg.text.split(",")
221
-
222
215
  async def captcha_click(self):
223
216
  captcha_url = self.page.url
224
217
  cbx = self.page.frame_locator("#main-iframe").frame_locator("iframe").first.locator("div#checkbox")
225
218
  await cbx.wait_for(state="visible"), await self.page.wait_for_timeout(500)
226
219
  await cbx.click(delay=94)
227
- xcap = self.page.frame_locator("#main-iframe").frame_locator("iframe").last.locator("div.challenge-view")
228
- if await xcap.count():
229
- await self.send_cap_help(xcap)
230
- x, y = await self.wait_for_code("cap_xy", timeout=59)
231
-
232
220
  try:
233
221
  await self.page.wait_for_url(lambda url: url != captcha_url)
234
-
235
222
  except TimeoutError: # if page no changed -> captcha is undone
236
223
  await self.page.screenshot(path=dirname(__file__) + "/xtr_captcha.png")
237
224
  raise ExtraCaptchaException(self.page.url)
@@ -249,22 +236,20 @@ class Client:
249
236
  # closing
250
237
  await self.page.context.close()
251
238
  await self.page.context.browser.close()
252
- self.ubot.app.remove_handler(self.msg_listener)
253
- await self.ubot.app.stop(), await self.bbot.app.stop()
239
+ self.pbot.app.remove_handler(self.msg_listener)
240
+ await self.pbot.app.stop()
254
241
 
255
242
 
256
- async def _test():
243
+ async def _test(uid: int, dest: str, amount):
257
244
  from x_model import init_db
258
245
  from xync_client.loader import PG_DSN
259
246
  from xync_schema import models
260
247
 
261
248
  _ = await init_db(PG_DSN, models, True)
262
- logging.basicConfig(level=logging.DEBUG)
263
- uid = 193017646
264
249
  va = Client(uid)
265
250
  try:
266
251
  await va.start(True)
267
- await va.send("alena.artemeva25@gmail.com", 8.3456)
252
+ await va.send(dest, amount)
268
253
  await va.wait_for_payments()
269
254
  except TimeoutError as te:
270
255
  await report(uid, await va.page.screenshot(), repr(te))
@@ -272,4 +257,4 @@ async def _test():
272
257
 
273
258
 
274
259
  if __name__ == "__main__":
275
- run(_test())
260
+ run(_test(7807393311, "alena.artemeva25@gmail.com", 8.3456))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.43.dev35
3
+ Version: 0.0.43.dev41
4
4
  Author-email: Mike Artemiev <mixartemev@gmail.com>
5
5
  Project-URL: Homepage, https://gitlab.com/XyncNet/client
6
6
  Project-URL: Repository, https://gitlab.com/XyncNet/client
@@ -19,9 +19,7 @@ tests/_todo_refact/Wallet/test_agent.py
19
19
  tests/_todo_refact/Wallet/test_ex.py
20
20
  xync_client/__init__.py
21
21
  xync_client/loader.py
22
- xync_client/pg_storage.py
23
22
  xync_client/pm_unifier.py
24
- xync_client/pyro.py
25
23
  xync_client.egg-info/PKG-INFO
26
24
  xync_client.egg-info/SOURCES.txt
27
25
  xync_client.egg-info/dependency_links.txt
@@ -89,9 +87,11 @@ xync_client/Mexc/etype/pm.py
89
87
  xync_client/Okx/ex.py
90
88
  xync_client/Okx/etype/ad.py
91
89
  xync_client/Okx/etype/pm.py
90
+ xync_client/Pms/Alfa/__init__.py
91
+ xync_client/Pms/Alfa/state.json
92
+ xync_client/Pms/Sber/__init__.py
92
93
  xync_client/Pms/Tinkoff/__init__.py
93
94
  xync_client/Pms/Tinkoff/state.json
94
- xync_client/Pms/Tinkoff/storage.json
95
95
  xync_client/Pms/Volet/__init__.py
96
96
  xync_client/Pms/Volet/api.py
97
97
  xync_client/Pms/Volet/_todo_req/req.mjs