unrealon 2.0.9__py3-none-any.whl → 2.0.11__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unrealon
3
- Version: 2.0.9
3
+ Version: 2.0.11
4
4
  Summary: Enterprise-grade web scraping platform with AI-powered automation and real-time orchestration capabilities
5
5
  Author-email: UnrealOn Team <team@unrealon.com>
6
6
  License: MIT
@@ -18,17 +18,17 @@ unrealon_browser/dto/models/statistics.py,sha256=aIzJNV5r23VBxjhEoja4tXwI1Z7_UCw
18
18
  unrealon_browser/managers/__init__.py,sha256=lpa93ggEN93ucoi4FqnCG_sn-_aRlP1As7DBRogDSsQ,591
19
19
  unrealon_browser/managers/captcha.py,sha256=KGBO7sfq9XusAlcPByUFdIg-v6rlruzS2oHx-Zx28wo,21453
20
20
  unrealon_browser/managers/cookies.py,sha256=r4VVnKLXH82vhU7qgtY-dF7KPf0Ie3QxGD3FEi6geFA,15085
21
- unrealon_browser/managers/logger_bridge.py,sha256=I3KNUmxSV9xL1JHpc6WOVCzn_kLlOxJzfZy76rsxr48,10912
21
+ unrealon_browser/managers/logger_bridge.py,sha256=b6H9aq6AGv0s_g5bTH6ZFYoFINClsUejevlef3s1srw,10864
22
22
  unrealon_browser/managers/page_wait_manager.py,sha256=UyZqiSfkjzahrxp9x1odXFIT_sFhZGvdECxWuIMCVBY,7876
23
23
  unrealon_browser/managers/profile.py,sha256=HjddlSeUry_65WPtF8CMkT7cfJ6X3Jap9kJaaZpwtAA,18956
24
- unrealon_browser/managers/script_manager.py,sha256=z2TxYKlhXIsXNz6bCStLF7cxthBOZEESkhoFI1TCu_Y,11453
24
+ unrealon_browser/managers/script_manager.py,sha256=hVnEWDb2LM1rfnptFo1MtE0SGcYCoFA66udykmb5e1g,11581
25
25
  unrealon_browser/stealth/__init__.py,sha256=zUfkPPafYlPANLVQIy-Se11R_UjcJakUb3krCxxUK5Q,842
26
- unrealon_browser/stealth/bypass_techniques.pyc,sha256=Tys_I4tnJmL9aQLB1k1mL-4OtzedhpYTmW4XPEIb3cI,25790
27
- unrealon_browser/stealth/manager.pyc,sha256=snye2EmZWo36PRy-dG9MrB837gVhVRjt6MgawA1mAF4,21540
28
- unrealon_browser/stealth/nodriver_stealth.pyc,sha256=SnDMdeG_W2LDK_3UfrjDeolMpqxTMDNjRbId_YC_cKA,15286
29
- unrealon_browser/stealth/playwright_stealth.pyc,sha256=Y-IiRTu136R6LIstGdKbns1j-CODX3sTGVT0IGx_MF4,6529
30
- unrealon_browser/stealth/scanner_tester.pyc,sha256=ki_Lp7zBp12iWgj3LGPnXTwemwgaGG1UrWeM1IXB6Gs,21711
31
- unrealon_browser/stealth/undetected_chrome.pyc,sha256=HNp2_84zwp-JG-Y3jqQwCNldnG6P5bBnbf9dBV_pOuw,12765
26
+ unrealon_browser/stealth/bypass_techniques.py,sha256=eBOkYtWQZvw8SNGSim38VxkCsTJsx6OmjWJKR3GnSog,23582
27
+ unrealon_browser/stealth/manager.py,sha256=P3oFHKMpKrjl1Nw8JbtcLMNBtE5y0qOJgA-SdbAx1Y4,20435
28
+ unrealon_browser/stealth/nodriver_stealth.py,sha256=kYoWafDpaVBnbinLDaFNW4OstojEd54el9c1HewGIiE,14839
29
+ unrealon_browser/stealth/playwright_stealth.py,sha256=49zX2GbO7Iabh7TOoZqkip17cmVsMDjwPHCcs7EbizI,6683
30
+ unrealon_browser/stealth/scanner_tester.py,sha256=MTCKMIerOZxepfOw3tjXZo5_UOxN7JUX2jxxGFuWfig,16213
31
+ unrealon_browser/stealth/undetected_chrome.py,sha256=AjmxaygRmG2TNj2MAWHjB_-SoOCO8D0eDhLgtOu71Vw,13226
32
32
  unrealon_core/__init__.py,sha256=ZAinyQDsAS63xqnl5uqUKTna9M-xFDs6fLwy8-Hh-X0,5599
33
33
  unrealon_core/version.py,sha256=qZOlKA_Hsz7_KXsCLO_0l9Mf0u_iNTxvHZPV21DwCqs,5803
34
34
  unrealon_core/config/__init__.py,sha256=57-KZaTDya0oyfOCfZ3pU1xLLbnZPBgqwfP9VrfhcKE,395
@@ -115,7 +115,7 @@ unrealon_driver/driver/utilities/logging.py,sha256=2my2QnkAa6Hdw-TfO4oOQ94yGc-Cj
115
115
  unrealon_driver/driver/utilities/serialization.py,sha256=wTCSVrEloykiGN4K1JXbk2aqNKm7W90aWXmzhcLyAZc,2123
116
116
  unrealon_driver/managers/__init__.py,sha256=zJJsOb6Oodg7l00v4ncKUytnyeaZM887pHY8-eSuWdU,981
117
117
  unrealon_driver/managers/base.py,sha256=GkuXillg9uqqnx6RL682fmKgK-7JyqYlH6DFUgyN4F8,5445
118
- unrealon_driver/managers/browser.py,sha256=qM9-bBDSfxheQrjvPMRKDASeVEzy6T_-tH4XF2gc15w,4433
118
+ unrealon_driver/managers/browser.py,sha256=v2FjgtgzTM94Qobll9_7TGRVbxsMlVvirP_sj3u152Q,4608
119
119
  unrealon_driver/managers/cache.py,sha256=c0tPKQ5KFd_Un1U8mw3j1WPuycxg863MMWNMveVF_2I,3506
120
120
  unrealon_driver/managers/http.py,sha256=EjlpoTRuhpsgzzrEARxRlbGczzua7hnKFVq06bvCgTM,3624
121
121
  unrealon_driver/managers/logger.py,sha256=PL3rA9ZQl12jJU0EiPAkLwJ6eDHQfIzr8-nc8bVivKQ,10526
@@ -125,9 +125,9 @@ unrealon_driver/managers/threading.py,sha256=djw5cSC99dfBKmep3IJ_8IgxQceMXtNvCp5
125
125
  unrealon_driver/managers/update.py,sha256=-hohVxGXpj5bZ6ZTQN6NH1RK9Pd6GVzCMtu3GS2SdcQ,3582
126
126
  unrealon_driver/utils/__init__.py,sha256=qxXVoQJVdLJhaLBXk_LZV_062AhrvBrMPXWAKfEc3C4,104
127
127
  unrealon_driver/utils/time.py,sha256=Oxk1eicKeZl8ZWbf7gu1Ll716k6CpXmVj67FHSnPIsA,184
128
- unrealon-2.0.9.dist-info/LICENSE,sha256=eEH8mWZW49YMpl4Sh5MtKqkZ8aVTzKQXiNPEnvL14ns,1070
129
- unrealon-2.0.9.dist-info/METADATA,sha256=xxugB_yHPD7JBa7ZfHPdMZn8wUZ_Fxx0OtWXnbc6SN4,15688
130
- unrealon-2.0.9.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
131
- unrealon-2.0.9.dist-info/entry_points.txt,sha256=k0qM-eotpajkKUq-almJmxj9afhXprZ6IkvQkSdcKhI,104
132
- unrealon-2.0.9.dist-info/top_level.txt,sha256=Gu8IeIfIVfUxdi-h-F0nKMQxo15pjhHZ0aTadXTpRE8,47
133
- unrealon-2.0.9.dist-info/RECORD,,
128
+ unrealon-2.0.11.dist-info/LICENSE,sha256=eEH8mWZW49YMpl4Sh5MtKqkZ8aVTzKQXiNPEnvL14ns,1070
129
+ unrealon-2.0.11.dist-info/METADATA,sha256=ROMoMLZznLuLhKF9pDVigTdkiaGuoJRTbIbxel3sahY,15689
130
+ unrealon-2.0.11.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
131
+ unrealon-2.0.11.dist-info/entry_points.txt,sha256=k0qM-eotpajkKUq-almJmxj9afhXprZ6IkvQkSdcKhI,104
132
+ unrealon-2.0.11.dist-info/top_level.txt,sha256=Gu8IeIfIVfUxdi-h-F0nKMQxo15pjhHZ0aTadXTpRE8,47
133
+ unrealon-2.0.11.dist-info/RECORD,,
@@ -168,17 +168,17 @@ class BrowserLoggerBridge:
168
168
  )
169
169
 
170
170
  def log_stealth_applied(self, success: bool = True) -> None:
171
- """Log stealth application - 🔥 STEALTH ALWAYS ON!"""
171
+ """Log stealth application"""
172
172
  self._browser_events["stealth_applied"] += 1
173
173
 
174
174
  if success:
175
175
  self._log_info(
176
- "Stealth measures applied: ALWAYS_ON",
176
+ "Stealth measures applied",
177
177
  stealth_success=True,
178
178
  )
179
179
  else:
180
180
  self._log_warning(
181
- "Stealth application failed: ALWAYS_ON",
181
+ "Stealth application failed",
182
182
  stealth_success=False,
183
183
  )
184
184
 
@@ -18,7 +18,8 @@ class ScriptManager:
18
18
  def __init__(self, page: Optional[Page], logger_bridge: LoggingBridge):
19
19
  self._page = page
20
20
  self.logger_bridge = logger_bridge
21
-
21
+ self.allow_logging = False
22
+
22
23
  # Statistics
23
24
  self._scripts_executed = 0
24
25
  self._scripts_successful = 0
@@ -29,7 +30,25 @@ class ScriptManager:
29
30
  def update_page(self, page: Optional[Page]):
30
31
  """Update the page reference"""
31
32
  self._page = page
32
-
33
+
34
+ def log_error(self, message: str):
35
+ """Log error"""
36
+ if not self.allow_logging:
37
+ return
38
+ self.logger_bridge.log_error(message)
39
+
40
+ def log_info(self, message: str):
41
+ """Log info"""
42
+ if not self.allow_logging:
43
+ return
44
+ self.logger_bridge.log_info(message)
45
+
46
+ def log_debug(self, message: str):
47
+ """Log debug"""
48
+ if not self.allow_logging:
49
+ return
50
+ self.logger_bridge.log_debug(message)
51
+
33
52
  async def execute_script(self, script: str, timeout: int = 30000) -> Any:
34
53
  """
35
54
  Execute JavaScript code and return result
@@ -48,8 +67,8 @@ class ScriptManager:
48
67
  self._scripts_executed += 1
49
68
 
50
69
  try:
51
- self.logger_bridge.log_info(f"🔧 Executing JavaScript (timeout: {timeout}ms)")
52
- self.logger_bridge.log_debug(f"Script preview: {script[:100]}...")
70
+ self.log_info(f"🔧 Executing JavaScript (timeout: {timeout}ms)")
71
+ self.log_debug(f"Script preview: {script[:100]}...")
53
72
 
54
73
  # Execute script with timeout
55
74
  result = await asyncio.wait_for(
@@ -70,8 +89,8 @@ class ScriptManager:
70
89
  }
71
90
  self._execution_history.append(execution_record)
72
91
 
73
- self.logger_bridge.log_info(f"✅ Script executed successfully ({duration_ms:.1f}ms)")
74
- self.logger_bridge.log_debug(f"Result type: {type(result).__name__}")
92
+ self.log_info(f"✅ Script executed successfully ({duration_ms:.1f}ms)")
93
+ self.log_debug(f"Result type: {type(result).__name__}")
75
94
 
76
95
  return result
77
96
 
@@ -88,7 +107,7 @@ class ScriptManager:
88
107
  }
89
108
  self._execution_history.append(execution_record)
90
109
 
91
- self.logger_bridge.log_error(f"⏰ Script execution timeout ({timeout}ms)")
110
+ self.log_error(f"⏰ Script execution timeout ({timeout}ms)")
92
111
  raise
93
112
 
94
113
  except Exception as e:
@@ -104,7 +123,7 @@ class ScriptManager:
104
123
  }
105
124
  self._execution_history.append(execution_record)
106
125
 
107
- self.logger_bridge.log_error(f"❌ Script execution failed: {e}")
126
+ self.log_error(f"❌ Script execution failed: {e}")
108
127
  raise
109
128
 
110
129
  async def execute_api_call(self, api_url: str, headers: Dict[str, str], method: str = "GET", timeout: int = 30000) -> Dict[str, Any]:
@@ -145,14 +164,14 @@ class ScriptManager:
145
164
  }})()
146
165
  """
147
166
 
148
- self.logger_bridge.log_info(f"🌐 Making API call: {method} {api_url}")
167
+ self.log_info(f"🌐 Making API call: {method} {api_url}")
149
168
 
150
169
  result = await self.execute_script(script, timeout)
151
170
 
152
171
  if isinstance(result, dict) and 'error' in result:
153
- self.logger_bridge.log_error(f"❌ API call failed: {result['error']}")
172
+ self.log_error(f"❌ API call failed: {result['error']}")
154
173
  else:
155
- self.logger_bridge.log_info(f"✅ API call successful")
174
+ self.log_info(f"✅ API call successful")
156
175
 
157
176
  return result
158
177
 
@@ -198,17 +217,17 @@ class ScriptManager:
198
217
  }})()
199
218
  """
200
219
 
201
- self.logger_bridge.log_info(f"🎯 Waiting for element: {selector}")
220
+ self.log_info(f"🎯 Waiting for element: {selector}")
202
221
 
203
222
  try:
204
223
  result = await self.execute_script(script, timeout + 1000)
205
224
  if result:
206
- self.logger_bridge.log_info(f"✅ Element found: {selector}")
225
+ self.log_info(f"✅ Element found: {selector}")
207
226
  else:
208
- self.logger_bridge.log_warning(f"⏰ Element timeout: {selector}")
227
+ self.log_warning(f"⏰ Element timeout: {selector}")
209
228
  return result
210
229
  except Exception as e:
211
- self.logger_bridge.log_error(f"❌ Element wait failed: {selector} - {e}")
230
+ self.log_error(f"❌ Element wait failed: {selector} - {e}")
212
231
  return False
213
232
 
214
233
  async def inject_helper_functions(self) -> bool:
@@ -271,10 +290,10 @@ class ScriptManager:
271
290
 
272
291
  try:
273
292
  await self.execute_script(helper_script)
274
- self.logger_bridge.log_info("🔧 Helper functions injected successfully")
293
+ self.log_info("🔧 Helper functions injected successfully")
275
294
  return True
276
295
  except Exception as e:
277
- self.logger_bridge.log_error(f"❌ Failed to inject helper functions: {e}")
296
+ self.log_error(f"❌ Failed to inject helper functions: {e}")
278
297
  return False
279
298
 
280
299
  def get_statistics(self) -> Dict[str, Any]:
@@ -294,21 +313,21 @@ class ScriptManager:
294
313
  """Print script execution statistics"""
295
314
  stats = self.get_statistics()
296
315
 
297
- self.logger_bridge.log_info("\n🔧 Script Manager Statistics:")
298
- self.logger_bridge.log_info(f" Scripts executed: {stats['scripts_executed']}")
299
- self.logger_bridge.log_info(f" Successful: {stats['scripts_successful']}")
300
- self.logger_bridge.log_info(f" Failed: {stats['scripts_failed']}")
301
- self.logger_bridge.log_info(f" Success rate: {stats['success_rate']:.1f}%")
302
- self.logger_bridge.log_info(f" API calls made: {stats['api_calls_made']}")
316
+ print("\n🔧 Script Manager Statistics:")
317
+ print(f" Scripts executed: {stats['scripts_executed']}")
318
+ print(f" Successful: {stats['scripts_successful']}")
319
+ print(f" Failed: {stats['scripts_failed']}")
320
+ print(f" Success rate: {stats['success_rate']:.1f}%")
321
+ print(f" API calls made: {stats['api_calls_made']}")
303
322
 
304
323
  # Show recent executions
305
324
  if self._execution_history:
306
- self.logger_bridge.log_info(" Recent executions:")
325
+ print(" Recent executions:")
307
326
  for execution in self._execution_history[-3:]: # Show last 3
308
327
  status = "✅" if execution["success"] else "❌"
309
- self.logger_bridge.log_info(f" {status} {execution['duration_ms']:.1f}ms")
328
+ print(f" {status} {execution['duration_ms']:.1f}ms")
310
329
 
311
330
  def clear_history(self) -> None:
312
331
  """Clear execution history"""
313
332
  self._execution_history.clear()
314
- self.logger_bridge.log_info("🧹 Cleared script execution history")
333
+ self.log_info("🧹 Cleared script execution history")